diff options
927 files changed, 35955 insertions, 34593 deletions
diff --git a/Android.bp b/Android.bp index b0e0b35a1f76..30d44091b6a6 100644 --- a/Android.bp +++ b/Android.bp @@ -548,52 +548,9 @@ java_library { ], } -java_library { - name: "framework-annotation-proc", - srcs: [ - ":framework-all-sources", - "core/java/**/*.logtags", - ], - sdk_version: "core_platform", - libs: [ - "app-compat-annotations", - "ext", - "unsupportedappusage", - ], - - installable: false, - plugins: [ - "compat-changeid-annotation-processor", - ], - static_libs: [ - "framework-internal-utils", - "exoplayer2-extractor", - "android.hardware.wifi-V1.0-java-constants", - ] -} - platform_compat_config { name: "framework-platform-compat-config", - src: ":framework-annotation-proc", -} - -// A library including just UnsupportedAppUsage.java classes. -// -// Provided for target so that libraries can use it without depending on -// the whole of framework or the core platform API. -// -// Built for host so that the annotation processor can also use this annotation. -java_library { - name: "unsupportedappusage-annotation", - host_supported: true, - srcs: [ - "core/java/android/annotation/IntDef.java", - ], - static_libs: [ - "art.module.api.annotations", - ], - - sdk_version: "core_current", + src: ":framework-minus-apex", } // A temporary build target that is conditionally included on the bootclasspath if @@ -722,6 +679,7 @@ filegroup { srcs: [ "core/java/android/annotation/StringDef.java", "core/java/android/net/annotations/PolicyDirection.java", + "core/java/com/android/internal/util/HexDump.java", "core/java/com/android/internal/util/IState.java", "core/java/com/android/internal/util/State.java", "core/java/com/android/internal/util/StateMachine.java", @@ -970,7 +928,6 @@ filegroup { "core/java/android/content/pm/InstallationFileLocation.aidl", "core/java/android/content/pm/IDataLoaderStatusListener.aidl", "core/java/android/content/pm/IPackageInstallerSessionFileSystemConnector.aidl", - "core/java/android/content/pm/NamedParcelFileDescriptor.aidl", ], path: "core/java", } @@ -1294,7 +1251,22 @@ droidstubs { removed_api_file: "telephony/api/system-removed.txt", }, }, - defaults: ["framework-module-stubs-defaults-systemapi"], + // TODO: make telephony inherit the shared stubs and remove this + args: "--show-annotation android.annotation.SystemApi\\(" + + "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" + + "\\) " + + "--error UnhiddenSystemApi " + + "--hide BroadcastBehavior " + + "--hide DeprecationMismatch " + + "--hide HiddenSuperclass " + + "--hide HiddenTypedefConstant " + + "--hide HiddenTypeParameter " + + "--hide MissingPermission " + + "--hide RequiresPermission " + + "--hide SdkConstant " + + "--hide Todo " + + "--hide Typo " + + "--hide UnavailableSymbol ", filter_packages: ["android.telephony"], sdk_version: "system_current", } diff --git a/Android.mk b/Android.mk index aea0c951052f..3b307146770e 100644 --- a/Android.mk +++ b/Android.mk @@ -39,11 +39,6 @@ INTERNAL_SDK_SOURCE_DIRS := $(addprefix $(LOCAL_PATH)/,$(dirs_to_document)) $(call dist-for-goals,sdk,$(INTERNAL_PLATFORM_API_FILE)) $(call dist-for-goals,sdk,$(INTERNAL_PLATFORM_SYSTEM_API_FILE)) $(call dist-for-goals,sdk,$(INTERNAL_PLATFORM_TEST_API_FILE)) -$(call dist-for-goals,sdk,$(INTERNAL_PLATFORM_API_FILE):apistubs/android/public/api/android.txt) -$(call dist-for-goals,sdk,$(INTERNAL_PLATFORM_SYSTEM_API_FILE):apistubs/android/system/api/android.txt) -$(call dist-for-goals,sdk,$(INTERNAL_PLATFORM_TEST_API_FILE):apistubs/android/test/api/android.txt) -$(call dist-for-goals,sdk,$(INTERNAL_PLATFORM_MODULE_LIB_API_FILE):apistubs/android/module-lib/api/android.txt) -$(call dist-for-goals,sdk,$(INTERNAL_PLATFORM_SYSTEM_SERVER_API_FILE):apistubs/android/system-server/api/android.txt) # sdk.atree needs to copy the whole dir: $(OUT_DOCS)/offline-sdk to the final zip. # So keep offline-sdk-timestamp target here, and unzip offline-sdk-docs.zip to diff --git a/StubLibraries.bp b/StubLibraries.bp index 12f211df4549..ccd873352a33 100644 --- a/StubLibraries.bp +++ b/StubLibraries.bp @@ -115,6 +115,11 @@ droidstubs { baseline_file: "api/lint-baseline.txt", }, }, + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/public/api", + dest: "android.txt", + }, jdiff_enabled: true, } @@ -156,6 +161,11 @@ droidstubs { baseline_file: "api/system-lint-baseline.txt", }, }, + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/system/api", + dest: "android.txt", + }, jdiff_enabled: true, } @@ -179,6 +189,11 @@ droidstubs { baseline_file: "api/test-lint-baseline.txt", }, }, + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/test/api", + dest: "android.txt", + }, } ///////////////////////////////////////////////////////////////////// @@ -214,6 +229,11 @@ droidstubs { baseline_file: "api/module-lib-lint-baseline.txt", }, }, + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/module-lib/api", + dest: "android.txt", + }, } diff --git a/aidl_api/libincremental_aidl/current/android/os/incremental/IncrementalFileSystemControlParcel.aidl b/aidl_api/libincremental_aidl/current/android/os/incremental/IncrementalFileSystemControlParcel.aidl new file mode 100644 index 000000000000..d777e34d1240 --- /dev/null +++ b/aidl_api/libincremental_aidl/current/android/os/incremental/IncrementalFileSystemControlParcel.aidl @@ -0,0 +1,24 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL interface (or parcelable). Do not try to +// edit this file. It looks like you are doing that because you have modified +// an AIDL interface in a backward-incompatible way, e.g., deleting a function +// from an interface or a field from a parcelable and it broke the build. That +// breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.os.incremental; +/* @hide */ +parcelable IncrementalFileSystemControlParcel { + ParcelFileDescriptor cmd; + ParcelFileDescriptor pendingReads; + ParcelFileDescriptor log; +} diff --git a/aidl_api/libincremental_manager_aidl/current/android/os/incremental/IIncrementalService.aidl b/aidl_api/libincremental_manager_aidl/current/android/os/incremental/IIncrementalService.aidl new file mode 100644 index 000000000000..5e1f013d627a --- /dev/null +++ b/aidl_api/libincremental_manager_aidl/current/android/os/incremental/IIncrementalService.aidl @@ -0,0 +1,44 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL interface (or parcelable). Do not try to +// edit this file. It looks like you are doing that because you have modified +// an AIDL interface in a backward-incompatible way, e.g., deleting a function +// from an interface or a field from a parcelable and it broke the build. That +// breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.os.incremental; +/* @hide */ +interface IIncrementalService { + int openStorage(in @utf8InCpp String path); + int createStorage(in @utf8InCpp String path, in android.content.pm.DataLoaderParamsParcel params, in android.content.pm.IDataLoaderStatusListener listener, int createMode); + int createLinkedStorage(in @utf8InCpp String path, int otherStorageId, int createMode); + int makeBindMount(int storageId, in @utf8InCpp String sourcePath, in @utf8InCpp String targetFullPath, int bindType); + int deleteBindMount(int storageId, in @utf8InCpp String targetFullPath); + int makeDirectory(int storageId, in @utf8InCpp String path); + int makeDirectories(int storageId, in @utf8InCpp String path); + int makeFile(int storageId, in @utf8InCpp String path, in android.os.incremental.IncrementalNewFileParams params); + int makeFileFromRange(int storageId, in @utf8InCpp String targetPath, in @utf8InCpp String sourcePath, long start, long end); + int makeLink(int sourceStorageId, in @utf8InCpp String sourcePath, int destStorageId, in @utf8InCpp String destPath); + int unlink(int storageId, in @utf8InCpp String path); + boolean isFileRangeLoaded(int storageId, in @utf8InCpp String path, long start, long end); + byte[] getMetadataByPath(int storageId, in @utf8InCpp String path); + byte[] getMetadataById(int storageId, in byte[] fileId); + boolean startLoading(int storageId); + void deleteStorage(int storageId); + boolean configureNativeBinaries(int storageId, in @utf8InCpp String apkFullPath, in @utf8InCpp String libDirRelativePath, in @utf8InCpp String abi); + const int CREATE_MODE_TEMPORARY_BIND = 1; + const int CREATE_MODE_PERMANENT_BIND = 2; + const int CREATE_MODE_CREATE = 4; + const int CREATE_MODE_OPEN_EXISTING = 8; + const int BIND_TEMPORARY = 0; + const int BIND_PERMANENT = 1; +} diff --git a/aidl_api/libincremental_manager_aidl/current/android/os/incremental/IncrementalNewFileParams.aidl b/aidl_api/libincremental_manager_aidl/current/android/os/incremental/IncrementalNewFileParams.aidl new file mode 100644 index 000000000000..c73787721113 --- /dev/null +++ b/aidl_api/libincremental_manager_aidl/current/android/os/incremental/IncrementalNewFileParams.aidl @@ -0,0 +1,25 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL interface (or parcelable). Do not try to +// edit this file. It looks like you are doing that because you have modified +// an AIDL interface in a backward-incompatible way, e.g., deleting a function +// from an interface or a field from a parcelable and it broke the build. That +// breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.os.incremental; +/* @hide */ +parcelable IncrementalNewFileParams { + long size; + byte[] fileId; + byte[] metadata; + @nullable byte[] signature; +} diff --git a/apex/Android.bp b/apex/Android.bp index e8f6e6bf2c46..5f418d47f090 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -26,6 +26,20 @@ mainline_stubs_args = "--hide Typo " + "--hide UnavailableSymbol " +// TODO: modularize this so not every module has the same whitelist +framework_packages_to_document = [ + "android", + "dalvik", + "java", + "javax", + "junit", + "org.apache.http", + "org.json", + "org.w3c.dom", + "org.xml.sax", + "org.xmlpull", +] + // TODO: remove the hiding when server classes are cleaned up. mainline_framework_stubs_args = mainline_stubs_args + @@ -54,6 +68,7 @@ stubs_defaults { args: mainline_framework_stubs_args, installable: false, sdk_version: "current", + filter_packages: framework_packages_to_document, check_api: { current: { api_file: "api/current.txt", @@ -72,6 +87,7 @@ stubs_defaults { libs: ["framework-annotations-lib"], installable: false, sdk_version: "system_current", + filter_packages: framework_packages_to_document, check_api: { current: { api_file: "api/system-current.txt", @@ -88,18 +104,30 @@ java_defaults { name: "framework-module-stubs-lib-defaults-publicapi", installable: false, sdk_version: "module_current", + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/public", + }, } java_defaults { name: "framework-module-stubs-lib-defaults-systemapi", installable: false, sdk_version: "module_current", + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/system", + }, } java_defaults { name: "framework-module-stubs-lib-defaults-module_libs_api", installable: false, sdk_version: "module_current", + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/module-lib", + }, } // The defaults for module_libs comes in two parts - defaults for API checks @@ -113,6 +141,7 @@ stubs_defaults { libs: ["framework-annotations-lib"], installable: false, sdk_version: "module_current", + filter_packages: framework_packages_to_document, check_api: { current: { api_file: "api/module-lib-current.txt", @@ -131,12 +160,14 @@ stubs_defaults { libs: ["framework-annotations-lib"], installable: false, sdk_version: "module_current", + filter_packages: framework_packages_to_document, } stubs_defaults { name: "service-module-stubs-srcs-defaults", args: mainline_service_stubs_args, installable: false, + filter_packages: ["com.android."], check_api: { current: { api_file: "api/current.txt", @@ -153,4 +184,8 @@ stubs_defaults { // module java_library system_server stub libs. java_defaults { name: "service-module-stubs-defaults", + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/system-server", + }, } diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java index 6c48511a12cc..e472d052f32f 100644 --- a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java +++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java @@ -1353,8 +1353,15 @@ public class BlobStoreManagerService extends SystemService { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, "Caller is not allowed to call this; caller=" + Binder.getCallingUid()); - mHandler.post(PooledLambda.obtainRunnable(remoteCallback::sendResult, null) - .recycleOnUse()); + // We post messages back and forth between mHandler thread and mBackgroundHandler + // thread while committing a blob. We need to replicate the same pattern here to + // ensure pending messages have been handled. + mHandler.post(() -> { + mBackgroundHandler.post(() -> { + mHandler.post(PooledLambda.obtainRunnable(remoteCallback::sendResult, null) + .recycleOnUse()); + }); + }); } @Override diff --git a/apex/media/framework/api/current.txt b/apex/media/framework/api/current.txt index 839fb5143196..0cc8e52f6411 100644 --- a/apex/media/framework/api/current.txt +++ b/apex/media/framework/api/current.txt @@ -29,7 +29,7 @@ package android.media { method public boolean advance(@NonNull android.media.MediaParser.SeekableInputReader) throws java.io.IOException; method @NonNull public static android.media.MediaParser create(@NonNull android.media.MediaParser.OutputConsumer, @NonNull java.lang.String...); method @NonNull public static android.media.MediaParser createByName(@NonNull String, @NonNull android.media.MediaParser.OutputConsumer); - method @Nullable public String getParserName(); + method @NonNull public String getParserName(); method @NonNull public static java.util.List<java.lang.String> getParserNames(@NonNull android.media.MediaFormat); method public void release(); method public void seek(@NonNull android.media.MediaParser.SeekPoint); @@ -65,7 +65,13 @@ package android.media { field public static final String PARSER_NAME_OGG = "android.media.mediaparser.OggParser"; field public static final String PARSER_NAME_PS = "android.media.mediaparser.PsParser"; field public static final String PARSER_NAME_TS = "android.media.mediaparser.TsParser"; + field public static final String PARSER_NAME_UNKNOWN = "android.media.mediaparser.UNKNOWN"; field public static final String PARSER_NAME_WAV = "android.media.mediaparser.WavParser"; + field public static final int SAMPLE_FLAG_DECODE_ONLY = -2147483648; // 0x80000000 + field public static final int SAMPLE_FLAG_ENCRYPTED = 1073741824; // 0x40000000 + field public static final int SAMPLE_FLAG_HAS_SUPPLEMENTAL_DATA = 268435456; // 0x10000000 + field public static final int SAMPLE_FLAG_KEY_FRAME = 1; // 0x1 + field public static final int SAMPLE_FLAG_LAST_SAMPLE = 536870912; // 0x20000000 } public static interface MediaParser.InputReader { diff --git a/apex/media/framework/java/android/media/MediaParser.java b/apex/media/framework/java/android/media/MediaParser.java index 5f86ed621084..edf25ae36ec9 100644 --- a/apex/media/framework/java/android/media/MediaParser.java +++ b/apex/media/framework/java/android/media/MediaParser.java @@ -16,9 +16,11 @@ package android.media; import android.annotation.CheckResult; +import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.StringDef; +import android.media.MediaCodec.CryptoInfo; import android.net.Uri; import android.text.TextUtils; import android.util.Pair; @@ -45,6 +47,7 @@ import com.google.android.exoplayer2.extractor.ogg.OggExtractor; import com.google.android.exoplayer2.extractor.ts.Ac3Extractor; import com.google.android.exoplayer2.extractor.ts.Ac4Extractor; import com.google.android.exoplayer2.extractor.ts.AdtsExtractor; +import com.google.android.exoplayer2.extractor.ts.DefaultTsPayloadReaderFactory; import com.google.android.exoplayer2.extractor.ts.PsExtractor; import com.google.android.exoplayer2.extractor.ts.TsExtractor; import com.google.android.exoplayer2.extractor.wav.WavExtractor; @@ -385,26 +388,27 @@ public final class MediaParser { /** * Called once all the data of a sample has been passed to {@link #onSampleDataFound}. * - * <p>Also includes sample metadata, like presentation timestamp and flags. + * <p>Includes sample metadata, like presentation timestamp and flags. * * @param trackIndex The index of the track to which the sample corresponds. * @param timeMicros The media timestamp associated with the sample, in microseconds. - * @param flags Flags associated with the sample. See {@link MediaCodec - * MediaCodec.BUFFER_FLAG_*}. + * @param flags Flags associated with the sample. See the {@code SAMPLE_FLAG_*} constants. * @param size The size of the sample data, in bytes. * @param offset The number of bytes that have been consumed by {@code * onSampleDataFound(int, MediaParser.InputReader)} for the specified track, since the * last byte belonging to the sample whose metadata is being passed. - * @param cryptoData Encryption data required to decrypt the sample. May be null for - * unencrypted samples. + * @param cryptoInfo Encryption data required to decrypt the sample. May be null for + * unencrypted samples. MediaParser may reuse {@link CryptoInfo} instances to avoid + * allocations, so implementations of this method must not write to or keep reference to + * the fields of this parameter. */ void onSampleCompleted( int trackIndex, long timeMicros, - int flags, + @SampleFlags int flags, int size, int offset, - @Nullable MediaCodec.CryptoInfo cryptoData); + @Nullable CryptoInfo cryptoInfo); } /** @@ -445,6 +449,31 @@ public final class MediaParser { } } + // Sample flags. + + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef( + flag = true, + value = { + SAMPLE_FLAG_KEY_FRAME, + SAMPLE_FLAG_HAS_SUPPLEMENTAL_DATA, + SAMPLE_FLAG_LAST_SAMPLE, + SAMPLE_FLAG_ENCRYPTED, + SAMPLE_FLAG_DECODE_ONLY + }) + public @interface SampleFlags {} + /** Indicates that the sample holds a synchronization sample. */ + public static final int SAMPLE_FLAG_KEY_FRAME = MediaCodec.BUFFER_FLAG_KEY_FRAME; + /** Indicates that the sample has supplemental data. */ + public static final int SAMPLE_FLAG_HAS_SUPPLEMENTAL_DATA = 1 << 28; + /** Indicates that the sample is known to contain the last media sample of the stream. */ + public static final int SAMPLE_FLAG_LAST_SAMPLE = 1 << 29; + /** Indicates that the sample is (at least partially) encrypted. */ + public static final int SAMPLE_FLAG_ENCRYPTED = 1 << 30; + /** Indicates that the sample should be decoded but not rendered. */ + public static final int SAMPLE_FLAG_DECODE_ONLY = 1 << 31; + // Parser implementation names. /** @hide */ @@ -452,6 +481,7 @@ public final class MediaParser { @StringDef( prefix = {"PARSER_NAME_"}, value = { + PARSER_NAME_UNKNOWN, PARSER_NAME_MATROSKA, PARSER_NAME_FMP4, PARSER_NAME_MP4, @@ -469,6 +499,7 @@ public final class MediaParser { }) public @interface ParserName {} + public static final String PARSER_NAME_UNKNOWN = "android.media.mediaparser.UNKNOWN"; public static final String PARSER_NAME_MATROSKA = "android.media.mediaparser.MatroskaParser"; public static final String PARSER_NAME_FMP4 = "android.media.mediaparser.FragmentedMp4Parser"; public static final String PARSER_NAME_MP4 = "android.media.mediaparser.Mp4Parser"; @@ -644,6 +675,9 @@ public final class MediaParser { private static final Map<String, ExtractorFactory> EXTRACTOR_FACTORIES_BY_NAME; private static final Map<String, Class> EXPECTED_TYPE_BY_PARAMETER_NAME; + private static final String TS_MODE_SINGLE_PMT = "single_pmt"; + private static final String TS_MODE_MULTI_PMT = "multi_pmt"; + private static final String TS_MODE_HLS = "hls"; // Instance creation methods. @@ -817,6 +851,12 @@ public final class MediaParser { + value.getClass().getSimpleName() + " was passed."); } + if (PARAMETER_TS_MODE.equals(parameterName) + && !TS_MODE_SINGLE_PMT.equals(value) + && !TS_MODE_HLS.equals(value) + && !TS_MODE_MULTI_PMT.equals(value)) { + throw new IllegalArgumentException(PARAMETER_TS_MODE + " does not accept: " + value); + } mParserParameters.put(parameterName, value); return this; } @@ -836,14 +876,14 @@ public final class MediaParser { * Returns the name of the backing parser implementation. * * <p>If this instance was creating using {@link #createByName}, the provided name is returned. - * If this instance was created using {@link #create}, this method will return null until the - * first call to {@link #advance}, after which the name of the backing parser implementation is - * returned. + * If this instance was created using {@link #create}, this method will return {@link + * #PARSER_NAME_UNKNOWN} until the first call to {@link #advance}, after which the name of the + * backing parser implementation is returned. * * @return The name of the backing parser implementation, or null if the backing parser * implementation has not yet been selected. */ - @Nullable + @NonNull @ParserName public String getParserName() { return mExtractorName; @@ -880,13 +920,12 @@ public final class MediaParser { // TODO: Apply parameters when creating extractor instances. if (mExtractor == null) { - if (mExtractorName != null) { + if (!mExtractorName.equals(PARSER_NAME_UNKNOWN)) { mExtractor = EXTRACTOR_FACTORIES_BY_NAME.get(mExtractorName).createInstance(); mExtractor.init(new ExtractorOutputAdapter()); } else { for (String parserName : mParserNamesPool) { - Extractor extractor = - EXTRACTOR_FACTORIES_BY_NAME.get(parserName).createInstance(); + Extractor extractor = createExtractor(parserName); try { if (extractor.sniff(mExtractorInput)) { mExtractorName = parserName; @@ -974,9 +1013,7 @@ public final class MediaParser { mParserParameters = new HashMap<>(); mOutputConsumer = outputConsumer; mParserNamesPool = parserNamesPool; - if (!sniff) { - mExtractorName = parserNamesPool[0]; - } + mExtractorName = sniff ? PARSER_NAME_UNKNOWN : parserNamesPool[0]; mPositionHolder = new PositionHolder(); mDataSource = new InputReadingDataSource(); removePendingSeek(); @@ -993,6 +1030,124 @@ public final class MediaParser { mPendingSeekTimeMicros = -1; } + private Extractor createExtractor(String parserName) { + int flags = 0; + switch (parserName) { + case PARSER_NAME_MATROSKA: + flags = + getBooleanParameter(PARAMETER_MATROSKA_DISABLE_CUES_SEEKING) + ? MatroskaExtractor.FLAG_DISABLE_SEEK_FOR_CUES + : 0; + return new MatroskaExtractor(flags); + case PARSER_NAME_FMP4: + flags |= + getBooleanParameter(PARAMETER_MP4_IGNORE_EDIT_LISTS) + ? FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_EDIT_LISTS + : 0; + flags |= + getBooleanParameter(PARAMETER_MP4_IGNORE_TFDT_BOX) + ? FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_TFDT_BOX + : 0; + flags |= + getBooleanParameter(PARAMETER_MP4_TREAT_VIDEO_FRAMES_AS_KEYFRAMES) + ? FragmentedMp4Extractor + .FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME + : 0; + return new FragmentedMp4Extractor(flags); + case PARSER_NAME_MP4: + flags |= + getBooleanParameter(PARAMETER_MP4_IGNORE_EDIT_LISTS) + ? Mp4Extractor.FLAG_WORKAROUND_IGNORE_EDIT_LISTS + : 0; + return new Mp4Extractor(); + case PARSER_NAME_MP3: + flags |= + getBooleanParameter(PARAMETER_MP3_DISABLE_ID3) + ? Mp3Extractor.FLAG_DISABLE_ID3_METADATA + : 0; + flags |= + getBooleanParameter(PARAMETER_MP3_ENABLE_CBR_SEEKING) + ? Mp3Extractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING + : 0; + // TODO: Add index seeking once we update the ExoPlayer version. + return new Mp3Extractor(flags); + case PARSER_NAME_ADTS: + flags |= + getBooleanParameter(PARAMETER_ADTS_ENABLE_CBR_SEEKING) + ? AdtsExtractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING + : 0; + return new AdtsExtractor(flags); + case PARSER_NAME_AC3: + return new Ac3Extractor(); + case PARSER_NAME_TS: + flags |= + getBooleanParameter(PARAMETER_TS_ALLOW_NON_IDR_AVC_KEYFRAMES) + ? DefaultTsPayloadReaderFactory.FLAG_ALLOW_NON_IDR_KEYFRAMES + : 0; + flags |= + getBooleanParameter(PARAMETER_TS_DETECT_ACCESS_UNITS) + ? DefaultTsPayloadReaderFactory.FLAG_DETECT_ACCESS_UNITS + : 0; + flags |= + getBooleanParameter(PARAMETER_TS_ENABLE_HDMV_DTS_AUDIO_STREAMS) + ? DefaultTsPayloadReaderFactory.FLAG_ENABLE_HDMV_DTS_AUDIO_STREAMS + : 0; + flags |= + getBooleanParameter(PARAMETER_TS_IGNORE_AAC_STREAM) + ? DefaultTsPayloadReaderFactory.FLAG_IGNORE_AAC_STREAM + : 0; + flags |= + getBooleanParameter(PARAMETER_TS_IGNORE_AVC_STREAM) + ? DefaultTsPayloadReaderFactory.FLAG_IGNORE_H264_STREAM + : 0; + flags |= + getBooleanParameter(PARAMETER_TS_IGNORE_SPLICE_INFO_STREAM) + ? DefaultTsPayloadReaderFactory.FLAG_IGNORE_SPLICE_INFO_STREAM + : 0; + String tsMode = getStringParameter(PARAMETER_TS_MODE, TS_MODE_SINGLE_PMT); + int hlsMode = + TS_MODE_SINGLE_PMT.equals(tsMode) + ? TsExtractor.MODE_SINGLE_PMT + : TS_MODE_HLS.equals(tsMode) + ? TsExtractor.MODE_HLS + : TsExtractor.MODE_MULTI_PMT; + return new TsExtractor(hlsMode, flags); + case PARSER_NAME_FLV: + return new FlvExtractor(); + case PARSER_NAME_OGG: + return new OggExtractor(); + case PARSER_NAME_PS: + return new PsExtractor(); + case PARSER_NAME_WAV: + return new WavExtractor(); + case PARSER_NAME_AMR: + flags |= + getBooleanParameter(PARAMETER_AMR_ENABLE_CBR_SEEKING) + ? AmrExtractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING + : 0; + return new AmrExtractor(flags); + case PARSER_NAME_AC4: + return new Ac4Extractor(); + case PARSER_NAME_FLAC: + flags |= + getBooleanParameter(PARAMETER_FLAC_DISABLE_ID3) + ? FlacExtractor.FLAG_DISABLE_ID3_METADATA + : 0; + return new FlacExtractor(flags); + default: + // Should never happen. + throw new IllegalStateException("Unexpected attempt to create: " + parserName); + } + } + + private boolean getBooleanParameter(String name) { + return (boolean) mParserParameters.getOrDefault(name, false); + } + + private String getStringParameter(String name, String defaultValue) { + return (String) mParserParameters.getOrDefault(name, defaultValue); + } + // Private classes. private static final class InputReadingDataSource implements DataSource { @@ -1277,7 +1432,7 @@ public final class MediaParser { return null; } - private static MediaCodec.CryptoInfo toCryptoInfo(TrackOutput.CryptoData encryptionData) { + private static CryptoInfo toCryptoInfo(TrackOutput.CryptoData encryptionData) { // TODO: Implement. return null; } diff --git a/apex/permission/framework/Android.bp b/apex/permission/framework/Android.bp index 6d962008460f..793247e88614 100644 --- a/apex/permission/framework/Android.bp +++ b/apex/permission/framework/Android.bp @@ -31,6 +31,10 @@ java_library { "com.android.permission", "test_com.android.permission", ], + permitted_packages: [ + "android.permission", + "android.app.role", + ], hostdex: true, installable: true, visibility: [ @@ -84,20 +88,17 @@ droidstubs { java_library { name: "framework-permission-stubs-publicapi", srcs: [ ":framework-permission-stubs-srcs-publicapi" ], - sdk_version: "system_current", - installable: false, + defaults: ["framework-module-stubs-lib-defaults-publicapi"], } java_library { name: "framework-permission-stubs-systemapi", srcs: [ ":framework-permission-stubs-srcs-systemapi" ], - sdk_version: "system_current", - installable: false, + defaults: ["framework-module-stubs-lib-defaults-systemapi"], } java_library { name: "framework-permission-stubs-module_libs_api", srcs: [ ":framework-permission-stubs-srcs-module_libs_api" ], - sdk_version: "system_current", - installable: false, + defaults: ["framework-module-stubs-lib-defaults-module_libs_api"], } diff --git a/apex/permission/service/Android.bp b/apex/permission/service/Android.bp index 679c98ddcbb5..5cdcdd335a12 100644 --- a/apex/permission/service/Android.bp +++ b/apex/permission/service/Android.bp @@ -17,6 +17,7 @@ filegroup { srcs: [ "java/**/*.java", ], + path: "java", } java_library { diff --git a/apex/sdkextensions/framework/api/current.txt b/apex/sdkextensions/framework/api/current.txt index 9041262cd07e..d802177e249b 100644 --- a/apex/sdkextensions/framework/api/current.txt +++ b/apex/sdkextensions/framework/api/current.txt @@ -1,10 +1 @@ // Signature format: 2.0 -package android.os.ext.test { - - @Deprecated public class Test { - ctor @Deprecated public Test(); - method @Deprecated public void testE(); - } - -} - diff --git a/apex/sdkextensions/framework/api/module-lib-current.txt b/apex/sdkextensions/framework/api/module-lib-current.txt index 494c12f73b00..d802177e249b 100644 --- a/apex/sdkextensions/framework/api/module-lib-current.txt +++ b/apex/sdkextensions/framework/api/module-lib-current.txt @@ -1,9 +1 @@ // Signature format: 2.0 -package android.os.ext.test { - - @Deprecated public class Test { - method @Deprecated public void testD(); - } - -} - diff --git a/apex/sdkextensions/framework/api/system-current.txt b/apex/sdkextensions/framework/api/system-current.txt index 056eb416473f..bbff4c5ae6f4 100644 --- a/apex/sdkextensions/framework/api/system-current.txt +++ b/apex/sdkextensions/framework/api/system-current.txt @@ -7,12 +7,3 @@ package android.os.ext { } -package android.os.ext.test { - - @Deprecated public class Test { - method @Deprecated public void testF(); - method @Deprecated public void testG(); - } - -} - diff --git a/apex/statsd/framework/Android.bp b/apex/statsd/framework/Android.bp index 8185bb036b22..7480ec834596 100644 --- a/apex/statsd/framework/Android.bp +++ b/apex/statsd/framework/Android.bp @@ -46,19 +46,11 @@ filegroup { "//frameworks/base/apex/statsd:__subpackages__", ], } - -java_defaults { - name: "framework-statsd-defaults", - sdk_version: "module_current", - libs: [ "framework-annotations-lib" ], -} - java_library { name: "framework-statsd", - defaults: [ - "framework-statsd-defaults", - ], installable: true, + sdk_version: "module_current", + libs: [ "framework-annotations-lib" ], srcs: [ ":framework-statsd-sources", @@ -97,7 +89,7 @@ stubs_defaults { droidstubs { name: "framework-statsd-stubs-srcs-publicapi", defaults: [ - "framework-module-stubs-defaults-systemapi", + "framework-module-stubs-defaults-publicapi", "framework-statsd-stubs-srcs-defaults", ], } @@ -129,39 +121,33 @@ droidstubs { java_library { name: "framework-statsd-stubs-publicapi", - defaults: [ - "framework-statsd-defaults", - ], + defaults: ["framework-module-stubs-lib-defaults-publicapi"], srcs: [ ":framework-statsd-stubs-srcs-publicapi" ], visibility: [ "//frameworks/base", // Framework "//frameworks/base/apex/statsd", // statsd apex - ] + ], } java_library { name: "framework-statsd-stubs-systemapi", - defaults: [ - "framework-statsd-defaults", - ], + defaults: ["framework-module-stubs-lib-defaults-systemapi"], srcs: [ ":framework-statsd-stubs-srcs-systemapi" ], visibility: [ "//frameworks/base", // Framework "//frameworks/base/apex/statsd", // statsd apex - ] + ], } java_library { name: "framework-statsd-stubs-module_libs_api", - defaults: [ - "framework-statsd-defaults", - ], + defaults: ["framework-module-stubs-lib-defaults-module_libs_api"], srcs: [ ":framework-statsd-stubs-srcs-module_libs_api" ], visibility: [ "//frameworks/base", // Framework "//frameworks/base/apex/statsd", // statsd apex "//frameworks/opt/net/wifi/service" // wifi service - ] + ], } android_test { diff --git a/apex/statsd/framework/api/current.txt b/apex/statsd/framework/api/current.txt index d802177e249b..a65569347e7d 100644 --- a/apex/statsd/framework/api/current.txt +++ b/apex/statsd/framework/api/current.txt @@ -1 +1,12 @@ // Signature format: 2.0 +package android.util { + + public final class StatsLog { + method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public static boolean logBinaryPushStateChanged(@NonNull String, long, int, int, @NonNull long[]); + method public static boolean logEvent(int); + method public static boolean logStart(int); + method public static boolean logStop(int); + } + +} + diff --git a/apex/statsd/framework/java/android/app/StatsManager.java b/apex/statsd/framework/java/android/app/StatsManager.java index f021dcf3cd2f..62badb41faa8 100644 --- a/apex/statsd/framework/java/android/app/StatsManager.java +++ b/apex/statsd/framework/java/android/app/StatsManager.java @@ -616,7 +616,7 @@ public final class StatsManager { /** * Set the cool down time of the pull in milliseconds. If two successive pulls are * issued within the cool down, a cached version of the first pull will be used for the - * second pull. + * second pull. The minimum allowed cool down is 1 second. */ @NonNull public Builder setCoolDownMillis(long coolDownMillis) { @@ -625,7 +625,8 @@ public final class StatsManager { } /** - * Set the maximum time the pull can take in milliseconds. + * Set the maximum time the pull can take in milliseconds. The maximum allowed timeout + * is 10 seconds. */ @NonNull public Builder setTimeoutMillis(long timeoutMillis) { diff --git a/apex/statsd/tests/libstatspull/src/com/android/internal/os/statsd/libstats/LibStatsPullTests.java b/apex/statsd/tests/libstatspull/src/com/android/internal/os/statsd/libstats/LibStatsPullTests.java index 3f199e83ceed..240222ea9411 100644 --- a/apex/statsd/tests/libstatspull/src/com/android/internal/os/statsd/libstats/LibStatsPullTests.java +++ b/apex/statsd/tests/libstatspull/src/com/android/internal/os/statsd/libstats/LibStatsPullTests.java @@ -29,6 +29,7 @@ import androidx.test.runner.AndroidJUnit4; import com.android.internal.os.StatsdConfigProto.AtomMatcher; import com.android.internal.os.StatsdConfigProto.FieldFilter; import com.android.internal.os.StatsdConfigProto.GaugeMetric; +import com.android.internal.os.StatsdConfigProto.PullAtomPackages; import com.android.internal.os.StatsdConfigProto.SimpleAtomMatcher; import com.android.internal.os.StatsdConfigProto.StatsdConfig; import com.android.internal.os.StatsdConfigProto.TimeUnit; @@ -271,6 +272,9 @@ public class LibStatsPullTests { .setSamplingType(GaugeMetric.SamplingType.FIRST_N_SAMPLES) .setMaxNumGaugeAtomsPerBucket(1000) ) + .addPullAtomPackages(PullAtomPackages.newBuilder() + .setAtomId(PULL_ATOM_TAG) + .addPackages(LibStatsPullTests.class.getPackage().getName())) .build(); statsManager.addConfig(sConfigId, config.toByteArray()); assertThat(StatsConfigUtils.verifyValidConfigExists(statsManager, sConfigId)).isTrue(); diff --git a/api/current.txt b/api/current.txt index ff74ce8b43dc..1e24d62b0064 100644 --- a/api/current.txt +++ b/api/current.txt @@ -9,7 +9,6 @@ package android { ctor public Manifest.permission(); field public static final String ACCEPT_HANDOVER = "android.permission.ACCEPT_HANDOVER"; field public static final String ACCESS_BACKGROUND_LOCATION = "android.permission.ACCESS_BACKGROUND_LOCATION"; - field public static final String ACCESS_CALL_AUDIO = "android.permission.ACCESS_CALL_AUDIO"; field public static final String ACCESS_CHECKIN_PROPERTIES = "android.permission.ACCESS_CHECKIN_PROPERTIES"; field public static final String ACCESS_COARSE_LOCATION = "android.permission.ACCESS_COARSE_LOCATION"; field public static final String ACCESS_FINE_LOCATION = "android.permission.ACCESS_FINE_LOCATION"; @@ -278,7 +277,6 @@ package android { field public static final int activityCloseExitAnimation = 16842939; // 0x10100bb field public static final int activityOpenEnterAnimation = 16842936; // 0x10100b8 field public static final int activityOpenExitAnimation = 16842937; // 0x10100b9 - field public static final int actor = 16844312; // 0x1010618 field public static final int addPrintersActivity = 16843750; // 0x10103e6 field public static final int addStatesFromChildren = 16842992; // 0x10100f0 field public static final int adjustViewBounds = 16843038; // 0x101011e @@ -328,7 +326,7 @@ package android { field public static final int autoLink = 16842928; // 0x10100b0 field public static final int autoMirrored = 16843754; // 0x10103ea field public static final int autoRemoveFromRecents = 16843847; // 0x1010447 - field public static final int autoRevokePermissions = 16844308; // 0x1010614 + field public static final int autoRevokePermissions = 16844309; // 0x1010615 field public static final int autoSizeMaxTextSize = 16844102; // 0x1010546 field public static final int autoSizeMinTextSize = 16844088; // 0x1010538 field public static final int autoSizePresetSizes = 16844087; // 0x1010537 @@ -710,7 +708,7 @@ package android { field public static final int gravity = 16842927; // 0x10100af field public static final int gridViewStyle = 16842865; // 0x1010071 field public static final int groupIndicator = 16843019; // 0x101010b - field public static final int gwpAsanMode = 16844311; // 0x1010617 + field public static final int gwpAsanMode = 16844312; // 0x1010618 field public static final int hand_hour = 16843011; // 0x1010103 field public static final int hand_minute = 16843012; // 0x1010104 field public static final int handle = 16843354; // 0x101025a @@ -955,7 +953,7 @@ package android { field public static final int mediaRouteButtonStyle = 16843693; // 0x10103ad field public static final int mediaRouteTypes = 16843694; // 0x10103ae field public static final int menuCategory = 16843230; // 0x10101de - field public static final int mimeGroup = 16844310; // 0x1010616 + field public static final int mimeGroup = 16844311; // 0x1010617 field public static final int mimeType = 16842790; // 0x1010026 field public static final int min = 16844089; // 0x1010539 field public static final int minAspectRatio = 16844187; // 0x101059b @@ -1084,7 +1082,7 @@ package android { field public static final int preferenceScreenStyle = 16842891; // 0x101008b field public static final int preferenceStyle = 16842894; // 0x101008e field public static final int presentationTheme = 16843712; // 0x10103c0 - field public static final int preserveLegacyExternalStorage = 16844309; // 0x1010615 + field public static final int preserveLegacyExternalStorage = 16844310; // 0x1010616 field public static final int previewImage = 16843482; // 0x10102da field public static final int primaryContentAlpha = 16844114; // 0x1010552 field public static final int priority = 16842780; // 0x101001c @@ -5668,8 +5666,6 @@ package android.app { public static final class Notification.BubbleMetadata implements android.os.Parcelable { method public int describeContents(); method public boolean getAutoExpandBubble(); - method @Deprecated @Nullable public android.graphics.drawable.Icon getBubbleIcon(); - method @Deprecated @Nullable public android.app.PendingIntent getBubbleIntent(); method @Nullable public android.app.PendingIntent getDeleteIntent(); method @Dimension(unit=android.annotation.Dimension.DP) public int getDesiredHeight(); method @DimenRes public int getDesiredHeightResId(); @@ -5686,8 +5682,6 @@ package android.app { ctor public Notification.BubbleMetadata.Builder(@NonNull String); ctor public Notification.BubbleMetadata.Builder(@NonNull android.app.PendingIntent, @NonNull android.graphics.drawable.Icon); method @NonNull public android.app.Notification.BubbleMetadata build(); - method @Deprecated @NonNull public android.app.Notification.BubbleMetadata.Builder createIntentBubble(@NonNull android.app.PendingIntent, @NonNull android.graphics.drawable.Icon); - method @Deprecated @NonNull public android.app.Notification.BubbleMetadata.Builder createShortcutBubble(@NonNull String); method @NonNull public android.app.Notification.BubbleMetadata.Builder setAutoExpandBubble(boolean); method @NonNull public android.app.Notification.BubbleMetadata.Builder setDeleteIntent(@Nullable android.app.PendingIntent); method @NonNull public android.app.Notification.BubbleMetadata.Builder setDesiredHeight(@Dimension(unit=android.annotation.Dimension.DP) int); @@ -13391,6 +13385,7 @@ package android.database.sqlite { method public void disableWriteAheadLogging(); method public boolean enableWriteAheadLogging(); method public void endTransaction(); + method public void execPerConnectionSQL(@NonNull String, @Nullable Object[]) throws android.database.SQLException; method public void execSQL(String) throws android.database.SQLException; method public void execSQL(String, Object[]) throws android.database.SQLException; method public static String findEditTable(String); @@ -24358,7 +24353,7 @@ package android.media { } public final class AudioMetadata { - method @NonNull public static android.media.AudioMetadata.Map createMap(); + method @NonNull public static android.media.AudioMetadataMap createMap(); } public static class AudioMetadata.Format { @@ -24376,16 +24371,16 @@ package android.media { method @NonNull public Class<T> getValueClass(); } - public static interface AudioMetadata.Map extends android.media.AudioMetadata.ReadMap { + public interface AudioMetadataMap extends android.media.AudioMetadataReadMap { method @Nullable public <T> T remove(@NonNull android.media.AudioMetadata.Key<T>); method @Nullable public <T> T set(@NonNull android.media.AudioMetadata.Key<T>, @NonNull T); } - public static interface AudioMetadata.ReadMap { + public interface AudioMetadataReadMap { method public <T> boolean containsKey(@NonNull android.media.AudioMetadata.Key<T>); - method @NonNull public android.media.AudioMetadata.Map dup(); + method @NonNull public android.media.AudioMetadataMap dup(); method @Nullable public <T> T get(@NonNull android.media.AudioMetadata.Key<T>); - method public int size(); + method @IntRange(from=0) public int size(); } public final class AudioPlaybackCaptureConfiguration { @@ -24700,7 +24695,7 @@ package android.media { } public static interface AudioTrack.OnCodecFormatChangedListener { - method public void onCodecFormatChanged(@NonNull android.media.AudioTrack, @Nullable android.media.AudioMetadata.ReadMap); + method public void onCodecFormatChanged(@NonNull android.media.AudioTrack, @Nullable android.media.AudioMetadataReadMap); } public static interface AudioTrack.OnPlaybackPositionUpdateListener { @@ -26401,7 +26396,7 @@ package android.media { method public boolean advance(@NonNull android.media.MediaParser.SeekableInputReader) throws java.io.IOException; method @NonNull public static android.media.MediaParser create(@NonNull android.media.MediaParser.OutputConsumer, @NonNull java.lang.String...); method @NonNull public static android.media.MediaParser createByName(@NonNull String, @NonNull android.media.MediaParser.OutputConsumer); - method @Nullable public String getParserName(); + method @NonNull public String getParserName(); method @NonNull public static java.util.List<java.lang.String> getParserNames(@NonNull android.media.MediaFormat); method public void release(); method public void seek(@NonNull android.media.MediaParser.SeekPoint); @@ -26437,7 +26432,13 @@ package android.media { field public static final String PARSER_NAME_OGG = "android.media.mediaparser.OggParser"; field public static final String PARSER_NAME_PS = "android.media.mediaparser.PsParser"; field public static final String PARSER_NAME_TS = "android.media.mediaparser.TsParser"; + field public static final String PARSER_NAME_UNKNOWN = "android.media.mediaparser.UNKNOWN"; field public static final String PARSER_NAME_WAV = "android.media.mediaparser.WavParser"; + field public static final int SAMPLE_FLAG_DECODE_ONLY = -2147483648; // 0x80000000 + field public static final int SAMPLE_FLAG_ENCRYPTED = 1073741824; // 0x40000000 + field public static final int SAMPLE_FLAG_HAS_SUPPLEMENTAL_DATA = 268435456; // 0x10000000 + field public static final int SAMPLE_FLAG_KEY_FRAME = 1; // 0x1 + field public static final int SAMPLE_FLAG_LAST_SAMPLE = 536870912; // 0x20000000 } public static interface MediaParser.InputReader { @@ -30344,6 +30345,7 @@ package android.net { } public class NetworkRequest implements android.os.Parcelable { + method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkCapabilities); method public int describeContents(); method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier(); method public boolean hasCapability(int); @@ -37146,11 +37148,10 @@ package android.os { field public static final int EFFECT_TICK = 2; // 0x2 } - public static class VibrationEffect.Composition { - ctor public VibrationEffect.Composition(); - method @Nullable public android.os.VibrationEffect.Composition addPrimitive(int); - method @Nullable public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float); - method @Nullable public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float, @IntRange(from=0) int); + public static final class VibrationEffect.Composition { + method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int); + method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float); + method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float, @IntRange(from=0) int); method @NonNull public android.os.VibrationEffect compose(); field public static final int PRIMITIVE_CLICK = 1; // 0x1 field public static final int PRIMITIVE_QUICK_FALL = 6; // 0x6 @@ -37160,9 +37161,9 @@ package android.os { } public abstract class Vibrator { - method @Nullable public Boolean areAllEffectsSupported(@NonNull int...); - method public boolean areAllPrimitivesSupported(@NonNull int...); - method @Nullable public boolean[] areEffectsSupported(@NonNull int...); + method public final int areAllEffectsSupported(@NonNull int...); + method public final boolean areAllPrimitivesSupported(@NonNull int...); + method @NonNull public int[] areEffectsSupported(@NonNull int...); method @NonNull public boolean[] arePrimitivesSupported(@NonNull int...); method @RequiresPermission(android.Manifest.permission.VIBRATE) public abstract void cancel(); method public abstract boolean hasAmplitudeControl(); @@ -37173,6 +37174,9 @@ package android.os { method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long[], int, android.media.AudioAttributes); method @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(android.os.VibrationEffect); method @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(android.os.VibrationEffect, android.media.AudioAttributes); + field public static final int VIBRATION_EFFECT_SUPPORT_NO = 2; // 0x2 + field public static final int VIBRATION_EFFECT_SUPPORT_UNKNOWN = 0; // 0x0 + field public static final int VIBRATION_EFFECT_SUPPORT_YES = 1; // 0x1 } public class WorkSource implements android.os.Parcelable { @@ -37190,15 +37194,6 @@ package android.os { } -package android.os.ext.test { - - @Deprecated public class Test { - ctor @Deprecated public Test(); - method @Deprecated public void testE(); - } - -} - package android.os.health { public class HealthStats { @@ -43141,9 +43136,9 @@ package android.service.autofill { } public final class InlinePresentation implements android.os.Parcelable { - ctor public InlinePresentation(@NonNull android.app.slice.Slice, @NonNull android.view.inline.InlinePresentationSpec, boolean); + ctor public InlinePresentation(@NonNull android.app.slice.Slice, @NonNull android.widget.inline.InlinePresentationSpec, boolean); method public int describeContents(); - method @NonNull public android.view.inline.InlinePresentationSpec getInlinePresentationSpec(); + method @NonNull public android.widget.inline.InlinePresentationSpec getInlinePresentationSpec(); method @NonNull public android.app.slice.Slice getSlice(); method public boolean isPinned(); method public void writeToParcel(@NonNull android.os.Parcel, int); @@ -46415,14 +46410,26 @@ package android.telephony { field public static final int BAND_46 = 46; // 0x2e field public static final int BAND_47 = 47; // 0x2f field public static final int BAND_48 = 48; // 0x30 + field public static final int BAND_49 = 49; // 0x31 field public static final int BAND_5 = 5; // 0x5 + field public static final int BAND_50 = 50; // 0x32 + field public static final int BAND_51 = 51; // 0x33 + field public static final int BAND_52 = 52; // 0x34 + field public static final int BAND_53 = 53; // 0x35 field public static final int BAND_6 = 6; // 0x6 field public static final int BAND_65 = 65; // 0x41 field public static final int BAND_66 = 66; // 0x42 field public static final int BAND_68 = 68; // 0x44 field public static final int BAND_7 = 7; // 0x7 field public static final int BAND_70 = 70; // 0x46 + field public static final int BAND_71 = 71; // 0x47 + field public static final int BAND_72 = 72; // 0x48 + field public static final int BAND_73 = 73; // 0x49 + field public static final int BAND_74 = 74; // 0x4a field public static final int BAND_8 = 8; // 0x8 + field public static final int BAND_85 = 85; // 0x55 + field public static final int BAND_87 = 87; // 0x57 + field public static final int BAND_88 = 88; // 0x58 field public static final int BAND_9 = 9; // 0x9 } @@ -46486,7 +46493,13 @@ package android.telephony { field public static final int BAND_83 = 83; // 0x53 field public static final int BAND_84 = 84; // 0x54 field public static final int BAND_86 = 86; // 0x56 + field public static final int BAND_89 = 89; // 0x59 field public static final int BAND_90 = 90; // 0x5a + field public static final int BAND_91 = 91; // 0x5b + field public static final int BAND_92 = 92; // 0x5c + field public static final int BAND_93 = 93; // 0x5d + field public static final int BAND_94 = 94; // 0x5e + field public static final int BAND_95 = 95; // 0x5f } public static final class AccessNetworkConstants.UtranBand { @@ -47774,7 +47787,7 @@ package android.telephony { method public String createAppSpecificSmsToken(android.app.PendingIntent); method @Nullable public String createAppSpecificSmsTokenWithPackageInfo(@Nullable String, @NonNull android.app.PendingIntent); method public java.util.ArrayList<java.lang.String> divideMessage(String); - method @Deprecated public void downloadMultimediaMessage(android.content.Context, String, android.net.Uri, android.os.Bundle, android.app.PendingIntent); + method public void downloadMultimediaMessage(android.content.Context, String, android.net.Uri, android.os.Bundle, android.app.PendingIntent); method @NonNull public android.os.Bundle getCarrierConfigValues(); method public static android.telephony.SmsManager getDefault(); method public static int getDefaultSmsSubscriptionId(); @@ -47784,7 +47797,7 @@ package android.telephony { method public int getSubscriptionId(); method public void injectSmsPdu(byte[], String, android.app.PendingIntent); method public void sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent); - method @Deprecated public void sendMultimediaMessage(android.content.Context, android.net.Uri, String, android.os.Bundle, android.app.PendingIntent); + method public void sendMultimediaMessage(android.content.Context, android.net.Uri, String, android.os.Bundle, android.app.PendingIntent); method public void sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>); method public void sendMultipartTextMessage(@NonNull String, @Nullable String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, long); method public void sendMultipartTextMessage(@NonNull String, @Nullable String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String, @Nullable String); @@ -55740,7 +55753,7 @@ package android.view { field public int softInputMode; field @Deprecated public int systemUiVisibility; field public android.os.IBinder token; - field @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION, to="BASE_APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION, to="APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING, to="APPLICATION_STARTING"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_DRAWN_APPLICATION, to="DRAWN_APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL, to="APPLICATION_PANEL"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA, to="APPLICATION_MEDIA"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL, to="APPLICATION_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=0x3ed, to="APPLICATION_ABOVE_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG, to="APPLICATION_ATTACHED_DIALOG"), @android.view.ViewDebug.IntToString(from=0x3ec, to="APPLICATION_MEDIA_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR, to="STATUS_BAR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SEARCH_BAR, to="SEARCH_BAR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PHONE, to="PHONE"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, to="SYSTEM_ALERT"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_TOAST, to="TOAST"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, to="SYSTEM_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PRIORITY_PHONE, to="PRIORITY_PHONE"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG, to="SYSTEM_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG, to="KEYGUARD_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, to="SYSTEM_ERROR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD, to="INPUT_METHOD"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG, to="INPUT_METHOD_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_WALLPAPER, to="WALLPAPER"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL, to="STATUS_BAR_PANEL"), @android.view.ViewDebug.IntToString(from=0x7df, to="SECURE_SYSTEM_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7e0, to="DRAG"), @android.view.ViewDebug.IntToString(from=0x7e1, to="STATUS_BAR_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=0x7e2, to="POINTER"), @android.view.ViewDebug.IntToString(from=0x7e3, to="NAVIGATION_BAR"), @android.view.ViewDebug.IntToString(from=0x7e4, to="VOLUME_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7e5, to="BOOT_PROGRESS"), @android.view.ViewDebug.IntToString(from=0x7e6, to="INPUT_CONSUMER"), @android.view.ViewDebug.IntToString(from=0x7e7, to="DREAM"), @android.view.ViewDebug.IntToString(from=0x7e8, to="NAVIGATION_BAR_PANEL"), @android.view.ViewDebug.IntToString(from=0x7ea, to="DISPLAY_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7eb, to="MAGNIFICATION_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7f5, to="PRESENTATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION, to="PRIVATE_PRESENTATION"), @android.view.ViewDebug.IntToString(from=0x7ef, to="VOICE_INTERACTION"), @android.view.ViewDebug.IntToString(from=0x7f1, to="VOICE_INTERACTION_STARTING"), @android.view.ViewDebug.IntToString(from=0x7f2, to="DOCK_DIVIDER"), @android.view.ViewDebug.IntToString(from=0x7f3, to="QS_DIALOG"), @android.view.ViewDebug.IntToString(from=0x7f4, to="SCREENSHOT"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, to="APPLICATION_OVERLAY")}) public int type; + field @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION, to="BASE_APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION, to="APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING, to="APPLICATION_STARTING"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_DRAWN_APPLICATION, to="DRAWN_APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL, to="APPLICATION_PANEL"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA, to="APPLICATION_MEDIA"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL, to="APPLICATION_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=0x3ed, to="APPLICATION_ABOVE_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG, to="APPLICATION_ATTACHED_DIALOG"), @android.view.ViewDebug.IntToString(from=0x3ec, to="APPLICATION_MEDIA_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR, to="STATUS_BAR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SEARCH_BAR, to="SEARCH_BAR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PHONE, to="PHONE"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, to="SYSTEM_ALERT"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_TOAST, to="TOAST"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, to="SYSTEM_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PRIORITY_PHONE, to="PRIORITY_PHONE"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG, to="SYSTEM_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG, to="KEYGUARD_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, to="SYSTEM_ERROR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD, to="INPUT_METHOD"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG, to="INPUT_METHOD_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_WALLPAPER, to="WALLPAPER"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL, to="STATUS_BAR_PANEL"), @android.view.ViewDebug.IntToString(from=0x7df, to="SECURE_SYSTEM_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7e0, to="DRAG"), @android.view.ViewDebug.IntToString(from=0x7e1, to="STATUS_BAR_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=0x7e2, to="POINTER"), @android.view.ViewDebug.IntToString(from=0x7e3, to="NAVIGATION_BAR"), @android.view.ViewDebug.IntToString(from=0x7e4, to="VOLUME_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7e5, to="BOOT_PROGRESS"), @android.view.ViewDebug.IntToString(from=0x7e6, to="INPUT_CONSUMER"), @android.view.ViewDebug.IntToString(from=0x7e8, to="NAVIGATION_BAR_PANEL"), @android.view.ViewDebug.IntToString(from=0x7ea, to="DISPLAY_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7eb, to="MAGNIFICATION_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7f5, to="PRESENTATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION, to="PRIVATE_PRESENTATION"), @android.view.ViewDebug.IntToString(from=0x7ef, to="VOICE_INTERACTION"), @android.view.ViewDebug.IntToString(from=0x7f1, to="VOICE_INTERACTION_STARTING"), @android.view.ViewDebug.IntToString(from=0x7f2, to="DOCK_DIVIDER"), @android.view.ViewDebug.IntToString(from=0x7f3, to="QS_DIALOG"), @android.view.ViewDebug.IntToString(from=0x7f4, to="SCREENSHOT"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, to="APPLICATION_OVERLAY")}) public int type; field public float verticalMargin; field @android.view.ViewDebug.ExportedProperty public float verticalWeight; field public int windowAnimations; @@ -55749,8 +55762,8 @@ package android.view { } public final class WindowMetrics { - ctor public WindowMetrics(@NonNull android.util.Size, @NonNull android.view.WindowInsets); - method @NonNull public android.util.Size getSize(); + ctor public WindowMetrics(@NonNull android.graphics.Rect, @NonNull android.view.WindowInsets); + method @NonNull public android.graphics.Rect getBounds(); method @NonNull public android.view.WindowInsets getWindowInsets(); } @@ -56767,38 +56780,6 @@ package android.view.contentcapture { } -package android.view.inline { - - public class InlineContentView extends android.view.ViewGroup { - method @Nullable public android.view.SurfaceControl getSurfaceControl(); - method public boolean isZOrderedOnTop(); - method public void onLayout(boolean, int, int, int, int); - method public void setSurfaceControlCallback(@Nullable android.view.inline.InlineContentView.SurfaceControlCallback); - method public boolean setZOrderedOnTop(boolean); - } - - public static interface InlineContentView.SurfaceControlCallback { - method public void onCreated(@NonNull android.view.SurfaceControl); - method public void onDestroyed(@NonNull android.view.SurfaceControl); - } - - public final class InlinePresentationSpec implements android.os.Parcelable { - method public int describeContents(); - method @NonNull public android.util.Size getMaxSize(); - method @NonNull public android.util.Size getMinSize(); - method @Nullable public android.os.Bundle getStyle(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator<android.view.inline.InlinePresentationSpec> CREATOR; - } - - public static final class InlinePresentationSpec.Builder { - ctor public InlinePresentationSpec.Builder(@NonNull android.util.Size, @NonNull android.util.Size); - method @NonNull public android.view.inline.InlinePresentationSpec build(); - method @NonNull public android.view.inline.InlinePresentationSpec.Builder setStyle(@NonNull android.os.Bundle); - } - -} - package android.view.inputmethod { public class BaseInputConnection implements android.view.inputmethod.InputConnection { @@ -56970,7 +56951,7 @@ package android.view.inputmethod { public final class InlineSuggestion implements android.os.Parcelable { method public int describeContents(); method @NonNull public android.view.inputmethod.InlineSuggestionInfo getInfo(); - method public void inflate(@NonNull android.content.Context, @NonNull android.util.Size, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.view.inline.InlineContentView>); + method public void inflate(@NonNull android.content.Context, @NonNull android.util.Size, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.widget.inline.InlineContentView>); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestion> CREATOR; } @@ -56978,7 +56959,7 @@ package android.view.inputmethod { public final class InlineSuggestionInfo implements android.os.Parcelable { method public int describeContents(); method @Nullable public String[] getAutofillHints(); - method @NonNull public android.view.inline.InlinePresentationSpec getPresentationSpec(); + method @NonNull public android.widget.inline.InlinePresentationSpec getInlinePresentationSpec(); method @NonNull public String getSource(); method @NonNull public String getType(); method public boolean isPinned(); @@ -56994,8 +56975,8 @@ package android.view.inputmethod { method public int describeContents(); method @Nullable public android.os.Bundle getExtras(); method @NonNull public String getHostPackageName(); + method @NonNull public java.util.List<android.widget.inline.InlinePresentationSpec> getInlinePresentationSpecs(); method public int getMaxSuggestionCount(); - method @NonNull public java.util.List<android.view.inline.InlinePresentationSpec> getPresentationSpecs(); method @NonNull public android.os.LocaleList getSupportedLocales(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestionsRequest> CREATOR; @@ -57003,10 +56984,11 @@ package android.view.inputmethod { } public static final class InlineSuggestionsRequest.Builder { - ctor public InlineSuggestionsRequest.Builder(@NonNull java.util.List<android.view.inline.InlinePresentationSpec>); - method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder addPresentationSpecs(@NonNull android.view.inline.InlinePresentationSpec); + ctor public InlineSuggestionsRequest.Builder(@NonNull java.util.List<android.widget.inline.InlinePresentationSpec>); + method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder addInlinePresentationSpecs(@NonNull android.widget.inline.InlinePresentationSpec); method @NonNull public android.view.inputmethod.InlineSuggestionsRequest build(); method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setExtras(@NonNull android.os.Bundle); + method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setInlinePresentationSpecs(@NonNull java.util.List<android.widget.inline.InlinePresentationSpec>); method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setMaxSuggestionCount(int); method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setSupportedLocales(@NonNull android.os.LocaleList); } @@ -61600,6 +61582,38 @@ package android.widget { } +package android.widget.inline { + + public class InlineContentView extends android.view.ViewGroup { + method @Nullable public android.view.SurfaceControl getSurfaceControl(); + method public boolean isZOrderedOnTop(); + method public void onLayout(boolean, int, int, int, int); + method public void setSurfaceControlCallback(@Nullable android.widget.inline.InlineContentView.SurfaceControlCallback); + method public boolean setZOrderedOnTop(boolean); + } + + public static interface InlineContentView.SurfaceControlCallback { + method public void onCreated(@NonNull android.view.SurfaceControl); + method public void onDestroyed(@NonNull android.view.SurfaceControl); + } + + public final class InlinePresentationSpec implements android.os.Parcelable { + method public int describeContents(); + method @NonNull public android.util.Size getMaxSize(); + method @NonNull public android.util.Size getMinSize(); + method @Nullable public android.os.Bundle getStyle(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.widget.inline.InlinePresentationSpec> CREATOR; + } + + public static final class InlinePresentationSpec.Builder { + ctor public InlinePresentationSpec.Builder(@NonNull android.util.Size, @NonNull android.util.Size); + method @NonNull public android.widget.inline.InlinePresentationSpec build(); + method @NonNull public android.widget.inline.InlinePresentationSpec.Builder setStyle(@NonNull android.os.Bundle); + } + +} + package dalvik.annotation { @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.ANNOTATION_TYPE}) public @interface TestTarget { diff --git a/api/module-lib-current.txt b/api/module-lib-current.txt index a1d99670de1c..e91fe25009b2 100644 --- a/api/module-lib-current.txt +++ b/api/module-lib-current.txt @@ -161,14 +161,6 @@ package android.os { } -package android.os.ext.test { - - @Deprecated public class Test { - method @Deprecated public void testD(); - } - -} - package android.util { public final class Log { diff --git a/api/removed.txt b/api/removed.txt index 077c915ef2dd..cddccb3e68bb 100644 --- a/api/removed.txt +++ b/api/removed.txt @@ -20,6 +20,16 @@ package android.app { method @Deprecated public void setLatestEventInfo(android.content.Context, CharSequence, CharSequence, android.app.PendingIntent); } + public static final class Notification.BubbleMetadata implements android.os.Parcelable { + method @Deprecated @Nullable public android.graphics.drawable.Icon getBubbleIcon(); + method @Deprecated @Nullable public android.app.PendingIntent getBubbleIntent(); + } + + public static final class Notification.BubbleMetadata.Builder { + method @Deprecated @NonNull public android.app.Notification.BubbleMetadata.Builder createIntentBubble(@NonNull android.app.PendingIntent, @NonNull android.graphics.drawable.Icon); + method @Deprecated @NonNull public android.app.Notification.BubbleMetadata.Builder createShortcutBubble(@NonNull String); + } + public static class Notification.Builder { method @Deprecated public android.app.Notification.Builder setChannel(String); method @Deprecated public android.app.Notification.Builder setTimeout(long); diff --git a/api/system-current.txt b/api/system-current.txt index 7e25382f06d9..62eedfcd190a 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -368,7 +368,6 @@ package android.app { method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setUidMode(@NonNull String, int, int); field public static final String OPSTR_ACCEPT_HANDOVER = "android:accept_handover"; field public static final String OPSTR_ACCESS_ACCESSIBILITY = "android:access_accessibility"; - field public static final String OPSTR_ACCESS_CALL_AUDIO = "android:access_call_audio"; field public static final String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications"; field public static final String OPSTR_ACTIVATE_VPN = "android:activate_vpn"; field public static final String OPSTR_ASSIST_SCREENSHOT = "android:assist_screenshot"; @@ -2030,10 +2029,10 @@ package android.content.pm { } public static class PackageInstaller.Session implements java.io.Closeable { - method public void addFile(int, @NonNull String, long, @NonNull byte[], @Nullable byte[]); + method @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public void addFile(int, @NonNull String, long, @NonNull byte[], @Nullable byte[]); method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void commitTransferred(@NonNull android.content.IntentSender); - method @Nullable public android.content.pm.DataLoaderParams getDataLoaderParams(); - method public void removeFile(int, @NonNull String); + method @Nullable @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public android.content.pm.DataLoaderParams getDataLoaderParams(); + method @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public void removeFile(int, @NonNull String); } public static class PackageInstaller.SessionInfo implements android.os.Parcelable { @@ -2054,7 +2053,7 @@ package android.content.pm { public static class PackageInstaller.SessionParams implements android.os.Parcelable { method @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public void setAllocateAggressive(boolean); method @Deprecated public void setAllowDowngrade(boolean); - method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setDataLoaderParams(@NonNull android.content.pm.DataLoaderParams); + method @RequiresPermission(allOf={android.Manifest.permission.INSTALL_PACKAGES, "com.android.permission.USE_INSTALLER_V2"}) public void setDataLoaderParams(@NonNull android.content.pm.DataLoaderParams); method public void setDontKillApp(boolean); method public void setEnableRollback(boolean); method public void setEnableRollback(boolean, int); @@ -3576,23 +3575,23 @@ package android.hardware.soundtrigger { public static final class SoundTrigger.Keyphrase implements android.os.Parcelable { ctor public SoundTrigger.Keyphrase(int, int, @NonNull java.util.Locale, @NonNull String, @Nullable int[]); + method public int getId(); + method @NonNull public java.util.Locale getLocale(); + method public int getRecognitionModes(); + method @NonNull public String getText(); + method @NonNull public int[] getUsers(); method @NonNull public static android.hardware.soundtrigger.SoundTrigger.Keyphrase readFromParcel(@NonNull android.os.Parcel); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.Keyphrase> CREATOR; - field public final int id; - field @NonNull public final java.util.Locale locale; - field public final int recognitionModes; - field @NonNull public final String text; - field @NonNull public final int[] users; } public static final class SoundTrigger.KeyphraseSoundModel extends android.hardware.soundtrigger.SoundTrigger.SoundModel implements android.os.Parcelable { ctor public SoundTrigger.KeyphraseSoundModel(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], @Nullable android.hardware.soundtrigger.SoundTrigger.Keyphrase[], int); ctor public SoundTrigger.KeyphraseSoundModel(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], @Nullable android.hardware.soundtrigger.SoundTrigger.Keyphrase[]); + method @NonNull public android.hardware.soundtrigger.SoundTrigger.Keyphrase[] getKeyphrases(); method @NonNull public static android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel readFromParcel(@NonNull android.os.Parcel); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel> CREATOR; - field @NonNull public final android.hardware.soundtrigger.SoundTrigger.Keyphrase[] keyphrases; } public static final class SoundTrigger.ModelParamRange implements android.os.Parcelable { @@ -3604,26 +3603,26 @@ package android.hardware.soundtrigger { public static final class SoundTrigger.ModuleProperties implements android.os.Parcelable { method public int describeContents(); + method public int getAudioCapabilities(); + method @NonNull public String getDescription(); + method public int getId(); + method @NonNull public String getImplementor(); + method public int getMaxBufferMillis(); + method public int getMaxKeyphrases(); + method public int getMaxSoundModels(); + method public int getMaxUsers(); + method public int getPowerConsumptionMw(); + method public int getRecognitionModes(); + method @NonNull public String getSupportedModelArch(); + method @NonNull public java.util.UUID getUuid(); + method public int getVersion(); + method public boolean isCaptureTransitionSupported(); + method public boolean isConcurrentCaptureSupported(); + method public boolean isTriggerReturnedInEvent(); method public void writeToParcel(android.os.Parcel, int); field public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION = 1; // 0x1 field public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION = 2; // 0x2 field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.ModuleProperties> CREATOR; - field public final int audioCapabilities; - field @NonNull public final String description; - field public final int id; - field @NonNull public final String implementor; - field public final int maxBufferMs; - field public final int maxKeyphrases; - field public final int maxSoundModels; - field public final int maxUsers; - field public final int powerConsumptionMw; - field public final int recognitionModes; - field public final boolean returnsTriggerInEvent; - field @NonNull public final String supportedModelArch; - field public final boolean supportsCaptureTransition; - field public final boolean supportsConcurrentCapture; - field @NonNull public final java.util.UUID uuid; - field public final int version; } public static class SoundTrigger.RecognitionEvent { @@ -3634,13 +3633,13 @@ package android.hardware.soundtrigger { } public static class SoundTrigger.SoundModel { + method @NonNull public byte[] getData(); + method public int getType(); + method @NonNull public java.util.UUID getUuid(); + method @NonNull public java.util.UUID getVendorUuid(); + method public int getVersion(); field public static final int TYPE_GENERIC_SOUND = 1; // 0x1 field public static final int TYPE_KEYPHRASE = 0; // 0x0 - field @NonNull public final byte[] data; - field public final int type; - field @NonNull public final java.util.UUID uuid; - field @NonNull public final java.util.UUID vendorUuid; - field public final int version; } } @@ -4179,11 +4178,11 @@ package android.media { method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void addOnPreferredDeviceForStrategyChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.OnPreferredDeviceForStrategyChangedListener) throws java.lang.SecurityException; method public void clearAudioServerStateCallback(); method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int dispatchAudioFocusChange(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy); - method @IntRange(from=0) public int getAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo); + method @IntRange(from=0) public long getAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioProductStrategy> getAudioProductStrategies(); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioVolumeGroup> getAudioVolumeGroups(); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<android.media.AudioDeviceAttributes> getDevicesForAttributes(@NonNull android.media.AudioAttributes); - method @IntRange(from=0) public int getMaxAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo); + method @IntRange(from=0) public long getMaxAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo); method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMaxVolumeIndexForAttributes(@NonNull android.media.AudioAttributes); method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMinVolumeIndexForAttributes(@NonNull android.media.AudioAttributes); method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioDeviceAttributes getPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy); @@ -4198,7 +4197,7 @@ package android.media { method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int) throws java.lang.IllegalArgumentException; method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.MODIFY_AUDIO_ROUTING}) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy) throws java.lang.IllegalArgumentException; method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int requestAudioFocus(@NonNull android.media.AudioFocusRequest, @Nullable android.media.audiopolicy.AudioPolicy); - method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo, @IntRange(from=0) int); + method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo, @IntRange(from=0) long); method public void setAudioServerStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioServerStateCallback); method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setFocusRequestResult(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy); method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy, @NonNull android.media.AudioDeviceAttributes); @@ -4273,17 +4272,11 @@ package android.media { } public static class AudioTrack.TunerConfiguration { + ctor @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public AudioTrack.TunerConfiguration(@IntRange(from=1) int, @IntRange(from=1) int); method @IntRange(from=1) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getContentId(); method @IntRange(from=1) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getSyncId(); } - public static class AudioTrack.TunerConfiguration.Builder { - ctor public AudioTrack.TunerConfiguration.Builder(); - method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioTrack.TunerConfiguration build(); - method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioTrack.TunerConfiguration.Builder setContentId(@IntRange(from=1) int); - method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioTrack.TunerConfiguration.Builder setSyncId(@IntRange(from=1) int); - } - public class HwAudioSource { method public boolean isPlaying(); method public void start(); @@ -6184,7 +6177,6 @@ package android.net { public final class MatchAllNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable { ctor public MatchAllNetworkSpecifier(); method public int describeContents(); - method public boolean satisfiedBy(android.net.NetworkSpecifier); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.net.MatchAllNetworkSpecifier> CREATOR; } @@ -6205,21 +6197,21 @@ package android.net { public abstract class NetworkAgent { ctor public NetworkAgent(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, int, @NonNull android.net.NetworkAgentConfig, @Nullable android.net.NetworkProvider); method @Nullable public android.net.Network getNetwork(); + method public void markConnected(); method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData); method public void onAutomaticReconnectDisabled(); method public void onNetworkUnwanted(); method public void onRemoveKeepalivePacketFilter(int); method public void onSaveAcceptUnvalidated(boolean); method public void onSignalStrengthThresholdsUpdated(@NonNull int[]); - method public void onStartSocketKeepalive(int, int, @NonNull android.net.KeepalivePacketData); + method public void onStartSocketKeepalive(int, @NonNull java.time.Duration, @NonNull android.net.KeepalivePacketData); method public void onStopSocketKeepalive(int); - method public void onValidationStatus(int, @Nullable String); + method public void onValidationStatus(int, @Nullable android.net.Uri); method @NonNull public android.net.Network register(); - method public void sendLinkProperties(@NonNull android.net.LinkProperties); - method public void sendNetworkCapabilities(@NonNull android.net.NetworkCapabilities); - method public void sendNetworkScore(int); - method public void sendSocketKeepaliveEvent(int, int); - method public void setConnected(); + method public final void sendLinkProperties(@NonNull android.net.LinkProperties); + method public final void sendNetworkCapabilities(@NonNull android.net.NetworkCapabilities); + method public final void sendNetworkScore(@IntRange(from=0, to=99) int); + method public final void sendSocketKeepaliveEvent(int, int); method public void unregister(); field public static final int VALIDATION_STATUS_NOT_VALID = 2; // 0x2 field public static final int VALIDATION_STATUS_VALID = 1; // 0x1 @@ -6236,7 +6228,7 @@ package android.net { field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkAgentConfig> CREATOR; } - public static class NetworkAgentConfig.Builder { + public static final class NetworkAgentConfig.Builder { ctor public NetworkAgentConfig.Builder(); method @NonNull public android.net.NetworkAgentConfig build(); method @NonNull public android.net.NetworkAgentConfig.Builder setExplicitlySelected(boolean); @@ -6290,8 +6282,8 @@ package android.net { ctor public NetworkProvider(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String); method @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public void declareNetworkRequestUnfulfillable(@NonNull android.net.NetworkRequest); method public int getProviderId(); - method public void onNetworkRequested(@NonNull android.net.NetworkRequest, int, int); - method public void onRequestWithdrawn(@NonNull android.net.NetworkRequest); + method public void onNetworkRequestWithdrawn(@NonNull android.net.NetworkRequest); + method public void onNetworkRequested(@NonNull android.net.NetworkRequest, @IntRange(from=0, to=99) int, int); field public static final int ID_NONE = -1; // 0xffffffff } @@ -6304,7 +6296,6 @@ package android.net { public class NetworkRequest implements android.os.Parcelable { method @Nullable public String getRequestorPackageName(); method public int getRequestorUid(); - method public boolean satisfiedBy(@Nullable android.net.NetworkCapabilities); } public static class NetworkRequest.Builder { @@ -6339,8 +6330,8 @@ package android.net { } public abstract class NetworkSpecifier { + method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkSpecifier); method @Nullable public android.net.NetworkSpecifier redact(); - method public abstract boolean satisfiedBy(@Nullable android.net.NetworkSpecifier); } public class NetworkStack { @@ -6443,10 +6434,6 @@ package android.net { method @NonNull public android.net.StaticIpConfiguration.Builder setIpAddress(@Nullable android.net.LinkAddress); } - public final class TelephonyNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable { - method public boolean satisfiedBy(android.net.NetworkSpecifier); - } - public final class TetheredClient implements android.os.Parcelable { ctor public TetheredClient(@NonNull android.net.MacAddress, @NonNull java.util.Collection<android.net.TetheredClient.AddressInfo>, int); method public int describeContents(); @@ -7433,10 +7420,6 @@ package android.net.wifi { field public int numUsage; } - public final class WifiNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable { - method public boolean satisfiedBy(android.net.NetworkSpecifier); - } - public final class WifiNetworkSuggestion implements android.os.Parcelable { method @NonNull public android.net.wifi.WifiConfiguration getWifiConfiguration(); } @@ -7627,10 +7610,6 @@ package android.net.wifi.aware { method @Deprecated public android.net.NetworkSpecifier createNetworkSpecifierPmk(@NonNull android.net.wifi.aware.PeerHandle, @NonNull byte[]); } - public final class WifiAwareNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable { - method public boolean satisfiedBy(android.net.NetworkSpecifier); - } - public class WifiAwareSession implements java.lang.AutoCloseable { method public android.net.NetworkSpecifier createNetworkSpecifierPmk(int, @NonNull byte[], @NonNull byte[]); } @@ -8290,7 +8269,6 @@ package android.os { method @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public android.os.IncidentManager.IncidentReport getIncidentReport(android.net.Uri); method @NonNull @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public java.util.List<android.net.Uri> getIncidentReportList(String); method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public java.util.List<android.os.IncidentManager.PendingReport> getPendingReports(); - method public void registerSection(int, @NonNull String, @NonNull android.os.IncidentManager.DumpCallback); method public void registerSection(int, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.IncidentManager.DumpCallback); method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void reportIncident(android.os.IncidentReportArgs); method @RequiresPermission("android.permission.REQUEST_INCIDENT_REPORT_APPROVAL") public void requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener); @@ -8395,12 +8373,12 @@ package android.os { public class RecoverySystem { method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void cancelScheduledUpdate(android.content.Context) throws java.io.IOException; - method @RequiresPermission(android.Manifest.permission.RECOVERY) public static boolean clearPrepareForUnattendedUpdate(@NonNull android.content.Context) throws java.io.IOException; + method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void clearPrepareForUnattendedUpdate(@NonNull android.content.Context) throws java.io.IOException; method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void installPackage(android.content.Context, java.io.File, boolean) throws java.io.IOException; method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void prepareForUnattendedUpdate(@NonNull android.content.Context, @NonNull String, @Nullable android.content.IntentSender) throws java.io.IOException; method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener, android.os.Handler) throws java.io.IOException; method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener) throws java.io.IOException; - method @RequiresPermission(android.Manifest.permission.RECOVERY) public static boolean rebootAndApply(@NonNull android.content.Context, @NonNull String, @NonNull String) throws java.io.IOException; + method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void rebootAndApply(@NonNull android.content.Context, @NonNull String, @NonNull String) throws java.io.IOException; method @RequiresPermission(allOf={android.Manifest.permission.RECOVERY, android.Manifest.permission.REBOOT}) public static void rebootWipeAb(android.content.Context, java.io.File, String) throws java.io.IOException; method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void scheduleUpdateOnBoot(android.content.Context, java.io.File) throws java.io.IOException; method public static boolean verifyPackageCompatibility(java.io.File) throws java.io.IOException; @@ -8711,15 +8689,6 @@ package android.os.ext { } -package android.os.ext.test { - - @Deprecated public class Test { - method @Deprecated public void testF(); - method @Deprecated public void testG(); - } - -} - package android.os.image { public class DynamicSystemClient { @@ -10913,8 +10882,6 @@ package android.telephony { method @Deprecated @NonNull public String getDataConnectionApn(); method @Deprecated public int getDataConnectionApnTypeBitMask(); method @Deprecated public int getDataConnectionFailCause(); - method @Deprecated @Nullable public android.net.LinkProperties getDataConnectionLinkProperties(); - method @Deprecated public int getDataConnectionNetworkType(); method @Deprecated public int getDataConnectionState(); } @@ -11341,9 +11308,9 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoiceActivationState(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void shutdownAllRadios(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPin(String); - method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPinReportResult(String); + method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPinReportResult(String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPuk(String, String); - method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPukReportResult(String, String); + method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPukReportResult(String, String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean switchSlots(int[]); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void toggleRadioOnOff(); method @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public void updateOtaEmergencyNumberDbFilePath(@NonNull android.os.ParcelFileDescriptor); @@ -12713,9 +12680,6 @@ package android.view.contentcapture { public final class ContentCaptureManager { method public boolean isContentCaptureFeatureEnabled(); - } - - public abstract class ContentCaptureSession implements java.lang.AutoCloseable { field public static final int NO_SESSION_ID = 0; // 0x0 } diff --git a/api/system-removed.txt b/api/system-removed.txt index 3acc22528438..09544c11f8b7 100644 --- a/api/system-removed.txt +++ b/api/system-removed.txt @@ -180,6 +180,11 @@ package android.telecom { package android.telephony { + public final class PreciseDataConnectionState implements android.os.Parcelable { + method @Deprecated @Nullable public android.net.LinkProperties getDataConnectionLinkProperties(); + method @Deprecated public int getDataConnectionNetworkType(); + } + public class TelephonyManager { method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void answerRingingCall(); method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public boolean endCall(); diff --git a/api/test-current.txt b/api/test-current.txt index ba6feedc65ba..4e150a8434d9 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -2409,7 +2409,6 @@ package android.os { method @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public android.os.IncidentManager.IncidentReport getIncidentReport(android.net.Uri); method @NonNull @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public java.util.List<android.net.Uri> getIncidentReportList(String); method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public java.util.List<android.os.IncidentManager.PendingReport> getPendingReports(); - method public void registerSection(int, @NonNull String, @NonNull android.os.IncidentManager.DumpCallback); method public void registerSection(int, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.IncidentManager.DumpCallback); method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void reportIncident(android.os.IncidentReportArgs); method @RequiresPermission("android.permission.REQUEST_INCIDENT_REPORT_APPROVAL") public void requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener); @@ -5052,7 +5051,7 @@ package android.view.inputmethod { } public final class InlineSuggestionInfo implements android.os.Parcelable { - method @NonNull public static android.view.inputmethod.InlineSuggestionInfo newInlineSuggestionInfo(@NonNull android.view.inline.InlinePresentationSpec, @NonNull String, @Nullable String[], @NonNull String, boolean); + method @NonNull public static android.view.inputmethod.InlineSuggestionInfo newInlineSuggestionInfo(@NonNull android.widget.inline.InlinePresentationSpec, @NonNull String, @Nullable String[], @NonNull String, boolean); } public final class InlineSuggestionsResponse implements android.os.Parcelable { diff --git a/cmds/content/src/com/android/commands/content/Content.java b/cmds/content/src/com/android/commands/content/Content.java index 59544a971e5f..ca1d598ee7d7 100644 --- a/cmds/content/src/com/android/commands/content/Content.java +++ b/cmds/content/src/com/android/commands/content/Content.java @@ -32,8 +32,11 @@ import android.os.ParcelFileDescriptor; import android.os.Process; import android.os.UserHandle; import android.text.TextUtils; +import android.util.Pair; import java.io.FileDescriptor; +import java.util.ArrayList; +import java.util.List; /** * This class is a command line utility for manipulating content. A client @@ -72,7 +75,7 @@ public class Content { "usage: adb shell content [subcommand] [options]\n" + "\n" + "usage: adb shell content insert --uri <URI> [--user <USER_ID>]" - + " --bind <BINDING> [--bind <BINDING>...]\n" + + " --bind <BINDING> [--bind <BINDING>...] [--extra <BINDING>...]\n" + " <URI> a content provider URI.\n" + " <BINDING> binds a typed value to a column and is formatted:\n" + " <COLUMN_NAME>:<TYPE>:<COLUMN_VALUE> where:\n" @@ -84,7 +87,8 @@ public class Content { + " adb shell content insert --uri content://settings/secure --bind name:s:new_setting" + " --bind value:s:new_value\n" + "\n" - + "usage: adb shell content update --uri <URI> [--user <USER_ID>] [--where <WHERE>]\n" + + "usage: adb shell content update --uri <URI> [--user <USER_ID>]" + + " [--where <WHERE>] [--extra <BINDING>...]\n" + " <WHERE> is a SQL style where clause in quotes (You have to escape single quotes" + " - see example below).\n" + " Example:\n" @@ -93,14 +97,15 @@ public class Content { + " value:s:newer_value --where \"name=\'new_setting\'\"\n" + "\n" + "usage: adb shell content delete --uri <URI> [--user <USER_ID>] --bind <BINDING>" - + " [--bind <BINDING>...] [--where <WHERE>]\n" + + " [--bind <BINDING>...] [--where <WHERE>] [--extra <BINDING>...]\n" + " Example:\n" + " # Remove \"new_setting\" secure setting.\n" + " adb shell content delete --uri content://settings/secure " + "--where \"name=\'new_setting\'\"\n" + "\n" + "usage: adb shell content query --uri <URI> [--user <USER_ID>]" - + " [--projection <PROJECTION>] [--where <WHERE>] [--sort <SORT_ORDER>]\n" + + " [--projection <PROJECTION>] [--where <WHERE>] [--sort <SORT_ORDER>]" + + " [--extra <BINDING>...]\n" + " <PROJECTION> is a list of colon separated column names and is formatted:\n" + " <COLUMN_NAME>[:<COLUMN_NAME>...]\n" + " <SORT_ORDER> is the order in which rows in the result should be sorted.\n" @@ -196,6 +201,7 @@ public class Content { Uri uri = null; int userId = UserHandle.USER_SYSTEM; ContentValues values = new ContentValues(); + Bundle extras = new Bundle(); for (String argument; (argument = mTokenizer.nextArg()) != null;) { if (ARGUMENT_URI.equals(argument)) { uri = Uri.parse(argumentValueRequired(argument)); @@ -203,6 +209,8 @@ public class Content { userId = Integer.parseInt(argumentValueRequired(argument)); } else if (ARGUMENT_BIND.equals(argument)) { parseBindValue(values); + } else if (ARGUMENT_EXTRA.equals(argument)) { + parseBindValue(extras); } else { throw new IllegalArgumentException("Unsupported argument: " + argument); } @@ -215,20 +223,23 @@ public class Content { throw new IllegalArgumentException("Bindings not specified." + " Did you specify --bind argument(s)?"); } - return new InsertCommand(uri, userId, values); + return new InsertCommand(uri, userId, values, extras); } private DeleteCommand parseDeleteCommand() { Uri uri = null; int userId = UserHandle.USER_SYSTEM; - String where = null; + Bundle extras = new Bundle(); for (String argument; (argument = mTokenizer.nextArg())!= null;) { if (ARGUMENT_URI.equals(argument)) { uri = Uri.parse(argumentValueRequired(argument)); } else if (ARGUMENT_USER.equals(argument)) { userId = Integer.parseInt(argumentValueRequired(argument)); } else if (ARGUMENT_WHERE.equals(argument)) { - where = argumentValueRequired(argument); + extras.putString(ContentResolver.QUERY_ARG_SQL_SELECTION, + argumentValueRequired(argument)); + } else if (ARGUMENT_EXTRA.equals(argument)) { + parseBindValue(extras); } else { throw new IllegalArgumentException("Unsupported argument: " + argument); } @@ -237,23 +248,26 @@ public class Content { throw new IllegalArgumentException("Content provider URI not specified." + " Did you specify --uri argument?"); } - return new DeleteCommand(uri, userId, where); + return new DeleteCommand(uri, userId, extras); } private UpdateCommand parseUpdateCommand() { Uri uri = null; int userId = UserHandle.USER_SYSTEM; - String where = null; ContentValues values = new ContentValues(); + Bundle extras = new Bundle(); for (String argument; (argument = mTokenizer.nextArg())!= null;) { if (ARGUMENT_URI.equals(argument)) { uri = Uri.parse(argumentValueRequired(argument)); } else if (ARGUMENT_USER.equals(argument)) { userId = Integer.parseInt(argumentValueRequired(argument)); } else if (ARGUMENT_WHERE.equals(argument)) { - where = argumentValueRequired(argument); + extras.putString(ContentResolver.QUERY_ARG_SQL_SELECTION, + argumentValueRequired(argument)); } else if (ARGUMENT_BIND.equals(argument)) { parseBindValue(values); + } else if (ARGUMENT_EXTRA.equals(argument)) { + parseBindValue(extras); } else { throw new IllegalArgumentException("Unsupported argument: " + argument); } @@ -266,7 +280,7 @@ public class Content { throw new IllegalArgumentException("Bindings not specified." + " Did you specify --bind argument(s)?"); } - return new UpdateCommand(uri, userId, values, where); + return new UpdateCommand(uri, userId, values, extras); } public CallCommand parseCallCommand() { @@ -274,7 +288,7 @@ public class Content { int userId = UserHandle.USER_SYSTEM; String arg = null; Uri uri = null; - ContentValues values = new ContentValues(); + Bundle extras = new Bundle(); for (String argument; (argument = mTokenizer.nextArg())!= null;) { if (ARGUMENT_URI.equals(argument)) { uri = Uri.parse(argumentValueRequired(argument)); @@ -285,11 +299,10 @@ public class Content { } else if (ARGUMENT_ARG.equals(argument)) { arg = argumentValueRequired(argument); } else if (ARGUMENT_EXTRA.equals(argument)) { - parseBindValue(values); + parseBindValue(extras); } else { throw new IllegalArgumentException("Unsupported argument: " + argument); } - } if (uri == null) { throw new IllegalArgumentException("Content provider URI not specified." @@ -298,7 +311,7 @@ public class Content { if (method == null) { throw new IllegalArgumentException("Content provider method not specified."); } - return new CallCommand(uri, userId, method, arg, values); + return new CallCommand(uri, userId, method, arg, extras); } private GetTypeCommand parseGetTypeCommand() { @@ -363,19 +376,22 @@ public class Content { Uri uri = null; int userId = UserHandle.USER_SYSTEM; String[] projection = null; - String sort = null; - String where = null; + Bundle extras = new Bundle(); for (String argument; (argument = mTokenizer.nextArg())!= null;) { if (ARGUMENT_URI.equals(argument)) { uri = Uri.parse(argumentValueRequired(argument)); } else if (ARGUMENT_USER.equals(argument)) { userId = Integer.parseInt(argumentValueRequired(argument)); } else if (ARGUMENT_WHERE.equals(argument)) { - where = argumentValueRequired(argument); + extras.putString(ContentResolver.QUERY_ARG_SQL_SELECTION, + argumentValueRequired(argument)); } else if (ARGUMENT_SORT.equals(argument)) { - sort = argumentValueRequired(argument); + extras.putString(ContentResolver.QUERY_ARG_SQL_SORT_ORDER, + argumentValueRequired(argument)); } else if (ARGUMENT_PROJECTION.equals(argument)) { projection = argumentValueRequired(argument).split("[\\s]*:[\\s]*"); + } else if (ARGUMENT_EXTRA.equals(argument)) { + parseBindValue(extras); } else { throw new IllegalArgumentException("Unsupported argument: " + argument); } @@ -384,40 +400,76 @@ public class Content { throw new IllegalArgumentException("Content provider URI not specified." + " Did you specify --uri argument?"); } - return new QueryCommand(uri, userId, projection, where, sort); + return new QueryCommand(uri, userId, projection, extras); + } + + private List<String> splitWithEscaping(String argument, char splitChar) { + final List<String> res = new ArrayList<>(); + final StringBuilder cur = new StringBuilder(); + for (int i = 0; i < argument.length(); i++) { + char c = argument.charAt(i); + if (c == '\\') { + if (++i == argument.length()) { + throw new IllegalArgumentException("Invalid escaping"); + } else { + // Skip escaping char and insert next + c = argument.charAt(i); + cur.append(c); + } + } else if (c == splitChar) { + // Splitting char means next string + res.add(cur.toString()); + cur.setLength(0); + } else { + // Copy non-escaping and non-splitting char + cur.append(c); + } + } + res.add(cur.toString()); + return res; } - private void parseBindValue(ContentValues values) { + private Pair<String, Object> parseBindValue() { String argument = mTokenizer.nextArg(); if (TextUtils.isEmpty(argument)) { throw new IllegalArgumentException("Binding not well formed: " + argument); } - final int firstColonIndex = argument.indexOf(COLON); - if (firstColonIndex < 0) { + final List<String> split = splitWithEscaping(argument, COLON.charAt(0)); + if (split.size() != 3) { throw new IllegalArgumentException("Binding not well formed: " + argument); } - final int secondColonIndex = argument.indexOf(COLON, firstColonIndex + 1); - if (secondColonIndex < 0) { - throw new IllegalArgumentException("Binding not well formed: " + argument); - } - String column = argument.substring(0, firstColonIndex); - String type = argument.substring(firstColonIndex + 1, secondColonIndex); - String value = argument.substring(secondColonIndex + 1); + String column = split.get(0); + String type = split.get(1); + String value = split.get(2); if (TYPE_STRING.equals(type)) { - values.put(column, value); + return Pair.create(column, value); } else if (TYPE_BOOLEAN.equalsIgnoreCase(type)) { - values.put(column, Boolean.parseBoolean(value)); - } else if (TYPE_INTEGER.equalsIgnoreCase(type) || TYPE_LONG.equalsIgnoreCase(type)) { - values.put(column, Long.parseLong(value)); - } else if (TYPE_FLOAT.equalsIgnoreCase(type) || TYPE_DOUBLE.equalsIgnoreCase(type)) { - values.put(column, Double.parseDouble(value)); + return Pair.create(column, Boolean.parseBoolean(value)); + } else if (TYPE_INTEGER.equalsIgnoreCase(type)) { + return Pair.create(column, Integer.parseInt(value)); + } else if (TYPE_LONG.equalsIgnoreCase(type)) { + return Pair.create(column, Long.parseLong(value)); + } else if (TYPE_FLOAT.equalsIgnoreCase(type)) { + return Pair.create(column, Float.parseFloat(value)); + } else if (TYPE_DOUBLE.equalsIgnoreCase(type)) { + return Pair.create(column, Double.parseDouble(value)); } else if (TYPE_NULL.equalsIgnoreCase(type)) { - values.putNull(column); + return Pair.create(column, null); } else { throw new IllegalArgumentException("Unsupported type: " + type); } } + private void parseBindValue(ContentValues values) { + final Pair<String, Object> columnValue = parseBindValue(); + values.putObject(columnValue.first, columnValue.second); + } + + private void parseBindValue(Bundle extras) { + final Pair<String, Object> columnValue = parseBindValue(); + extras.putObject(columnValue.first, columnValue.second); + } + private String argumentValueRequired(String argument) { String value = mTokenizer.nextArg(); if (TextUtils.isEmpty(value) || value.startsWith(ARGUMENT_PREFIX)) { @@ -500,60 +552,43 @@ public class Content { private static class InsertCommand extends Command { final ContentValues mContentValues; + final Bundle mExtras; - public InsertCommand(Uri uri, int userId, ContentValues contentValues) { + public InsertCommand(Uri uri, int userId, ContentValues contentValues, Bundle extras) { super(uri, userId); mContentValues = contentValues; + mExtras = extras; } @Override public void onExecute(IContentProvider provider) throws Exception { - provider.insert(resolveCallingPackage(), null, mUri, mContentValues, null); + provider.insert(resolveCallingPackage(), null, mUri, mContentValues, mExtras); } } private static class DeleteCommand extends Command { - final String mWhere; + final Bundle mExtras; - public DeleteCommand(Uri uri, int userId, String where) { + public DeleteCommand(Uri uri, int userId, Bundle extras) { super(uri, userId); - mWhere = where; + mExtras = extras; } @Override public void onExecute(IContentProvider provider) throws Exception { - provider.delete(resolveCallingPackage(), null, mUri, - ContentResolver.createSqlQueryBundle(mWhere, null)); + provider.delete(resolveCallingPackage(), null, mUri, mExtras); } } private static class CallCommand extends Command { final String mMethod, mArg; - Bundle mExtras = null; + final Bundle mExtras; - public CallCommand(Uri uri, int userId, String method, String arg, ContentValues values) { + public CallCommand(Uri uri, int userId, String method, String arg, Bundle extras) { super(uri, userId); mMethod = method; mArg = arg; - if (values != null) { - mExtras = new Bundle(); - for (String key : values.keySet()) { - final Object val = values.get(key); - if (val instanceof String) { - mExtras.putString(key, (String) val); - } else if (val instanceof Float) { - mExtras.putFloat(key, (Float) val); - } else if (val instanceof Double) { - mExtras.putDouble(key, (Double) val); - } else if (val instanceof Boolean) { - mExtras.putBoolean(key, (Boolean) val); - } else if (val instanceof Integer) { - mExtras.putInt(key, (Integer) val); - } else if (val instanceof Long) { - mExtras.putLong(key, (Long) val); - } - } - } + mExtras = extras; } @Override @@ -604,21 +639,20 @@ public class Content { } } - private static class QueryCommand extends DeleteCommand { + private static class QueryCommand extends Command { final String[] mProjection; - final String mSortOrder; + final Bundle mExtras; - public QueryCommand( - Uri uri, int userId, String[] projection, String where, String sortOrder) { - super(uri, userId, where); + public QueryCommand(Uri uri, int userId, String[] projection, Bundle extras) { + super(uri, userId); mProjection = projection; - mSortOrder = sortOrder; + mExtras = extras; } @Override public void onExecute(IContentProvider provider) throws Exception { Cursor cursor = provider.query(resolveCallingPackage(), null, mUri, mProjection, - ContentResolver.createSqlQueryBundle(mWhere, null, mSortOrder), null); + mExtras, null); if (cursor == null) { System.out.println("No result found."); return; @@ -670,18 +704,19 @@ public class Content { } } - private static class UpdateCommand extends InsertCommand { - final String mWhere; + private static class UpdateCommand extends Command { + final ContentValues mValues; + final Bundle mExtras; - public UpdateCommand(Uri uri, int userId, ContentValues contentValues, String where) { - super(uri, userId, contentValues); - mWhere = where; + public UpdateCommand(Uri uri, int userId, ContentValues values, Bundle extras) { + super(uri, userId); + mValues = values; + mExtras = extras; } @Override public void onExecute(IContentProvider provider) throws Exception { - provider.update(resolveCallingPackage(), null, mUri, mContentValues, - ContentResolver.createSqlQueryBundle(mWhere, null)); + provider.update(resolveCallingPackage(), null, mUri, mValues, mExtras); } } diff --git a/cmds/idmap2/idmap2/CreateMultiple.cpp b/cmds/idmap2/idmap2/CreateMultiple.cpp index ba4ca62826b6..4b70acc2969c 100644 --- a/cmds/idmap2/idmap2/CreateMultiple.cpp +++ b/cmds/idmap2/idmap2/CreateMultiple.cpp @@ -22,6 +22,7 @@ #include <ostream> #include <vector> +#include "Commands.h" #include "android-base/stringprintf.h" #include "idmap2/BinaryStreamVisitor.h" #include "idmap2/CommandLineOptions.h" @@ -30,7 +31,6 @@ #include "idmap2/Policies.h" #include "idmap2/PolicyUtils.h" #include "idmap2/SysTrace.h" -#include "Commands.h" using android::ApkAssets; using android::base::StringPrintf; diff --git a/cmds/idmap2/idmap2d/Idmap2Service.cpp b/cmds/idmap2/idmap2d/Idmap2Service.cpp index 8f5e49d5b428..e55ea6c00545 100644 --- a/cmds/idmap2/idmap2d/Idmap2Service.cpp +++ b/cmds/idmap2/idmap2d/Idmap2Service.cpp @@ -93,7 +93,8 @@ Status Idmap2Service::removeIdmap(const std::string& overlay_apk_path, return ok(); } -Status Idmap2Service::verifyIdmap(const std::string& overlay_apk_path, +Status Idmap2Service::verifyIdmap(const std::string& target_apk_path, + const std::string& overlay_apk_path, int32_t fulfilled_policies ATTRIBUTE_UNUSED, bool enforce_overlayable ATTRIBUTE_UNUSED, int32_t user_id ATTRIBUTE_UNUSED, bool* _aidl_return) { @@ -103,10 +104,15 @@ Status Idmap2Service::verifyIdmap(const std::string& overlay_apk_path, std::ifstream fin(idmap_path); const std::unique_ptr<const IdmapHeader> header = IdmapHeader::FromBinaryStream(fin); fin.close(); - *_aidl_return = header && header->IsUpToDate(); + if (!header) { + *_aidl_return = false; + return error("failed to parse idmap header"); + } - // TODO(b/119328308): Check that the set of fulfilled policies of the overlay has not changed + *_aidl_return = + strcmp(header->GetTargetPath().data(), target_apk_path.data()) == 0 && header->IsUpToDate(); + // TODO(b/119328308): Check that the set of fulfilled policies of the overlay has not changed return ok(); } diff --git a/cmds/idmap2/idmap2d/Idmap2Service.h b/cmds/idmap2/idmap2d/Idmap2Service.h index b6f5136fc801..0ed55a1bb6a4 100644 --- a/cmds/idmap2/idmap2d/Idmap2Service.h +++ b/cmds/idmap2/idmap2d/Idmap2Service.h @@ -37,7 +37,8 @@ class Idmap2Service : public BinderService<Idmap2Service>, public BnIdmap2 { binder::Status removeIdmap(const std::string& overlay_apk_path, int32_t user_id, bool* _aidl_return) override; - binder::Status verifyIdmap(const std::string& overlay_apk_path, int32_t fulfilled_policies, + binder::Status verifyIdmap(const std::string& target_apk_path, + const std::string& overlay_apk_path, int32_t fulfilled_policies, bool enforce_overlayable, int32_t user_id, bool* _aidl_return) override; diff --git a/cmds/idmap2/idmap2d/aidl/android/os/IIdmap2.aidl b/cmds/idmap2/idmap2d/aidl/android/os/IIdmap2.aidl index f4cf65134023..156f1d70e015 100644 --- a/cmds/idmap2/idmap2d/aidl/android/os/IIdmap2.aidl +++ b/cmds/idmap2/idmap2d/aidl/android/os/IIdmap2.aidl @@ -22,8 +22,11 @@ package android.os; interface IIdmap2 { @utf8InCpp String getIdmapPath(@utf8InCpp String overlayApkPath, int userId); boolean removeIdmap(@utf8InCpp String overlayApkPath, int userId); - boolean verifyIdmap(@utf8InCpp String overlayApkPath, int fulfilledPolicies, - boolean enforceOverlayable, int userId); + boolean verifyIdmap(@utf8InCpp String targetApkPath, + @utf8InCpp String overlayApkPath, + int fulfilledPolicies, + boolean enforceOverlayable, + int userId); @nullable @utf8InCpp String createIdmap(@utf8InCpp String targetApkPath, @utf8InCpp String overlayApkPath, int fulfilledPolicies, diff --git a/cmds/incidentd/src/IncidentService.cpp b/cmds/incidentd/src/IncidentService.cpp index 6c2b8551bf73..9e6d0a23de10 100644 --- a/cmds/incidentd/src/IncidentService.cpp +++ b/cmds/incidentd/src/IncidentService.cpp @@ -152,6 +152,7 @@ void ReportHandler::handleMessage(const Message& message) { } void ReportHandler::schedulePersistedReport(const IncidentReportArgs& args) { + unique_lock<mutex> lock(mLock); mBatch->addPersistedReport(args); mHandlerLooper->removeMessages(this, WHAT_TAKE_REPORT); mHandlerLooper->sendMessage(this, Message(WHAT_TAKE_REPORT)); @@ -159,6 +160,7 @@ void ReportHandler::schedulePersistedReport(const IncidentReportArgs& args) { void ReportHandler::scheduleStreamingReport(const IncidentReportArgs& args, const sp<IIncidentReportStatusListener>& listener, int streamFd) { + unique_lock<mutex> lock(mLock); mBatch->addStreamingReport(args, listener, streamFd); mHandlerLooper->removeMessages(this, WHAT_TAKE_REPORT); mHandlerLooper->sendMessage(this, Message(WHAT_TAKE_REPORT)); diff --git a/cmds/incidentd/src/Section.cpp b/cmds/incidentd/src/Section.cpp index dec9cb0ad4ff..114cbb8d6460 100644 --- a/cmds/incidentd/src/Section.cpp +++ b/cmds/incidentd/src/Section.cpp @@ -755,7 +755,7 @@ status_t TombstoneSection::BlockingCall(unique_fd& pipeWriteFd) const { if (stat(link_name, &fileStat) != OK) { continue; } - size_t exe_name_len = readlink(link_name, exe_name, EXE_NAME_LEN); + ssize_t exe_name_len = readlink(link_name, exe_name, EXE_NAME_LEN); if (exe_name_len < 0 || exe_name_len >= EXE_NAME_LEN) { ALOGE("[%s] Can't read '%s': %s", name.string(), link_name, strerror(errno)); continue; diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp index 0bb1af13643c..4410f1c4570c 100644 --- a/cmds/screencap/screencap.cpp +++ b/cmds/screencap/screencap.cpp @@ -24,6 +24,7 @@ #include <linux/fb.h> #include <sys/ioctl.h> #include <sys/mman.h> +#include <sys/wait.h> #include <binder/ProcessState.h> @@ -99,11 +100,38 @@ static uint32_t dataSpaceToInt(ui::Dataspace d) } static status_t notifyMediaScanner(const char* fileName) { - String8 cmd("am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file://"); - cmd.append(fileName); - cmd.append(" > /dev/null"); - int result = system(cmd.string()); - if (result < 0) { + std::string filePath("file://"); + filePath.append(fileName); + char *cmd[] = { + (char*) "am", + (char*) "broadcast", + (char*) "am", + (char*) "android.intent.action.MEDIA_SCANNER_SCAN_FILE", + (char*) "-d", + &filePath[0], + nullptr + }; + + int status; + int pid = fork(); + if (pid < 0){ + fprintf(stderr, "Unable to fork in order to send intent for media scanner.\n"); + return UNKNOWN_ERROR; + } + if (pid == 0){ + int fd = open("/dev/null", O_WRONLY); + if (fd < 0){ + fprintf(stderr, "Unable to open /dev/null for media scanner stdout redirection.\n"); + exit(1); + } + dup2(fd, 1); + int result = execvp(cmd[0], cmd); + close(fd); + exit(result); + } + wait(&status); + + if (status < 0) { fprintf(stderr, "Unable to broadcast intent for media scanner.\n"); return UNKNOWN_ERROR; } diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp index 45f21ae8e3e1..776593d5c795 100644 --- a/cmds/statsd/Android.bp +++ b/cmds/statsd/Android.bp @@ -333,6 +333,7 @@ cc_test { "tests/external/puller_util_test.cpp", "tests/external/StatsCallbackPuller_test.cpp", "tests/external/StatsPuller_test.cpp", + "tests/external/StatsPullerManager_test.cpp", "tests/FieldValue_test.cpp", "tests/guardrail/StatsdStats_test.cpp", "tests/indexed_priority_queue_test.cpp", diff --git a/cmds/statsd/src/StatsLogProcessor.cpp b/cmds/statsd/src/StatsLogProcessor.cpp index 69b9fc7ad9a0..4966b2e1a018 100644 --- a/cmds/statsd/src/StatsLogProcessor.cpp +++ b/cmds/statsd/src/StatsLogProcessor.cpp @@ -536,6 +536,7 @@ void StatsLogProcessor::OnConfigUpdatedLocked( new MetricsManager(key, config, mTimeBaseNs, timestampNs, mUidMap, mPullerManager, mAnomalyAlarmMonitor, mPeriodicAlarmMonitor); if (newMetricsManager->isConfigValid()) { + newMetricsManager->init(); mUidMap->OnConfigUpdated(key); newMetricsManager->refreshTtl(timestampNs); mMetricsManagers[key] = newMetricsManager; diff --git a/cmds/statsd/src/StatsService.cpp b/cmds/statsd/src/StatsService.cpp index 812d10be4bf6..98879a05185d 100644 --- a/cmds/statsd/src/StatsService.cpp +++ b/cmds/statsd/src/StatsService.cpp @@ -385,9 +385,11 @@ void StatsService::print_cmd_help(int out) { dprintf(out, " PKG Optional package name to print the uids of the package\n"); dprintf(out, "\n"); dprintf(out, "\n"); - dprintf(out, "usage: adb shell cmd stats pull-source [int] \n"); + dprintf(out, "usage: adb shell cmd stats pull-source ATOM_TAG [PACKAGE] \n"); dprintf(out, "\n"); - dprintf(out, " Prints the output of a pulled metrics source (int indicates source)\n"); + dprintf(out, " Prints the output of a pulled atom\n"); + dprintf(out, " UID The atom to pull\n"); + dprintf(out, " PACKAGE The package to pull from. Default is AID_SYSTEM\n"); dprintf(out, "\n"); dprintf(out, "\n"); dprintf(out, "usage: adb shell cmd stats write-to-disk \n"); @@ -806,8 +808,21 @@ status_t StatsService::cmd_log_binary_push(int out, const Vector<String8>& args) status_t StatsService::cmd_print_pulled_metrics(int out, const Vector<String8>& args) { int s = atoi(args[1].c_str()); - vector<shared_ptr<LogEvent> > stats; - if (mPullerManager->Pull(s, &stats)) { + vector<int32_t> uids; + if (args.size() > 2) { + string package = string(args[2].c_str()); + auto it = UidMap::sAidToUidMapping.find(package); + if (it != UidMap::sAidToUidMapping.end()) { + uids.push_back(it->second); + } else { + set<int32_t> uids_set = mUidMap->getAppUid(package); + uids.insert(uids.end(), uids_set.begin(), uids_set.end()); + } + } else { + uids.push_back(AID_SYSTEM); + } + vector<shared_ptr<LogEvent>> stats; + if (mPullerManager->Pull(s, uids, &stats)) { for (const auto& it : stats) { dprintf(out, "Pull from %d: %s\n", s, it->ToString().c_str()); } diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index a14c012b2da3..9bba69c6e2ea 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -1725,7 +1725,7 @@ message BluetoothEnabledStateChanged { * Logged from: * packages/apps/Bluetooth/src/com/android/bluetooth/btservice/RemoteDevices.java * - * Next Tag: 5 + * Next Tag: 6 */ message BluetoothConnectionStateChanged { // The state of the connection. @@ -1747,6 +1747,15 @@ message BluetoothConnectionStateChanged { // Size: 32 byte // Default: null or empty if the device identifier is not known optional bytes new_obfuscated_id = 4 [(android.os.statsd.log_mode) = MODE_BYTES]; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 5; } /** @@ -1755,7 +1764,7 @@ message BluetoothConnectionStateChanged { * Logged from: * packages/apps/Bluetooth/src/com/android/bluetooth/btservice/AdapterProperties.java * - * Next Tag: 3 + * Next Tag: 4 */ message BluetoothAclConnectionStateChanged { // An identifier that can be used to match events for this device. @@ -1768,6 +1777,15 @@ message BluetoothAclConnectionStateChanged { // The state of the connection. // Eg: CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED. optional android.bluetooth.ConnectionStateEnum state = 2; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 3; } /** @@ -1777,7 +1795,7 @@ message BluetoothAclConnectionStateChanged { * packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetStateMachine.java * packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetClientStateMachine.java * - * Next Tag: 4 + * Next Tag: 5 */ message BluetoothScoConnectionStateChanged { // An identifier that can be used to match events for this device. @@ -1793,6 +1811,15 @@ message BluetoothScoConnectionStateChanged { // Codec used for this SCO connection // Default: UNKNOWN optional android.bluetooth.hfp.ScoCodec codec = 3; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 4; } /** @@ -1814,6 +1841,15 @@ message BluetoothActiveDeviceChanged { // Size: 32 byte // Default: null or empty if there is no active device for this profile optional bytes obfuscated_id = 2 [(android.os.statsd.log_mode) = MODE_BYTES]; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 3; } // Logs when there is an event affecting Bluetooth device's link layer connection. @@ -1897,6 +1933,15 @@ message BluetoothLinkLayerConnectionEvent { // HCI reason code associated with this event // Default: STATUS_UNKNOWN optional android.bluetooth.hci.StatusEnum reason_code = 9; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 10; } /** @@ -1955,6 +2000,15 @@ message BluetoothA2dpPlaybackStateChanged { // Current audio coding mode // Default: AUDIO_CODING_MODE_UNKNOWN optional android.bluetooth.a2dp.AudioCodingModeEnum audio_coding_mode = 3; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 4; } /** @@ -1993,6 +2047,15 @@ message BluetoothA2dpCodecConfigChanged { optional int64 codec_specific_2 = 8; optional int64 codec_specific_3 = 9; optional int64 codec_specific_4 = 10; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 11; } /** @@ -2035,6 +2098,15 @@ message BluetoothA2dpCodecCapabilityChanged { optional int64 codec_specific_2 = 8; optional int64 codec_specific_3 = 9; optional int64 codec_specific_4 = 10; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 11; } /** @@ -2058,6 +2130,15 @@ message BluetoothA2dpAudioUnderrunReported { // Number of bytes of PCM data that could not be read from the source // Default: 0 optional int32 num_missing_pcm_bytes = 3; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 4; } /** @@ -2088,6 +2169,15 @@ message BluetoothA2dpAudioOverrunReported { // Number of encoded bytes dropped in this event // Default: 0 optional int32 num_dropped_encoded_bytes = 5; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 6; } /** @@ -2119,6 +2209,15 @@ message BluetoothDeviceRssiReported { // Units: dBm // Invalid when an out of range value is reported optional int32 rssi = 4; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 5; } /** @@ -2146,6 +2245,15 @@ message BluetoothDeviceFailedContactCounterReported { // Range: uint16_t, 0-0xFFFF // Default: 0xFFFFF optional int32 failed_contact_counter = 4; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 5; } /** @@ -2173,6 +2281,15 @@ message BluetoothDeviceTxPowerLevelReported { // Units: dBm // Invalid when an out of range value is reported optional int32 transmit_power_level = 4; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 5; } /** @@ -2302,6 +2419,15 @@ message BluetoothDeviceInfoReported { optional string hardware_version = 6; // Software version of this device optional string software_version = 7; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 8; } /** @@ -2355,6 +2481,15 @@ message BluetoothSdpAttributeReported { optional int32 attribute_id = 3; // Attribute value for the particular attribute optional bytes attribute_value = 4 [(android.os.statsd.log_mode) = MODE_BYTES]; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 5; } /** @@ -2387,6 +2522,15 @@ message BluetoothBondStateChanged { // Unbond Reason // Default: UNBOND_REASON_UNKNOWN optional android.bluetooth.UnbondReasonEnum unbond_reason = 6; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 7; } /** @@ -2422,6 +2566,15 @@ message BluetoothClassicPairingEventReported { // A status value related to this specific event // Default: 0 optional int64 event_value = 7; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 8; } /** @@ -2447,6 +2600,15 @@ message BluetoothSmpPairingEventReported { // SMP failure reason code // Default: PAIRING_FAIL_REASON_DEFAULT optional android.bluetooth.smp.PairingFailReasonEnum smp_fail_reason = 4; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 5; } /** @@ -2485,6 +2647,15 @@ message BluetoothSocketConnectionStateChanged { optional int32 server_port = 8; // Whether this is a server listener socket optional android.bluetooth.SocketRoleEnum is_server = 9; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 10; } /** @@ -2508,6 +2679,15 @@ message BluetoothClassOfDeviceReported { // Also defined in: https://developer.android.com/reference/android/bluetooth/BluetoothClass // Default: 0 optional int32 class_of_device = 2; + // An identifier that can be used to match events for this device. + // The incremental identifier is locally generated and guaranteed not derived + // from any globally unique hardware id. + // For paired devices, it stays consistent between Bluetooth toggling for the + // same remote device. + // For unpaired devices, it stays consistent within the same Bluetooth adapter + // session for the same remote device. + // Default: 0 if the device's metric id is unknown. + optional int32 metric_id = 3; } /** @@ -2753,21 +2933,32 @@ message PhoneStateChanged { message BackGesture { enum BackType { - DEFAULT_BACK_TYPE = 0; - COMPLETED = 1; - COMPLETED_REJECTED = 2; // successful because coming from rejected area - INCOMPLETE_EXCLUDED = 3; // would have been successful but in the exclusion area - INCOMPLETE = 4; + DEFAULT_BACK_TYPE = 0; + COMPLETED = 1; + COMPLETED_REJECTED = 2; // successful because coming from rejected area + INCOMPLETE_EXCLUDED = 3; // would have been successful but in the exclusion area + INCOMPLETE = 4; // Unsuccessful, for reasons other than below. + INCOMPLETE_FAR_FROM_EDGE = 5; // Unsuccessful, far from the edge. + INCOMPLETE_MULTI_TOUCH = 6; // Unsuccessful, multi touch. + INCOMPLETE_LONG_PRESS = 7; // Unsuccessful, long press. + INCOMPLETE_VERTICAL_MOVE = 8; // Unsuccessful, move vertically. } optional BackType type = 1; - optional int32 y_coordinate = 2; // y coordinate for ACTION_DOWN event + optional int32 y_coordinate = 2 [deprecated = true]; // y coordinate for ACTION_DOWN event + optional int32 start_x = 4; // X coordinate for ACTION_DOWN event. + optional int32 start_y = 5; // Y coordinate for ACTION_DOWN event. + optional int32 end_x = 6; // X coordinate for ACTION_MOVE event. + optional int32 end_y = 7; // Y coordinate for ACTION_MOVE event. + optional int32 left_boundary = 8; // left edge width + left inset + optional int32 right_boundary = 9; // screen width - (right edge width + right inset) + enum WindowHorizontalLocation { DEFAULT_LOCATION = 0; LEFT = 1; RIGHT = 2; } - optional WindowHorizontalLocation x_location = 3; + optional WindowHorizontalLocation x_location = 3 [deprecated = true]; } message ExclusionRectStateChanged { diff --git a/apex/sdkextensions/framework/java/android/os/ext/test/Test.java b/cmds/statsd/src/external/PullUidProvider.h index 1715f498be1e..2318c501ea4b 100644 --- a/apex/sdkextensions/framework/java/android/os/ext/test/Test.java +++ b/cmds/statsd/src/external/PullUidProvider.h @@ -13,41 +13,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#pragma once -package android.os.ext.test; +#include <utils/RefBase.h> -import android.annotation.SystemApi; +#include "StatsPuller.h" +#include "logd/LogEvent.h" -/** - * This class exists temporarily to verify SDK updates are working properly. - * @deprecated Do not use. - */ -@Deprecated -public class Test { - - public Test() { } - - /** @hide */ - public void testA() {} - - /** @hide */ - public void testB() {} - - /** @hide */ - public void testC() {} - - /** @hide */ - @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public void testD() {} - - public void testE() {} +namespace android { +namespace os { +namespace statsd { - /** @hide */ - @SystemApi - public void testF() {} +class PullUidProvider : virtual public RefBase { +public: + virtual ~PullUidProvider() {} - /** @hide */ - @SystemApi - public void testG() {} + /** + * @param atomId The atom for which to get the uids. + */ + virtual vector<int32_t> getPullAtomUids(int32_t atomId) = 0; +}; -} +} // namespace statsd +} // namespace os +} // namespace android diff --git a/cmds/statsd/src/external/StatsPullerManager.cpp b/cmds/statsd/src/external/StatsPullerManager.cpp index 8b6a5a17bc0e..a3701a77f27a 100644 --- a/cmds/statsd/src/external/StatsPullerManager.cpp +++ b/cmds/statsd/src/external/StatsPullerManager.cpp @@ -47,27 +47,73 @@ const int64_t NO_ALARM_UPDATE = INT64_MAX; StatsPullerManager::StatsPullerManager() : kAllPullAtomInfo({ // TrainInfo. - {{.atomTag = util::TRAIN_INFO}, new TrainInfoPuller()}, + {{.atomTag = util::TRAIN_INFO, .uid = -1}, new TrainInfoPuller()}, }), mNextPullTimeNs(NO_ALARM_UPDATE) { } -bool StatsPullerManager::Pull(int tagId, vector<shared_ptr<LogEvent>>* data) { - AutoMutex _l(mLock); - return PullLocked(tagId, data); +bool StatsPullerManager::Pull(int tagId, const ConfigKey& configKey, + vector<shared_ptr<LogEvent>>* data, bool useUids) { + std::lock_guard<std::mutex> _l(mLock); + return PullLocked(tagId, configKey, data, useUids); } -bool StatsPullerManager::PullLocked(int tagId, vector<shared_ptr<LogEvent>>* data) { - VLOG("Initiating pulling %d", tagId); +bool StatsPullerManager::Pull(int tagId, const vector<int32_t>& uids, + vector<std::shared_ptr<LogEvent>>* data, bool useUids) { + std::lock_guard<std::mutex> _l(mLock); + return PullLocked(tagId, uids, data, useUids); +} + +bool StatsPullerManager::PullLocked(int tagId, const ConfigKey& configKey, + vector<shared_ptr<LogEvent>>* data, bool useUids) { + vector<int32_t> uids; + if (useUids) { + auto uidProviderIt = mPullUidProviders.find(configKey); + if (uidProviderIt == mPullUidProviders.end()) { + ALOGE("Error pulling tag %d. No pull uid provider for config key %s", tagId, + configKey.ToString().c_str()); + return false; + } + sp<PullUidProvider> pullUidProvider = uidProviderIt->second.promote(); + if (pullUidProvider == nullptr) { + ALOGE("Error pulling tag %d, pull uid provider for config %s is gone.", tagId, + configKey.ToString().c_str()); + return false; + } + uids = pullUidProvider->getPullAtomUids(tagId); + } + return PullLocked(tagId, uids, data, useUids); +} - if (kAllPullAtomInfo.find({.atomTag = tagId}) != kAllPullAtomInfo.end()) { - bool ret = kAllPullAtomInfo.find({.atomTag = tagId})->second->Pull(data); - VLOG("pulled %d items", (int)data->size()); - if (!ret) { - StatsdStats::getInstance().notePullFailed(tagId); +bool StatsPullerManager::PullLocked(int tagId, const vector<int32_t>& uids, + vector<shared_ptr<LogEvent>>* data, bool useUids) { + VLOG("Initiating pulling %d", tagId); + if (useUids) { + for (int32_t uid : uids) { + PullerKey key = {.atomTag = tagId, .uid = uid}; + auto pullerIt = kAllPullAtomInfo.find(key); + if (pullerIt != kAllPullAtomInfo.end()) { + bool ret = pullerIt->second->Pull(data); + VLOG("pulled %zu items", data->size()); + if (!ret) { + StatsdStats::getInstance().notePullFailed(tagId); + } + return ret; + } } - return ret; + ALOGW("StatsPullerManager: Unknown tagId %d", tagId); + return false; // Return early since we don't know what to pull. } else { + PullerKey key = {.atomTag = tagId, .uid = -1}; + auto pullerIt = kAllPullAtomInfo.find(key); + if (pullerIt != kAllPullAtomInfo.end()) { + bool ret = pullerIt->second->Pull(data); + VLOG("pulled %zu items", data->size()); + if (!ret) { + StatsdStats::getInstance().notePullFailed(tagId); + } + return ret; + } ALOGW("StatsPullerManager: Unknown tagId %d", tagId); return false; // Return early since we don't know what to pull. } @@ -96,7 +142,7 @@ void StatsPullerManager::updateAlarmLocked() { void StatsPullerManager::SetStatsCompanionService( shared_ptr<IStatsCompanionService> statsCompanionService) { - AutoMutex _l(mLock); + std::lock_guard<std::mutex> _l(mLock); shared_ptr<IStatsCompanionService> tmpForLock = mStatsCompanionService; mStatsCompanionService = statsCompanionService; for (const auto& pulledAtom : kAllPullAtomInfo) { @@ -107,10 +153,11 @@ void StatsPullerManager::SetStatsCompanionService( } } -void StatsPullerManager::RegisterReceiver(int tagId, wp<PullDataReceiver> receiver, - int64_t nextPullTimeNs, int64_t intervalNs) { - AutoMutex _l(mLock); - auto& receivers = mReceivers[tagId]; +void StatsPullerManager::RegisterReceiver(int tagId, const ConfigKey& configKey, + wp<PullDataReceiver> receiver, int64_t nextPullTimeNs, + int64_t intervalNs) { + std::lock_guard<std::mutex> _l(mLock); + auto& receivers = mReceivers[{.atomTag = tagId, .configKey = configKey}]; for (auto it = receivers.begin(); it != receivers.end(); it++) { if (it->receiver == receiver) { VLOG("Receiver already registered of %d", (int)receivers.size()); @@ -142,13 +189,15 @@ void StatsPullerManager::RegisterReceiver(int tagId, wp<PullDataReceiver> receiv VLOG("Puller for tagId %d registered of %d", tagId, (int)receivers.size()); } -void StatsPullerManager::UnRegisterReceiver(int tagId, wp<PullDataReceiver> receiver) { - AutoMutex _l(mLock); - if (mReceivers.find(tagId) == mReceivers.end()) { +void StatsPullerManager::UnRegisterReceiver(int tagId, const ConfigKey& configKey, + wp<PullDataReceiver> receiver) { + std::lock_guard<std::mutex> _l(mLock); + auto receiversIt = mReceivers.find({.atomTag = tagId, .configKey = configKey}); + if (receiversIt == mReceivers.end()) { VLOG("Unknown pull code or no receivers: %d", tagId); return; } - auto& receivers = mReceivers.find(tagId)->second; + std::list<ReceiverInfo>& receivers = receiversIt->second; for (auto it = receivers.begin(); it != receivers.end(); it++) { if (receiver == it->receiver) { receivers.erase(it); @@ -158,16 +207,26 @@ void StatsPullerManager::UnRegisterReceiver(int tagId, wp<PullDataReceiver> rece } } +void StatsPullerManager::RegisterPullUidProvider(const ConfigKey& configKey, + wp<PullUidProvider> provider) { + std::lock_guard<std::mutex> _l(mLock); + mPullUidProviders[configKey] = provider; +} + +void StatsPullerManager::UnregisterPullUidProvider(const ConfigKey& configKey) { + std::lock_guard<std::mutex> _l(mLock); + mPullUidProviders.erase(configKey); +} + void StatsPullerManager::OnAlarmFired(int64_t elapsedTimeNs) { - AutoMutex _l(mLock); + std::lock_guard<std::mutex> _l(mLock); int64_t wallClockNs = getWallClockNs(); int64_t minNextPullTimeNs = NO_ALARM_UPDATE; - vector<pair<int, vector<ReceiverInfo*>>> needToPull = - vector<pair<int, vector<ReceiverInfo*>>>(); + vector<pair<const ReceiverKey*, vector<ReceiverInfo*>>> needToPull; for (auto& pair : mReceivers) { - vector<ReceiverInfo*> receivers = vector<ReceiverInfo*>(); + vector<ReceiverInfo*> receivers; if (pair.second.size() != 0) { for (ReceiverInfo& receiverInfo : pair.second) { if (receiverInfo.nextPullTimeNs <= elapsedTimeNs) { @@ -179,17 +238,16 @@ void StatsPullerManager::OnAlarmFired(int64_t elapsedTimeNs) { } } if (receivers.size() > 0) { - needToPull.push_back(make_pair(pair.first, receivers)); + needToPull.push_back(make_pair(&pair.first, receivers)); } } } - for (const auto& pullInfo : needToPull) { vector<shared_ptr<LogEvent>> data; - bool pullSuccess = PullLocked(pullInfo.first, &data); + bool pullSuccess = PullLocked(pullInfo.first->atomTag, pullInfo.first->configKey, &data); if (pullSuccess) { - StatsdStats::getInstance().notePullDelay( - pullInfo.first, getElapsedRealtimeNs() - elapsedTimeNs); + StatsdStats::getInstance().notePullDelay(pullInfo.first->atomTag, + getElapsedRealtimeNs() - elapsedTimeNs); } else { VLOG("pull failed at %lld, will try again later", (long long)elapsedTimeNs); } @@ -248,18 +306,21 @@ int StatsPullerManager::ClearPullerCacheIfNecessary(int64_t timestampNs) { void StatsPullerManager::RegisterPullAtomCallback(const int uid, const int32_t atomTag, const int64_t coolDownNs, const int64_t timeoutNs, const vector<int32_t>& additiveFields, - const shared_ptr<IPullAtomCallback>& callback) { - AutoMutex _l(mLock); + const shared_ptr<IPullAtomCallback>& callback, + bool useUid) { + std::lock_guard<std::mutex> _l(mLock); VLOG("RegisterPullerCallback: adding puller for tag %d", atomTag); // TODO(b/146439412): linkToDeath with the callback so that we can remove it // and delete the puller. StatsdStats::getInstance().notePullerCallbackRegistrationChanged(atomTag, /*registered=*/true); - kAllPullAtomInfo[{.atomTag = atomTag}] = - new StatsCallbackPuller(atomTag, callback, coolDownNs, timeoutNs, additiveFields); + int64_t actualCoolDownNs = coolDownNs < kMinCoolDownNs ? kMinCoolDownNs : coolDownNs; + int64_t actualTimeoutNs = timeoutNs > kMaxTimeoutNs ? kMaxTimeoutNs : timeoutNs; + kAllPullAtomInfo[{.atomTag = atomTag, .uid = useUid ? uid : -1}] = new StatsCallbackPuller( + atomTag, callback, actualCoolDownNs, actualTimeoutNs, additiveFields); } void StatsPullerManager::UnregisterPullAtomCallback(const int uid, const int32_t atomTag) { - AutoMutex _l(mLock); + std::lock_guard<std::mutex> _l(mLock); StatsdStats::getInstance().notePullerCallbackRegistrationChanged(atomTag, /*registered=*/false); kAllPullAtomInfo.erase({.atomTag = atomTag}); } diff --git a/cmds/statsd/src/external/StatsPullerManager.h b/cmds/statsd/src/external/StatsPullerManager.h index e06776623455..c5824a8de17a 100644 --- a/cmds/statsd/src/external/StatsPullerManager.h +++ b/cmds/statsd/src/external/StatsPullerManager.h @@ -19,15 +19,16 @@ #include <aidl/android/os/IPullAtomCallback.h> #include <aidl/android/os/IStatsCompanionService.h> #include <utils/RefBase.h> -#include <utils/threads.h> #include <list> #include <vector> #include "PullDataReceiver.h" +#include "PullUidProvider.h" #include "StatsPuller.h" #include "guardrail/StatsdStats.h" #include "logd/LogEvent.h" +#include "packages/UidMap.h" using aidl::android::os::IPullAtomCallback; using aidl::android::os::IStatsCompanionService; @@ -65,13 +66,23 @@ public: virtual ~StatsPullerManager() { } + // Registers a receiver for tagId. It will be pulled on the nextPullTimeNs // and then every intervalNs thereafter. - virtual void RegisterReceiver(int tagId, wp<PullDataReceiver> receiver, int64_t nextPullTimeNs, + virtual void RegisterReceiver(int tagId, const ConfigKey& configKey, + wp<PullDataReceiver> receiver, int64_t nextPullTimeNs, int64_t intervalNs); // Stop listening on a tagId. - virtual void UnRegisterReceiver(int tagId, wp<PullDataReceiver> receiver); + virtual void UnRegisterReceiver(int tagId, const ConfigKey& configKey, + wp<PullDataReceiver> receiver); + + // Registers a pull uid provider for the config key. When pulling atoms, it will be used to + // determine which atoms to pull from. + virtual void RegisterPullUidProvider(const ConfigKey& configKey, wp<PullUidProvider> provider); + + // Unregister a pull uid provider. + virtual void UnregisterPullUidProvider(const ConfigKey& configKey); // Verify if we know how to pull for this matcher bool PullerForMatcherExists(int tagId) const; @@ -85,9 +96,16 @@ public: // Returns false when // 1) the pull fails // 2) pull takes longer than mPullTimeoutNs (intrinsic to puller) + // 3) Either a PullUidProvider was not registered for the config, or the there was no puller + // registered for any of the uids for this atom. // If the metric wants to make any change to the data, like timestamps, they // should make a copy as this data may be shared with multiple metrics. - virtual bool Pull(int tagId, vector<std::shared_ptr<LogEvent>>* data); + virtual bool Pull(int tagId, const ConfigKey& configKey, + vector<std::shared_ptr<LogEvent>>* data, bool useUids = false); + + // Same as above, but directly specify the allowed uids to pull from. + virtual bool Pull(int tagId, const vector<int32_t>& uids, + vector<std::shared_ptr<LogEvent>>* data, bool useUids = false); // Clear pull data cache immediately. int ForceClearPullerCache(); @@ -99,28 +117,48 @@ public: void RegisterPullAtomCallback(const int uid, const int32_t atomTag, const int64_t coolDownNs, const int64_t timeoutNs, const vector<int32_t>& additiveFields, - const shared_ptr<IPullAtomCallback>& callback); + const shared_ptr<IPullAtomCallback>& callback, + bool useUid = false); void UnregisterPullAtomCallback(const int uid, const int32_t atomTag); std::map<const PullerKey, sp<StatsPuller>> kAllPullAtomInfo; private: + const static int64_t kMinCoolDownNs = NS_PER_SEC; + const static int64_t kMaxTimeoutNs = 10 * NS_PER_SEC; shared_ptr<IStatsCompanionService> mStatsCompanionService = nullptr; + // A struct containing an atom id and a Config Key + typedef struct ReceiverKey { + const int atomTag; + const ConfigKey configKey; + + inline bool operator<(const ReceiverKey& that) const { + return atomTag == that.atomTag ? configKey < that.configKey : atomTag < that.atomTag; + } + } ReceiverKey; + typedef struct { int64_t nextPullTimeNs; int64_t intervalNs; wp<PullDataReceiver> receiver; } ReceiverInfo; - // mapping from simple matcher tagId to receivers - std::map<int, std::list<ReceiverInfo>> mReceivers; + // mapping from Receiver Key to receivers + std::map<ReceiverKey, std::list<ReceiverInfo>> mReceivers; + + // mapping from Config Key to the PullUidProvider for that config + std::map<ConfigKey, wp<PullUidProvider>> mPullUidProviders; + + bool PullLocked(int tagId, const ConfigKey& configKey, vector<std::shared_ptr<LogEvent>>* data, + bool useUids = false); - bool PullLocked(int tagId, vector<std::shared_ptr<LogEvent>>* data); + bool PullLocked(int tagId, const vector<int32_t>& uids, vector<std::shared_ptr<LogEvent>>* data, + bool useUids); // locks for data receiver and StatsCompanionService changes - Mutex mLock; + std::mutex mLock; void updateAlarmLocked(); diff --git a/cmds/statsd/src/guardrail/StatsdStats.h b/cmds/statsd/src/guardrail/StatsdStats.h index df810aa03958..25794c843230 100644 --- a/cmds/statsd/src/guardrail/StatsdStats.h +++ b/cmds/statsd/src/guardrail/StatsdStats.h @@ -119,6 +119,8 @@ public: const static int kMaxLogSourceCount = 50; + const static int kMaxPullAtomPackages = 100; + // Max memory allowed for storing metrics per configuration. If this limit is exceeded, statsd // drops the metrics data in memory. static const size_t kMaxMetricsBytesPerConfig = 2 * 1024 * 1024; diff --git a/cmds/statsd/src/logd/LogEvent.cpp b/cmds/statsd/src/logd/LogEvent.cpp index b515d0a5b72f..3b3d0b64bfb3 100644 --- a/cmds/statsd/src/logd/LogEvent.cpp +++ b/cmds/statsd/src/logd/LogEvent.cpp @@ -504,12 +504,12 @@ bool LogEvent::parseBuffer(uint8_t* buf, size_t len) { typeInfo = readNextValue<uint8_t>(); if (getTypeId(typeInfo) != INT64_TYPE) mValid = false; mElapsedTimestampNs = readNextValue<int64_t>(); - parseAnnotations(getNumAnnotations(typeInfo)); // atom-level annotations numElements--; typeInfo = readNextValue<uint8_t>(); if (getTypeId(typeInfo) != INT32_TYPE) mValid = false; mTagId = readNextValue<int32_t>(); + parseAnnotations(getNumAnnotations(typeInfo)); // atom-level annotations numElements--; diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp index 5c606bc98235..42bbd8eb4d35 100644 --- a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp +++ b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp @@ -75,11 +75,9 @@ GaugeMetricProducer::GaugeMetricProducer( const int atomId, const int64_t timeBaseNs, const int64_t startTimeNs, const sp<StatsPullerManager>& pullerManager, const unordered_map<int, shared_ptr<Activation>>& eventActivationMap, - const unordered_map<int, vector<shared_ptr<Activation>>>& eventDeactivationMap, - const vector<int>& slicedStateAtoms, - const unordered_map<int, unordered_map<int, int64_t>>& stateGroupMap) + const unordered_map<int, vector<shared_ptr<Activation>>>& eventDeactivationMap) : MetricProducer(metric.id(), key, timeBaseNs, conditionIndex, wizard, eventActivationMap, - eventDeactivationMap, slicedStateAtoms, stateGroupMap), + eventDeactivationMap, /*slicedStateAtoms=*/{}, /*stateGroupMap=*/{}), mWhatMatcherIndex(whatMatcherIndex), mEventMatcherWizard(matcherWizard), mPullerManager(pullerManager), @@ -135,15 +133,12 @@ GaugeMetricProducer::GaugeMetricProducer( flushIfNeededLocked(startTimeNs); // Kicks off the puller immediately. if (mIsPulled && mSamplingType == GaugeMetric::RANDOM_ONE_SAMPLE) { - mPullerManager->RegisterReceiver(mPullTagId, this, getCurrentBucketEndTimeNs(), + mPullerManager->RegisterReceiver(mPullTagId, mConfigKey, this, getCurrentBucketEndTimeNs(), mBucketSizeNs); } // Adjust start for partial first bucket and then pull if needed mCurrentBucketStartTimeNs = startTimeNs; - if (mIsActive && mIsPulled && mSamplingType == GaugeMetric::RANDOM_ONE_SAMPLE) { - pullAndMatchEventsLocked(mCurrentBucketStartTimeNs); - } VLOG("Gauge metric %lld created. bucket size %lld start_time: %lld sliced %d", (long long)metric.id(), (long long)mBucketSizeNs, (long long)mTimeBaseNs, @@ -153,7 +148,7 @@ GaugeMetricProducer::GaugeMetricProducer( GaugeMetricProducer::~GaugeMetricProducer() { VLOG("~GaugeMetricProducer() called"); if (mIsPulled && mSamplingType == GaugeMetric::RANDOM_ONE_SAMPLE) { - mPullerManager->UnRegisterReceiver(mPullTagId, this); + mPullerManager->UnRegisterReceiver(mPullTagId, mConfigKey, this); } } @@ -298,6 +293,11 @@ void GaugeMetricProducer::onDumpReportLocked(const int64_t dumpTimeNs, } } +void GaugeMetricProducer::prepareFirstBucketLocked() { + if (mIsActive && mIsPulled && mSamplingType == GaugeMetric::RANDOM_ONE_SAMPLE) { + pullAndMatchEventsLocked(mCurrentBucketStartTimeNs); + } +} void GaugeMetricProducer::pullAndMatchEventsLocked(const int64_t timestampNs) { bool triggerPuller = false; @@ -323,7 +323,7 @@ void GaugeMetricProducer::pullAndMatchEventsLocked(const int64_t timestampNs) { return; } vector<std::shared_ptr<LogEvent>> allData; - if (!mPullerManager->Pull(mPullTagId, &allData)) { + if (!mPullerManager->Pull(mPullTagId, mConfigKey, &allData)) { ALOGE("Gauge Stats puller failed for tag: %d at %lld", mPullTagId, (long long)timestampNs); return; } diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.h b/cmds/statsd/src/metrics/GaugeMetricProducer.h index 284bcc5d10aa..79ec71120f18 100644 --- a/cmds/statsd/src/metrics/GaugeMetricProducer.h +++ b/cmds/statsd/src/metrics/GaugeMetricProducer.h @@ -64,9 +64,7 @@ public: const int64_t startTimeNs, const sp<StatsPullerManager>& pullerManager, const std::unordered_map<int, std::shared_ptr<Activation>>& eventActivationMap = {}, const std::unordered_map<int, std::vector<std::shared_ptr<Activation>>>& - eventDeactivationMap = {}, - const vector<int>& slicedStateAtoms = {}, - const unordered_map<int, unordered_map<int, int64_t>>& stateGroupMap = {}); + eventDeactivationMap = {}); virtual ~GaugeMetricProducer(); @@ -129,6 +127,8 @@ private: void flushCurrentBucketLocked(const int64_t& eventTimeNs, const int64_t& nextBucketStartTimeNs) override; + void prepareFirstBucketLocked() override; + void pullAndMatchEventsLocked(const int64_t timestampNs); const int mWhatMatcherIndex; diff --git a/cmds/statsd/src/metrics/MetricProducer.h b/cmds/statsd/src/metrics/MetricProducer.h index d721514ed1f0..4c4cd8940b24 100644 --- a/cmds/statsd/src/metrics/MetricProducer.h +++ b/cmds/statsd/src/metrics/MetricProducer.h @@ -207,6 +207,11 @@ public: return clearPastBucketsLocked(dumpTimeNs); } + void prepareFirstBucket() { + std::lock_guard<std::mutex> lock(mMutex); + prepareFirstBucketLocked(); + } + // Returns the memory in bytes currently used to store this metric's data. Does not change // state. size_t byteSize() const { @@ -344,6 +349,7 @@ protected: std::set<string> *str_set, android::util::ProtoOutputStream* protoOutput) = 0; virtual void clearPastBucketsLocked(const int64_t dumpTimeNs) = 0; + virtual void prepareFirstBucketLocked(){}; virtual size_t byteSizeLocked() const = 0; virtual void dumpStatesLocked(FILE* out, bool verbose) const = 0; virtual void dropDataLocked(const int64_t dropTimeNs) = 0; diff --git a/cmds/statsd/src/metrics/MetricsManager.cpp b/cmds/statsd/src/metrics/MetricsManager.cpp index fca48f96f56d..8ed0cbc36779 100644 --- a/cmds/statsd/src/metrics/MetricsManager.cpp +++ b/cmds/statsd/src/metrics/MetricsManager.cpp @@ -70,6 +70,7 @@ MetricsManager::MetricsManager(const ConfigKey& key, const StatsdConfig& config, mTtlEndNs(-1), mLastReportTimeNs(currentTimeNs), mLastReportWallClockNs(getWallClockNs()), + mPullerManager(pullerManager), mShouldPersistHistory(config.persist_locally()) { // Init the ttl end timestamp. refreshTtl(timeBaseNs); @@ -86,6 +87,7 @@ MetricsManager::MetricsManager(const ConfigKey& key, const StatsdConfig& config, mVersionStringsInReport = config.version_strings_in_metric_report(); mInstallerInReport = config.installer_in_metric_report(); + // Init allowed pushed atom uids. if (config.allowed_log_source_size() == 0) { mConfigValid = false; ALOGE("Log source whitelist is empty! This config won't get any data. Suggest adding at " @@ -108,6 +110,40 @@ MetricsManager::MetricsManager(const ConfigKey& key, const StatsdConfig& config, } } + // Init default allowed pull atom uids. + int numPullPackages = 0; + for (const string& pullSource : config.default_pull_packages()) { + auto it = UidMap::sAidToUidMapping.find(pullSource); + if (it != UidMap::sAidToUidMapping.end()) { + numPullPackages++; + mDefaultPullUids.insert(it->second); + } else { + ALOGE("Default pull atom packages must be in sAidToUidMapping"); + mConfigValid = false; + } + } + // Init per-atom pull atom packages. + for (const PullAtomPackages& pullAtomPackages : config.pull_atom_packages()) { + int32_t atomId = pullAtomPackages.atom_id(); + for (const string& pullPackage : pullAtomPackages.packages()) { + numPullPackages++; + auto it = UidMap::sAidToUidMapping.find(pullPackage); + if (it != UidMap::sAidToUidMapping.end()) { + mPullAtomUids[atomId].insert(it->second); + } else { + mPullAtomPackages[atomId].insert(pullPackage); + } + } + } + if (numPullPackages > StatsdStats::kMaxPullAtomPackages) { + ALOGE("Too many sources in default_pull_packages and pull_atom_packages. This is likely to " + "be an error in the config"); + mConfigValid = false; + } else { + initPullAtomSources(); + } + mPullerManager->RegisterPullUidProvider(mConfigKey, this); + // Store the sub-configs used. for (const auto& annotation : config.annotation()) { mAnnotations.emplace_back(annotation.field_int64(), annotation.field_int32()); @@ -153,6 +189,7 @@ MetricsManager::~MetricsManager() { StateManager::getInstance().unregisterListener(atomId, it); } } + mPullerManager->UnregisterPullUidProvider(mConfigKey); VLOG("~MetricsManager()"); } @@ -173,6 +210,20 @@ void MetricsManager::initLogSourceWhiteList() { } } +void MetricsManager::initPullAtomSources() { + std::lock_guard<std::mutex> lock(mAllowedLogSourcesMutex); + mCombinedPullAtomUids.clear(); + for (const auto& [atomId, uids] : mPullAtomUids) { + mCombinedPullAtomUids[atomId].insert(uids.begin(), uids.end()); + } + for (const auto& [atomId, packages] : mPullAtomPackages) { + for (const string& pkg : packages) { + set<int32_t> uids = mUidMap->getAppUid(pkg); + mCombinedPullAtomUids[atomId].insert(uids.begin(), uids.end()); + } + } +} + bool MetricsManager::isConfigValid() const { return mConfigValid; } @@ -184,12 +235,18 @@ void MetricsManager::notifyAppUpgrade(const int64_t& eventTimeNs, const string& it->notifyAppUpgrade(eventTimeNs, apk, uid, version); } // check if we care this package - if (std::find(mAllowedPkg.begin(), mAllowedPkg.end(), apk) == mAllowedPkg.end()) { - return; + if (std::find(mAllowedPkg.begin(), mAllowedPkg.end(), apk) != mAllowedPkg.end()) { + // We will re-initialize the whole list because we don't want to keep the multi mapping of + // UID<->pkg inside MetricsManager to reduce the memory usage. + initLogSourceWhiteList(); + } + + for (const auto& it : mPullAtomPackages) { + if (it.second.find(apk) != it.second.end()) { + initPullAtomSources(); + return; + } } - // We will re-initialize the whole list because we don't want to keep the multi mapping of - // UID<->pkg inside MetricsManager to reduce the memory usage. - initLogSourceWhiteList(); } void MetricsManager::notifyAppRemoved(const int64_t& eventTimeNs, const string& apk, @@ -199,24 +256,49 @@ void MetricsManager::notifyAppRemoved(const int64_t& eventTimeNs, const string& it->notifyAppRemoved(eventTimeNs, apk, uid); } // check if we care this package - if (std::find(mAllowedPkg.begin(), mAllowedPkg.end(), apk) == mAllowedPkg.end()) { - return; + if (std::find(mAllowedPkg.begin(), mAllowedPkg.end(), apk) != mAllowedPkg.end()) { + // We will re-initialize the whole list because we don't want to keep the multi mapping of + // UID<->pkg inside MetricsManager to reduce the memory usage. + initLogSourceWhiteList(); + } + + for (const auto& it : mPullAtomPackages) { + if (it.second.find(apk) != it.second.end()) { + initPullAtomSources(); + return; + } } - // We will re-initialize the whole list because we don't want to keep the multi mapping of - // UID<->pkg inside MetricsManager to reduce the memory usage. - initLogSourceWhiteList(); } void MetricsManager::onUidMapReceived(const int64_t& eventTimeNs) { // Purposefully don't inform metric producers on a new snapshot // because we don't need to flush partial buckets. // This occurs if a new user is added/removed or statsd crashes. + initPullAtomSources(); + if (mAllowedPkg.size() == 0) { return; } initLogSourceWhiteList(); } +void MetricsManager::init() { + for (const auto& producer : mAllMetricProducers) { + producer->prepareFirstBucket(); + } +} + +vector<int32_t> MetricsManager::getPullAtomUids(int32_t atomId) { + std::lock_guard<std::mutex> lock(mAllowedLogSourcesMutex); + vector<int32_t> uids; + const auto& it = mCombinedPullAtomUids.find(atomId); + if (it != mCombinedPullAtomUids.end()) { + uids.insert(uids.end(), it->second.begin(), it->second.end()); + } + uids.insert(uids.end(), mDefaultPullUids.begin(), mDefaultPullUids.end()); + return uids; +} + void MetricsManager::dumpStates(FILE* out, bool verbose) { fprintf(out, "ConfigKey %s, allowed source:", mConfigKey.ToString().c_str()); { diff --git a/cmds/statsd/src/metrics/MetricsManager.h b/cmds/statsd/src/metrics/MetricsManager.h index 7500ec91ce30..291f97ba03b4 100644 --- a/cmds/statsd/src/metrics/MetricsManager.h +++ b/cmds/statsd/src/metrics/MetricsManager.h @@ -35,7 +35,7 @@ namespace os { namespace statsd { // A MetricsManager is responsible for managing metrics from one single config source. -class MetricsManager : public virtual android::RefBase { +class MetricsManager : public virtual android::RefBase, public virtual PullUidProvider { public: MetricsManager(const ConfigKey& configKey, const StatsdConfig& config, const int64_t timeBaseNs, const int64_t currentTimeNs, const sp<UidMap>& uidMap, @@ -69,6 +69,10 @@ public: void onUidMapReceived(const int64_t& eventTimeNs); + void init(); + + vector<int32_t> getPullAtomUids(int32_t atomId) override; + bool shouldWriteToDisk() const { return mNoReportMetricIds.size() != mAllMetricProducers.size(); } @@ -159,6 +163,8 @@ private: int64_t mLastReportTimeNs; int64_t mLastReportWallClockNs; + sp<StatsPullerManager> mPullerManager; + // The uid log sources from StatsdConfig. std::vector<int32_t> mAllowedUid; @@ -169,13 +175,27 @@ private: // Logs from uids that are not in the list will be ignored to avoid spamming. std::set<int32_t> mAllowedLogSources; + // To guard access to mAllowedLogSources + mutable std::mutex mAllowedLogSourcesMutex; + + // We can pull any atom from these uids. + std::set<int32_t> mDefaultPullUids; + + // Uids that specific atoms can pull from. + // This is a map<atom id, set<uids>> + std::map<int32_t, std::set<int32_t>> mPullAtomUids; + + // Packages that specific atoms can be pulled from. + std::map<int32_t, std::set<std::string>> mPullAtomPackages; + + // All uids to pull for this atom. NOTE: Does not include the default uids for memory. + std::map<int32_t, std::set<int32_t>> mCombinedPullAtomUids; + // Contains the annotations passed in with StatsdConfig. std::list<std::pair<const int64_t, const int32_t>> mAnnotations; const bool mShouldPersistHistory; - // To guard access to mAllowedLogSources - mutable std::mutex mAllowedLogSourcesMutex; // All event tags that are interesting to my metrics. std::set<int> mTagIds; @@ -238,6 +258,8 @@ private: void initLogSourceWhiteList(); + void initPullAtomSources(); + // The metrics that don't need to be uploaded or even reported. std::set<int64_t> mNoReportMetricIds; @@ -275,6 +297,8 @@ private: FRIEND_TEST(MetricActivationE2eTest, TestCountMetricWithSameDeactivation); FRIEND_TEST(MetricActivationE2eTest, TestCountMetricWithTwoMetricsTwoDeactivations); + FRIEND_TEST(MetricsManagerTest, TestLogSources); + FRIEND_TEST(StatsLogProcessorTest, TestActiveConfigMetricDiskWriteRead); FRIEND_TEST(StatsLogProcessorTest, TestActivationOnBoot); FRIEND_TEST(StatsLogProcessorTest, TestActivationOnBootMultipleActivations); diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.cpp b/cmds/statsd/src/metrics/ValueMetricProducer.cpp index dc9b41303894..f34423a27aff 100644 --- a/cmds/statsd/src/metrics/ValueMetricProducer.cpp +++ b/cmds/statsd/src/metrics/ValueMetricProducer.cpp @@ -156,7 +156,7 @@ ValueMetricProducer::ValueMetricProducer( flushIfNeededLocked(startTimeNs); if (mIsPulled) { - mPullerManager->RegisterReceiver(mPullTagId, this, getCurrentBucketEndTimeNs(), + mPullerManager->RegisterReceiver(mPullTagId, mConfigKey, this, getCurrentBucketEndTimeNs(), mBucketSizeNs); } @@ -166,10 +166,6 @@ ValueMetricProducer::ValueMetricProducer( mCurrentBucketStartTimeNs = startTimeNs; mConditionTimer.newBucketStart(mCurrentBucketStartTimeNs); - // Kicks off the puller immediately if condition is true and diff based. - if (mIsActive && mIsPulled && mCondition == ConditionState::kTrue && mUseDiff) { - pullAndMatchEventsLocked(mCurrentBucketStartTimeNs); - } // Now that activations are processed, start the condition timer if needed. mConditionTimer.onConditionChanged(mIsActive && mCondition == ConditionState::kTrue, mCurrentBucketStartTimeNs); @@ -181,7 +177,7 @@ ValueMetricProducer::ValueMetricProducer( ValueMetricProducer::~ValueMetricProducer() { VLOG("~ValueMetricProducer() called"); if (mIsPulled) { - mPullerManager->UnRegisterReceiver(mPullTagId, this); + mPullerManager->UnRegisterReceiver(mPullTagId, mConfigKey, this); } } @@ -503,9 +499,16 @@ void ValueMetricProducer::onConditionChangedLocked(const bool condition, mConditionTimer.onConditionChanged(mCondition, eventTimeNs); } +void ValueMetricProducer::prepareFirstBucketLocked() { + // Kicks off the puller immediately if condition is true and diff based. + if (mIsActive && mIsPulled && mCondition == ConditionState::kTrue && mUseDiff) { + pullAndMatchEventsLocked(mCurrentBucketStartTimeNs); + } +} + void ValueMetricProducer::pullAndMatchEventsLocked(const int64_t timestampNs) { vector<std::shared_ptr<LogEvent>> allData; - if (!mPullerManager->Pull(mPullTagId, &allData)) { + if (!mPullerManager->Pull(mPullTagId, mConfigKey, &allData)) { ALOGE("Stats puller failed for tag: %d at %lld", mPullTagId, (long long)timestampNs); invalidateCurrentBucket(timestampNs, BucketDropReason::PULL_FAILED); return; diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.h b/cmds/statsd/src/metrics/ValueMetricProducer.h index 50317b341843..e9273dc54424 100644 --- a/cmds/statsd/src/metrics/ValueMetricProducer.h +++ b/cmds/statsd/src/metrics/ValueMetricProducer.h @@ -122,6 +122,8 @@ private: void flushCurrentBucketLocked(const int64_t& eventTimeNs, const int64_t& nextBucketStartTimeNs) override; + void prepareFirstBucketLocked() override; + void dropDataLocked(const int64_t dropTimeNs) override; // Calculate previous bucket end time based on current time. diff --git a/cmds/statsd/src/metrics/metrics_manager_util.cpp b/cmds/statsd/src/metrics/metrics_manager_util.cpp index e5fe87acc720..3810c486cf88 100644 --- a/cmds/statsd/src/metrics/metrics_manager_util.cpp +++ b/cmds/statsd/src/metrics/metrics_manager_util.cpp @@ -803,9 +803,8 @@ bool initMetrics(const ConfigKey& key, const StatsdConfig& config, const int64_t if (!success) return false; sp<MetricProducer> gaugeProducer = new GaugeMetricProducer( - key, metric, conditionIndex, wizard, - trackerIndex, matcherWizard, pullTagId, triggerAtomId, atomTagId, - timeBaseTimeNs, currentTimeNs, pullerManager, + key, metric, conditionIndex, wizard, trackerIndex, matcherWizard, pullTagId, + triggerAtomId, atomTagId, timeBaseTimeNs, currentTimeNs, pullerManager, eventActivationMap, eventDeactivationMap); allMetricProducers.push_back(gaugeProducer); } @@ -964,6 +963,7 @@ bool initStatsdConfig(const ConfigKey& key, const StatsdConfig& config, UidMap& ALOGE("initConditionTrackers failed"); return false; } + if (!initStates(config, stateAtomIdMap, allStateGroupMaps)) { ALOGE("initStates failed"); return false; diff --git a/cmds/statsd/src/packages/UidMap.cpp b/cmds/statsd/src/packages/UidMap.cpp index ab0e86e24b02..acf40c88a00d 100644 --- a/cmds/statsd/src/packages/UidMap.cpp +++ b/cmds/statsd/src/packages/UidMap.cpp @@ -545,7 +545,15 @@ const std::map<string, uint32_t> UidMap::sAidToUidMapping = {{"AID_ROOT", 0}, {"AID_LMKD", 1069}, {"AID_LLKD", 1070}, {"AID_IORAPD", 1071}, + {"AID_GPU_SERVICE", 1072}, {"AID_NETWORK_STACK", 1073}, + {"AID_GSID", 1074}, + {"AID_FSVERITY_CERT", 1075}, + {"AID_CREDSTORE", 1076}, + {"AID_EXTERNAL_STORAGE", 1077}, + {"AID_EXT_DATA_RW", 1078}, + {"AID_EXT_OBB_RW", 1079}, + {"AID_CONTEXT_HUB", 1080}, {"AID_SHELL", 2000}, {"AID_CACHE", 2001}, {"AID_DIAG", 2002}}; diff --git a/cmds/statsd/src/packages/UidMap.h b/cmds/statsd/src/packages/UidMap.h index 02fe7b1f5003..22250aee402e 100644 --- a/cmds/statsd/src/packages/UidMap.h +++ b/cmds/statsd/src/packages/UidMap.h @@ -149,7 +149,7 @@ public: // Get currently cached value of memory used by UID map. size_t getBytesUsed() const; - std::set<int32_t> getAppUid(const string& package) const; + virtual std::set<int32_t> getAppUid(const string& package) const; // Write current PackageInfoSnapshot to ProtoOutputStream. // interestingUids: If not empty, only write the package info for these uids. If empty, write diff --git a/cmds/statsd/src/shell/ShellSubscriber.cpp b/cmds/statsd/src/shell/ShellSubscriber.cpp index c677222f31eb..1cee4d9babdc 100644 --- a/cmds/statsd/src/shell/ShellSubscriber.cpp +++ b/cmds/statsd/src/shell/ShellSubscriber.cpp @@ -108,7 +108,21 @@ bool ShellSubscriber::readConfig(shared_ptr<SubscriptionInfo> subscriptionInfo) if (minInterval < 0 || pulled.freq_millis() < minInterval) { minInterval = pulled.freq_millis(); } - subscriptionInfo->mPulledInfo.emplace_back(pulled.matcher(), pulled.freq_millis()); + + vector<string> packages; + vector<int32_t> uids; + for (const string& pkg : pulled.packages()) { + auto it = UidMap::sAidToUidMapping.find(pkg); + if (it != UidMap::sAidToUidMapping.end()) { + uids.push_back(it->second); + } else { + packages.push_back(pkg); + } + } + + subscriptionInfo->mPulledInfo.emplace_back(pulled.matcher(), pulled.freq_millis(), packages, + uids); + VLOG("adding matcher for pulled atom %d", pulled.matcher().atom_id()); } subscriptionInfo->mPullIntervalMin = minInterval; @@ -127,7 +141,15 @@ void ShellSubscriber::startPull(int64_t myToken) { for (auto& pullInfo : mSubscriptionInfo->mPulledInfo) { if (pullInfo.mPrevPullElapsedRealtimeMs + pullInfo.mInterval < nowMillis) { vector<std::shared_ptr<LogEvent>> data; - mPullerMgr->Pull(pullInfo.mPullerMatcher.atom_id(), &data); + vector<int32_t> uids; + uids.insert(uids.end(), pullInfo.mPullUids.begin(), pullInfo.mPullUids.end()); + // This is slow. Consider storing the uids per app and listening to uidmap updates. + for (const string& pkg : pullInfo.mPullPackages) { + set<int32_t> uidsForPkg = mUidMap->getAppUid(pkg); + uids.insert(uids.end(), uidsForPkg.begin(), uidsForPkg.end()); + } + uids.push_back(DEFAULT_PULL_UID); + mPullerMgr->Pull(pullInfo.mPullerMatcher.atom_id(), uids, &data); VLOG("pulled %zu atoms with id %d", data.size(), pullInfo.mPullerMatcher.atom_id()); // TODO(b/150969574): Don't write to a pipe while holding a lock. diff --git a/cmds/statsd/src/shell/ShellSubscriber.h b/cmds/statsd/src/shell/ShellSubscriber.h index 2f9b61a257a8..61457d89f224 100644 --- a/cmds/statsd/src/shell/ShellSubscriber.h +++ b/cmds/statsd/src/shell/ShellSubscriber.h @@ -16,15 +16,17 @@ #pragma once -#include "logd/LogEvent.h" - #include <android/util/ProtoOutputStream.h> +#include <private/android_filesystem_config.h> + #include <condition_variable> #include <mutex> #include <thread> + #include "external/StatsPullerManager.h" #include "frameworks/base/cmds/statsd/src/shell/shell_config.pb.h" #include "frameworks/base/cmds/statsd/src/statsd_config.pb.h" +#include "logd/LogEvent.h" #include "packages/UidMap.h" namespace android { @@ -66,12 +68,19 @@ public: private: struct PullInfo { - PullInfo(const SimpleAtomMatcher& matcher, int64_t interval) - : mPullerMatcher(matcher), mInterval(interval), mPrevPullElapsedRealtimeMs(0) { + PullInfo(const SimpleAtomMatcher& matcher, int64_t interval, + const std::vector<std::string>& packages, const std::vector<int32_t>& uids) + : mPullerMatcher(matcher), + mInterval(interval), + mPrevPullElapsedRealtimeMs(0), + mPullPackages(packages), + mPullUids(uids) { } SimpleAtomMatcher mPullerMatcher; int64_t mInterval; int64_t mPrevPullElapsedRealtimeMs; + std::vector<std::string> mPullPackages; + std::vector<int32_t> mPullUids; }; struct SubscriptionInfo { @@ -109,6 +118,8 @@ private: std::shared_ptr<SubscriptionInfo> mSubscriptionInfo = nullptr; int mToken = 0; + + const int32_t DEFAULT_PULL_UID = AID_SYSTEM; }; } // namespace statsd diff --git a/cmds/statsd/src/shell/shell_config.proto b/cmds/statsd/src/shell/shell_config.proto index 73cb49a61821..07d0310ef2dd 100644 --- a/cmds/statsd/src/shell/shell_config.proto +++ b/cmds/statsd/src/shell/shell_config.proto @@ -28,6 +28,9 @@ message PulledAtomSubscription { /* gap between two pulls in milliseconds */ optional int32 freq_millis = 2; + + /* Packages that the pull is requested from */ + repeated string packages = 3; } message ShellSubscription { diff --git a/cmds/statsd/src/statsd_config.proto b/cmds/statsd/src/statsd_config.proto index 736aa9be2fdb..83d9484c77ba 100644 --- a/cmds/statsd/src/statsd_config.proto +++ b/cmds/statsd/src/statsd_config.proto @@ -428,6 +428,12 @@ message MetricActivation { repeated EventActivation event_activation = 2; } +message PullAtomPackages { + optional int32 atom_id = 1; + + repeated string packages = 2; +} + message StatsdConfig { optional int64 id = 1; @@ -475,6 +481,10 @@ message StatsdConfig { repeated State state = 21; + repeated string default_pull_packages = 22; + + repeated PullAtomPackages pull_atom_packages = 23; + // Field number 1000 is reserved for later use. reserved 1000; } diff --git a/cmds/statsd/tests/MetricsManager_test.cpp b/cmds/statsd/tests/MetricsManager_test.cpp index 356e40b9b99d..1075fe4f9ce1 100644 --- a/cmds/statsd/tests/MetricsManager_test.cpp +++ b/cmds/statsd/tests/MetricsManager_test.cpp @@ -13,7 +13,15 @@ // limitations under the License. #include <gtest/gtest.h> +#include <private/android_filesystem_config.h> +#include <stdio.h> +#include <set> +#include <unordered_map> +#include <vector> + +#include "frameworks/base/cmds/statsd/src/statsd_config.pb.h" +#include "metrics/metrics_test_helper.h" #include "src/condition/ConditionTracker.h" #include "src/matchers/LogMatchingTracker.h" #include "src/metrics/CountMetricProducer.h" @@ -23,22 +31,21 @@ #include "src/metrics/metrics_manager_util.h" #include "statsd_test_util.h" -#include "frameworks/base/cmds/statsd/src/statsd_config.pb.h" - -#include <stdio.h> -#include <set> -#include <unordered_map> -#include <vector> - -using namespace android::os::statsd; +using namespace testing; using android::sp; +using android::os::statsd::Predicate; +using std::map; using std::set; using std::unordered_map; using std::vector; -using android::os::statsd::Predicate; #ifdef __ANDROID__ +namespace android { +namespace os { +namespace statsd { + +namespace { const ConfigKey kConfigKey(0, 12345); const long kAlertId = 3; @@ -268,6 +275,11 @@ StatsdConfig buildCirclePredicates() { return config; } +bool isSubset(const set<int32_t>& set1, const set<int32_t>& set2) { + return std::includes(set2.begin(), set2.end(), set1.begin(), set1.end()); +} +} // anonymous namespace + TEST(MetricsManagerTest, TestGoodConfig) { UidMap uidMap; sp<StatsPullerManager> pullerManager = new StatsPullerManager(); @@ -488,6 +500,101 @@ TEST(MetricsManagerTest, testAlertWithUnknownMetric) { noReportMetricIds)); } +TEST(MetricsManagerTest, TestLogSources) { + string app1 = "app1"; + set<int32_t> app1Uids = {1111, 11111}; + string app2 = "app2"; + set<int32_t> app2Uids = {2222}; + string app3 = "app3"; + set<int32_t> app3Uids = {3333, 1111}; + + map<string, set<int32_t>> pkgToUids; + pkgToUids[app1] = app1Uids; + pkgToUids[app2] = app2Uids; + pkgToUids[app3] = app3Uids; + + int32_t atom1 = 10; + int32_t atom2 = 20; + int32_t atom3 = 30; + sp<MockUidMap> uidMap = new StrictMock<MockUidMap>(); + EXPECT_CALL(*uidMap, getAppUid(_)) + .Times(4) + .WillRepeatedly(Invoke([&pkgToUids](const string& pkg) { + const auto& it = pkgToUids.find(pkg); + if (it != pkgToUids.end()) { + return it->second; + } + return set<int32_t>(); + })); + sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); + EXPECT_CALL(*pullerManager, RegisterPullUidProvider(kConfigKey, _)).Times(1); + EXPECT_CALL(*pullerManager, UnregisterPullUidProvider(kConfigKey)).Times(1); + + sp<AlarmMonitor> anomalyAlarmMonitor; + sp<AlarmMonitor> periodicAlarmMonitor; + + StatsdConfig config = buildGoodConfig(); + config.add_allowed_log_source("AID_SYSTEM"); + config.add_allowed_log_source(app1); + config.add_default_pull_packages("AID_SYSTEM"); + config.add_default_pull_packages("AID_ROOT"); + + const set<int32_t> defaultPullUids = {AID_SYSTEM, AID_ROOT}; + + PullAtomPackages* pullAtomPackages = config.add_pull_atom_packages(); + pullAtomPackages->set_atom_id(atom1); + pullAtomPackages->add_packages(app1); + pullAtomPackages->add_packages(app3); + + pullAtomPackages = config.add_pull_atom_packages(); + pullAtomPackages->set_atom_id(atom2); + pullAtomPackages->add_packages(app2); + pullAtomPackages->add_packages("AID_STATSD"); + + MetricsManager metricsManager(kConfigKey, config, timeBaseSec, timeBaseSec, uidMap, + pullerManager, anomalyAlarmMonitor, periodicAlarmMonitor); + + EXPECT_TRUE(metricsManager.isConfigValid()); + + ASSERT_EQ(metricsManager.mAllowedUid.size(), 1); + EXPECT_EQ(metricsManager.mAllowedUid[0], AID_SYSTEM); + + ASSERT_EQ(metricsManager.mAllowedPkg.size(), 1); + EXPECT_EQ(metricsManager.mAllowedPkg[0], app1); + + ASSERT_EQ(metricsManager.mAllowedLogSources.size(), 3); + EXPECT_TRUE(isSubset({AID_SYSTEM}, metricsManager.mAllowedLogSources)); + EXPECT_TRUE(isSubset(app1Uids, metricsManager.mAllowedLogSources)); + + ASSERT_EQ(metricsManager.mDefaultPullUids.size(), 2); + EXPECT_TRUE(isSubset(defaultPullUids, metricsManager.mDefaultPullUids)); + ; + + vector<int32_t> atom1Uids = metricsManager.getPullAtomUids(atom1); + ASSERT_EQ(atom1Uids.size(), 5); + set<int32_t> expectedAtom1Uids; + expectedAtom1Uids.insert(defaultPullUids.begin(), defaultPullUids.end()); + expectedAtom1Uids.insert(app1Uids.begin(), app1Uids.end()); + expectedAtom1Uids.insert(app3Uids.begin(), app3Uids.end()); + EXPECT_TRUE(isSubset(expectedAtom1Uids, set<int32_t>(atom1Uids.begin(), atom1Uids.end()))); + + vector<int32_t> atom2Uids = metricsManager.getPullAtomUids(atom2); + ASSERT_EQ(atom2Uids.size(), 4); + set<int32_t> expectedAtom2Uids; + expectedAtom1Uids.insert(defaultPullUids.begin(), defaultPullUids.end()); + expectedAtom1Uids.insert(app2Uids.begin(), app2Uids.end()); + expectedAtom1Uids.insert(AID_STATSD); + EXPECT_TRUE(isSubset(expectedAtom2Uids, set<int32_t>(atom2Uids.begin(), atom2Uids.end()))); + + vector<int32_t> atom3Uids = metricsManager.getPullAtomUids(atom3); + ASSERT_EQ(atom3Uids.size(), 2); + EXPECT_TRUE(isSubset(defaultPullUids, set<int32_t>(atom3Uids.begin(), atom3Uids.end()))); +} + +} // namespace statsd +} // namespace os +} // namespace android + #else GTEST_LOG_(INFO) << "This test does nothing.\n"; #endif diff --git a/cmds/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp b/cmds/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp index ca4de6d49fb1..c234b14f12d0 100644 --- a/cmds/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp +++ b/cmds/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp @@ -38,6 +38,7 @@ StatsdConfig CreateStatsdConfig(const GaugeMetric::SamplingType sampling_type, bool useCondition = true) { StatsdConfig config; config.add_allowed_log_source("AID_ROOT"); // LogEvent defaults to UID of root. + config.add_default_pull_packages("AID_ROOT"); // Fake puller is registered with root. auto atomMatcher = CreateSimpleAtomMatcher("TestMatcher", ATOM_TAG); *config.add_atom_matcher() = atomMatcher; *config.add_atom_matcher() = CreateScreenTurnedOnAtomMatcher(); diff --git a/cmds/statsd/tests/e2e/PartialBucket_e2e_test.cpp b/cmds/statsd/tests/e2e/PartialBucket_e2e_test.cpp index 371a34625b79..b173ee0334a7 100644 --- a/cmds/statsd/tests/e2e/PartialBucket_e2e_test.cpp +++ b/cmds/statsd/tests/e2e/PartialBucket_e2e_test.cpp @@ -71,6 +71,7 @@ StatsdConfig MakeConfig() { StatsdConfig MakeValueMetricConfig(int64_t minTime) { StatsdConfig config; config.add_allowed_log_source("AID_ROOT"); // LogEvent defaults to UID of root. + config.add_default_pull_packages("AID_ROOT"); // Fake puller is registered with root. auto pulledAtomMatcher = CreateSimpleAtomMatcher("TestMatcher", util::SUBSYSTEM_SLEEP_STATE); @@ -94,6 +95,7 @@ StatsdConfig MakeValueMetricConfig(int64_t minTime) { StatsdConfig MakeGaugeMetricConfig(int64_t minTime) { StatsdConfig config; config.add_allowed_log_source("AID_ROOT"); // LogEvent defaults to UID of root. + config.add_default_pull_packages("AID_ROOT"); // Fake puller is registered with root. auto pulledAtomMatcher = CreateSimpleAtomMatcher("TestMatcher", util::SUBSYSTEM_SLEEP_STATE); diff --git a/cmds/statsd/tests/e2e/ValueMetric_pull_e2e_test.cpp b/cmds/statsd/tests/e2e/ValueMetric_pull_e2e_test.cpp index a5ef733b0287..0c4a7c69c8e7 100644 --- a/cmds/statsd/tests/e2e/ValueMetric_pull_e2e_test.cpp +++ b/cmds/statsd/tests/e2e/ValueMetric_pull_e2e_test.cpp @@ -36,6 +36,7 @@ const int64_t metricId = 123456; StatsdConfig CreateStatsdConfig(bool useCondition = true) { StatsdConfig config; config.add_allowed_log_source("AID_ROOT"); // LogEvent defaults to UID of root. + config.add_default_pull_packages("AID_ROOT"); // Fake puller is registered with root. auto pulledAtomMatcher = CreateSimpleAtomMatcher("TestMatcher", util::SUBSYSTEM_SLEEP_STATE); *config.add_atom_matcher() = pulledAtomMatcher; diff --git a/cmds/statsd/tests/external/StatsCallbackPuller_test.cpp b/cmds/statsd/tests/external/StatsCallbackPuller_test.cpp index 1ff66218f22c..6aff9ef80a71 100644 --- a/cmds/statsd/tests/external/StatsCallbackPuller_test.cpp +++ b/cmds/statsd/tests/external/StatsCallbackPuller_test.cpp @@ -187,15 +187,16 @@ TEST_F(StatsCallbackPullerTest, RegisterAndTimeout) { pullDelayNs = 500000000; // 500 ms. pullTimeoutNs = 10000; // 10 microsseconds. int64_t value = 4321; + int32_t uid = 123; values.push_back(value); StatsPullerManager pullerManager; - pullerManager.RegisterPullAtomCallback(/*uid=*/-1, pullTagId, pullCoolDownNs, pullTimeoutNs, + pullerManager.RegisterPullAtomCallback(uid, pullTagId, pullCoolDownNs, pullTimeoutNs, vector<int32_t>(), cb); vector<shared_ptr<LogEvent>> dataHolder; int64_t startTimeNs = getElapsedRealtimeNs(); // Returns false, since StatsPuller code will evaluate the timeout. - EXPECT_FALSE(pullerManager.Pull(pullTagId, &dataHolder)); + EXPECT_FALSE(pullerManager.Pull(pullTagId, {uid}, &dataHolder)); int64_t endTimeNs = getElapsedRealtimeNs(); int64_t actualPullDurationNs = endTimeNs - startTimeNs; diff --git a/cmds/statsd/tests/external/StatsPullerManager_test.cpp b/cmds/statsd/tests/external/StatsPullerManager_test.cpp new file mode 100644 index 000000000000..6b3f4cccb95b --- /dev/null +++ b/cmds/statsd/tests/external/StatsPullerManager_test.cpp @@ -0,0 +1,150 @@ +// 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. + +#include "src/external/StatsPullerManager.h" + +#include <aidl/android/os/IPullAtomResultReceiver.h> +#include <aidl/android/util/StatsEventParcel.h> +#include <gmock/gmock.h> +#include <gtest/gtest.h> + +#include "stats_event.h" +#include "tests/statsd_test_util.h" + +using aidl::android::util::StatsEventParcel; +using ::ndk::SharedRefBase; +using std::make_shared; +using std::shared_ptr; +using std::vector; + +namespace android { +namespace os { +namespace statsd { + +namespace { + +int pullTagId1 = 10101; +int pullTagId2 = 10102; +int uid1 = 9999; +int uid2 = 8888; +ConfigKey configKey(50, 12345); +ConfigKey badConfigKey(60, 54321); +int unregisteredUid = 98765; +int64_t coolDownNs = NS_PER_SEC; +int64_t timeoutNs = NS_PER_SEC / 2; + +AStatsEvent* createSimpleEvent(int32_t atomId, int32_t value) { + AStatsEvent* event = AStatsEvent_obtain(); + AStatsEvent_setAtomId(event, atomId); + AStatsEvent_writeInt32(event, value); + AStatsEvent_build(event); + return event; +} + +class FakePullAtomCallback : public BnPullAtomCallback { +public: + FakePullAtomCallback(int32_t uid) : mUid(uid){}; + Status onPullAtom(int atomTag, + const shared_ptr<IPullAtomResultReceiver>& resultReceiver) override { + vector<StatsEventParcel> parcels; + AStatsEvent* event = createSimpleEvent(atomTag, mUid); + size_t size; + uint8_t* buffer = AStatsEvent_getBuffer(event, &size); + + StatsEventParcel p; + // vector.assign() creates a copy, but this is inevitable unless + // stats_event.h/c uses a vector as opposed to a buffer. + p.buffer.assign(buffer, buffer + size); + parcels.push_back(std::move(p)); + AStatsEvent_release(event); + resultReceiver->pullFinished(atomTag, /*success*/ true, parcels); + return Status::ok(); + } + int32_t mUid; +}; + +class FakePullUidProvider : public PullUidProvider { +public: + vector<int32_t> getPullAtomUids(int atomId) override { + if (atomId == pullTagId1) { + return {uid2, uid1}; + } else if (atomId == pullTagId2) { + return {uid2}; + } + return {}; + } +}; + +sp<StatsPullerManager> createPullerManagerAndRegister() { + sp<StatsPullerManager> pullerManager = new StatsPullerManager(); + shared_ptr<FakePullAtomCallback> cb1 = SharedRefBase::make<FakePullAtomCallback>(uid1); + pullerManager->RegisterPullAtomCallback(uid1, pullTagId1, coolDownNs, timeoutNs, {}, cb1, true); + shared_ptr<FakePullAtomCallback> cb2 = SharedRefBase::make<FakePullAtomCallback>(uid2); + pullerManager->RegisterPullAtomCallback(uid2, pullTagId1, coolDownNs, timeoutNs, {}, cb2, true); + pullerManager->RegisterPullAtomCallback(uid1, pullTagId2, coolDownNs, timeoutNs, {}, cb1, true); + return pullerManager; +} +} // anonymous namespace + +TEST(StatsPullerManagerTest, TestPullInvalidUid) { + sp<StatsPullerManager> pullerManager = createPullerManagerAndRegister(); + + vector<shared_ptr<LogEvent>> data; + EXPECT_FALSE(pullerManager->Pull(pullTagId1, {unregisteredUid}, &data, true)); +} + +TEST(StatsPullerManagerTest, TestPullChoosesCorrectUid) { + sp<StatsPullerManager> pullerManager = createPullerManagerAndRegister(); + + vector<shared_ptr<LogEvent>> data; + EXPECT_TRUE(pullerManager->Pull(pullTagId1, {uid1}, &data, true)); + ASSERT_EQ(data.size(), 1); + EXPECT_EQ(data[0]->GetTagId(), pullTagId1); + ASSERT_EQ(data[0]->getValues().size(), 1); + EXPECT_EQ(data[0]->getValues()[0].mValue.int_value, uid1); +} + +TEST(StatsPullerManagerTest, TestPullInvalidConfigKey) { + sp<StatsPullerManager> pullerManager = createPullerManagerAndRegister(); + sp<FakePullUidProvider> uidProvider = new FakePullUidProvider(); + pullerManager->RegisterPullUidProvider(configKey, uidProvider); + + vector<shared_ptr<LogEvent>> data; + EXPECT_FALSE(pullerManager->Pull(pullTagId1, badConfigKey, &data, true)); +} + +TEST(StatsPullerManagerTest, TestPullConfigKeyGood) { + sp<StatsPullerManager> pullerManager = createPullerManagerAndRegister(); + sp<FakePullUidProvider> uidProvider = new FakePullUidProvider(); + pullerManager->RegisterPullUidProvider(configKey, uidProvider); + + vector<shared_ptr<LogEvent>> data; + EXPECT_TRUE(pullerManager->Pull(pullTagId1, configKey, &data, true)); + EXPECT_EQ(data[0]->GetTagId(), pullTagId1); + ASSERT_EQ(data[0]->getValues().size(), 1); + EXPECT_EQ(data[0]->getValues()[0].mValue.int_value, uid2); +} + +TEST(StatsPullerManagerTest, TestPullConfigKeyNoPullerWithUid) { + sp<StatsPullerManager> pullerManager = createPullerManagerAndRegister(); + sp<FakePullUidProvider> uidProvider = new FakePullUidProvider(); + pullerManager->RegisterPullUidProvider(configKey, uidProvider); + + vector<shared_ptr<LogEvent>> data; + EXPECT_FALSE(pullerManager->Pull(pullTagId2, configKey, &data, true)); +} + +} // namespace statsd +} // namespace os +} // namespace android
\ No newline at end of file diff --git a/cmds/statsd/tests/metrics/EventMetricProducer_test.cpp b/cmds/statsd/tests/metrics/EventMetricProducer_test.cpp index 0f39efd51b58..e58bbb7893d7 100644 --- a/cmds/statsd/tests/metrics/EventMetricProducer_test.cpp +++ b/cmds/statsd/tests/metrics/EventMetricProducer_test.cpp @@ -13,14 +13,17 @@ // limitations under the License. #include "src/metrics/EventMetricProducer.h" -#include "metrics_test_helper.h" -#include "tests/statsd_test_util.h" #include <gmock/gmock.h> #include <gtest/gtest.h> #include <stdio.h> + #include <vector> +#include "metrics_test_helper.h" +#include "stats_event.h" +#include "tests/statsd_test_util.h" + using namespace testing; using android::sp; using std::set; @@ -35,6 +38,22 @@ namespace statsd { const ConfigKey kConfigKey(0, 12345); +namespace { +void makeLogEvent(LogEvent* logEvent, int32_t atomId, int64_t timestampNs, string str) { + AStatsEvent* statsEvent = AStatsEvent_obtain(); + AStatsEvent_setAtomId(statsEvent, atomId); + AStatsEvent_overwriteTimestamp(statsEvent, timestampNs); + + AStatsEvent_writeString(statsEvent, str.c_str()); + AStatsEvent_build(statsEvent); + + size_t size; + uint8_t* buf = AStatsEvent_getBuffer(statsEvent, &size); + logEvent->parseBuffer(buf, size); + AStatsEvent_release(statsEvent); +} +} // anonymous namespace + TEST(EventMetricProducerTest, TestNoCondition) { int64_t bucketStartTimeNs = 10000000000; int64_t eventStartTimeNs = bucketStartTimeNs + 1; @@ -43,8 +62,11 @@ TEST(EventMetricProducerTest, TestNoCondition) { EventMetric metric; metric.set_id(1); - LogEvent event1(1 /*tag id*/, bucketStartTimeNs + 1); - LogEvent event2(1 /*tag id*/, bucketStartTimeNs + 2); + LogEvent event1(/*uid=*/0, /*pid=*/0); + CreateNoValuesLogEvent(&event1, 1 /*tagId*/, bucketStartTimeNs + 1); + + LogEvent event2(/*uid=*/0, /*pid=*/0); + CreateNoValuesLogEvent(&event2, 1 /*tagId*/, bucketStartTimeNs + 2); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); @@ -54,8 +76,17 @@ TEST(EventMetricProducerTest, TestNoCondition) { eventProducer.onMatchedLogEvent(1 /*matcher index*/, event1); eventProducer.onMatchedLogEvent(1 /*matcher index*/, event2); - // TODO(b/110561136): get the report and check the content after the ProtoOutputStream change - // is done eventProducer.onDumpReport(); + // Check dump report content. + ProtoOutputStream output; + std::set<string> strSet; + eventProducer.onDumpReport(bucketStartTimeNs + 20, true /*include current partial bucket*/, + true /*erase data*/, FAST, &strSet, &output); + + StatsLogReport report = outputStreamToProto(&output); + EXPECT_TRUE(report.has_event_metrics()); + EXPECT_EQ(2, report.event_metrics().data_size()); + EXPECT_EQ(bucketStartTimeNs + 1, report.event_metrics().data(0).elapsed_timestamp_nanos()); + EXPECT_EQ(bucketStartTimeNs + 2, report.event_metrics().data(1).elapsed_timestamp_nanos()); } TEST(EventMetricProducerTest, TestEventsWithNonSlicedCondition) { @@ -67,8 +98,11 @@ TEST(EventMetricProducerTest, TestEventsWithNonSlicedCondition) { metric.set_id(1); metric.set_condition(StringToId("SCREEN_ON")); - LogEvent event1(1, bucketStartTimeNs + 1); - LogEvent event2(1, bucketStartTimeNs + 10); + LogEvent event1(/*uid=*/0, /*pid=*/0); + CreateNoValuesLogEvent(&event1, 1 /*tagId*/, bucketStartTimeNs + 1); + + LogEvent event2(/*uid=*/0, /*pid=*/0); + CreateNoValuesLogEvent(&event2, 1 /*tagId*/, bucketStartTimeNs + 10); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); @@ -81,51 +115,67 @@ TEST(EventMetricProducerTest, TestEventsWithNonSlicedCondition) { eventProducer.onMatchedLogEvent(1 /*matcher index*/, event2); - // TODO: get the report and check the content after the ProtoOutputStream change is done. - // eventProducer.onDumpReport(); + // Check dump report content. + ProtoOutputStream output; + std::set<string> strSet; + eventProducer.onDumpReport(bucketStartTimeNs + 20, true /*include current partial bucket*/, + true /*erase data*/, FAST, &strSet, &output); + + StatsLogReport report = outputStreamToProto(&output); + EXPECT_TRUE(report.has_event_metrics()); + EXPECT_EQ(1, report.event_metrics().data_size()); + EXPECT_EQ(bucketStartTimeNs + 1, report.event_metrics().data(0).elapsed_timestamp_nanos()); } -// TODO(b/149590301): Update this test to use new socket schema. -//TEST(EventMetricProducerTest, TestEventsWithSlicedCondition) { -// int64_t bucketStartTimeNs = 10000000000; -// int64_t bucketSizeNs = 30 * 1000 * 1000 * 1000LL; -// -// int tagId = 1; -// int conditionTagId = 2; -// -// EventMetric metric; -// metric.set_id(1); -// metric.set_condition(StringToId("APP_IN_BACKGROUND_PER_UID_AND_SCREEN_ON")); -// MetricConditionLink* link = metric.add_links(); -// link->set_condition(StringToId("APP_IN_BACKGROUND_PER_UID")); -// buildSimpleAtomFieldMatcher(tagId, 1, link->mutable_fields_in_what()); -// buildSimpleAtomFieldMatcher(conditionTagId, 2, link->mutable_fields_in_condition()); -// -// LogEvent event1(tagId, bucketStartTimeNs + 1); -// EXPECT_TRUE(event1.write("111")); -// event1.init(); -// ConditionKey key1; -// key1[StringToId("APP_IN_BACKGROUND_PER_UID")] = {getMockedDimensionKey(conditionTagId, 2, "111")}; -// -// LogEvent event2(tagId, bucketStartTimeNs + 10); -// EXPECT_TRUE(event2.write("222")); -// event2.init(); -// ConditionKey key2; -// key2[StringToId("APP_IN_BACKGROUND_PER_UID")] = {getMockedDimensionKey(conditionTagId, 2, "222")}; -// -// sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); -// EXPECT_CALL(*wizard, query(_, key1, _)).WillOnce(Return(ConditionState::kFalse)); -// -// EXPECT_CALL(*wizard, query(_, key2, _)).WillOnce(Return(ConditionState::kTrue)); -// -// EventMetricProducer eventProducer(kConfigKey, metric, 1, wizard, bucketStartTimeNs); -// -// eventProducer.onMatchedLogEvent(1 /*matcher index*/, event1); -// eventProducer.onMatchedLogEvent(1 /*matcher index*/, event2); -// -// // TODO: get the report and check the content after the ProtoOutputStream change is done. -// // eventProducer.onDumpReport(); -//} +TEST(EventMetricProducerTest, TestEventsWithSlicedCondition) { + int64_t bucketStartTimeNs = 10000000000; + int64_t bucketSizeNs = 30 * 1000 * 1000 * 1000LL; + + int tagId = 1; + int conditionTagId = 2; + + EventMetric metric; + metric.set_id(1); + metric.set_condition(StringToId("APP_IN_BACKGROUND_PER_UID_AND_SCREEN_ON")); + MetricConditionLink* link = metric.add_links(); + link->set_condition(StringToId("APP_IN_BACKGROUND_PER_UID")); + buildSimpleAtomFieldMatcher(tagId, 1, link->mutable_fields_in_what()); + buildSimpleAtomFieldMatcher(conditionTagId, 2, link->mutable_fields_in_condition()); + + LogEvent event1(/*uid=*/0, /*pid=*/0); + makeLogEvent(&event1, 1 /*tagId*/, bucketStartTimeNs + 1, "111"); + ConditionKey key1; + key1[StringToId("APP_IN_BACKGROUND_PER_UID")] = { + getMockedDimensionKey(conditionTagId, 2, "111")}; + + LogEvent event2(/*uid=*/0, /*pid=*/0); + makeLogEvent(&event2, 1 /*tagId*/, bucketStartTimeNs + 10, "222"); + ConditionKey key2; + key2[StringToId("APP_IN_BACKGROUND_PER_UID")] = { + getMockedDimensionKey(conditionTagId, 2, "222")}; + + sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); + // Condition is false for first event. + EXPECT_CALL(*wizard, query(_, key1, _)).WillOnce(Return(ConditionState::kFalse)); + // Condition is true for second event. + EXPECT_CALL(*wizard, query(_, key2, _)).WillOnce(Return(ConditionState::kTrue)); + + EventMetricProducer eventProducer(kConfigKey, metric, 1, wizard, bucketStartTimeNs); + + eventProducer.onMatchedLogEvent(1 /*matcher index*/, event1); + eventProducer.onMatchedLogEvent(1 /*matcher index*/, event2); + + // Check dump report content. + ProtoOutputStream output; + std::set<string> strSet; + eventProducer.onDumpReport(bucketStartTimeNs + 20, true /*include current partial bucket*/, + true /*erase data*/, FAST, &strSet, &output); + + StatsLogReport report = outputStreamToProto(&output); + EXPECT_TRUE(report.has_event_metrics()); + EXPECT_EQ(1, report.event_metrics().data_size()); + EXPECT_EQ(bucketStartTimeNs + 10, report.event_metrics().data(0).elapsed_timestamp_nanos()); +} } // namespace statsd } // namespace os diff --git a/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp b/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp index 609324e91daa..2fe05a4430c3 100644 --- a/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp +++ b/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp @@ -26,6 +26,7 @@ #include "src/matchers/SimpleLogMatchingTracker.h" #include "src/metrics/MetricProducer.h" #include "src/stats_log_util.h" +#include "stats_event.h" #include "tests/statsd_test_util.h" using namespace testing; @@ -53,6 +54,28 @@ const int64_t bucket3StartTimeNs = bucketStartTimeNs + 2 * bucketSizeNs; const int64_t bucket4StartTimeNs = bucketStartTimeNs + 3 * bucketSizeNs; const int64_t eventUpgradeTimeNs = bucketStartTimeNs + 15 * NS_PER_SEC; +namespace { +shared_ptr<LogEvent> makeLogEvent(int32_t atomId, int64_t timestampNs, int32_t value1, string str1, + int32_t value2) { + AStatsEvent* statsEvent = AStatsEvent_obtain(); + AStatsEvent_setAtomId(statsEvent, atomId); + AStatsEvent_overwriteTimestamp(statsEvent, timestampNs); + + AStatsEvent_writeInt32(statsEvent, value1); + AStatsEvent_writeString(statsEvent, str1.c_str()); + AStatsEvent_writeInt32(statsEvent, value2); + AStatsEvent_build(statsEvent); + + size_t size; + uint8_t* buf = AStatsEvent_getBuffer(statsEvent, &size); + shared_ptr<LogEvent> logEvent = std::make_shared<LogEvent>(/*uid=*/0, /*pid=*/0); + logEvent->parseBuffer(buf, size); + AStatsEvent_release(statsEvent); + + return logEvent; +} +} // anonymous namespace + /* * Tests that the first bucket works correctly */ @@ -82,775 +105,712 @@ TEST(GaugeMetricProducerTest, TestFirstBucket) { logEventMatcherIndex, eventMatcherWizard, -1, -1, tagId, 5, 600 * NS_PER_SEC + NS_PER_SEC / 2, pullerManager); + gaugeProducer.prepareFirstBucket(); EXPECT_EQ(600500000000, gaugeProducer.mCurrentBucketStartTimeNs); EXPECT_EQ(10, gaugeProducer.mCurrentBucketNum); EXPECT_EQ(660000000005, gaugeProducer.getCurrentBucketEndTimeNs()); } -// TODO(b/149590301): Update these tests to use new socket schema. -//TEST(GaugeMetricProducerTest, TestPulledEventsNoCondition) { -// GaugeMetric metric; -// metric.set_id(metricId); -// metric.set_bucket(ONE_MINUTE); -// metric.mutable_gauge_fields_filter()->set_include_all(false); -// metric.set_max_pull_delay_sec(INT_MAX); -// auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); -// gaugeFieldMatcher->set_field(tagId); -// gaugeFieldMatcher->add_child()->set_field(1); -// gaugeFieldMatcher->add_child()->set_field(3); -// -// sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); -// -// UidMap uidMap; -// SimpleAtomMatcher atomMatcher; -// atomMatcher.set_atom_id(tagId); -// sp<EventMatcherWizard> eventMatcherWizard = new EventMatcherWizard({ -// new SimpleLogMatchingTracker(atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); -// -// sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); -// EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, Pull(tagId, _)) -// .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { -// data->clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 10); -// event->write(3); -// event->write("some value"); -// event->write(11); -// event->init(); -// data->push_back(event); -// return true; -// })); -// -// GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, -// logEventMatcherIndex, eventMatcherWizard, -// tagId, -1, tagId, bucketStartTimeNs, bucketStartTimeNs, -// pullerManager); -// -// vector<shared_ptr<LogEvent>> allData; -// allData.clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucket2StartTimeNs + 1); -// event->write(10); -// event->write("some value"); -// event->write(11); -// event->init(); -// allData.push_back(event); -// -// gaugeProducer.onDataPulled(allData, /** succeed */ true, bucket2StartTimeNs); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// auto it = gaugeProducer.mCurrentSlicedBucket->begin()->second.front().mFields->begin(); -// EXPECT_EQ(INT, it->mValue.getType()); -// EXPECT_EQ(10, it->mValue.int_value); -// it++; -// EXPECT_EQ(11, it->mValue.int_value); -// EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); -// EXPECT_EQ(3, gaugeProducer.mPastBuckets.begin()->second.back().mGaugeAtoms -// .front().mFields->begin()->mValue.int_value); -// -// allData.clear(); -// std::shared_ptr<LogEvent> event2 = std::make_shared<LogEvent>(tagId, bucket3StartTimeNs + 10); -// event2->write(24); -// event2->write("some value"); -// event2->write(25); -// event2->init(); -// allData.push_back(event2); -// gaugeProducer.onDataPulled(allData, /** succeed */ true, bucket3StartTimeNs); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// it = gaugeProducer.mCurrentSlicedBucket->begin()->second.front().mFields->begin(); -// EXPECT_EQ(INT, it->mValue.getType()); -// EXPECT_EQ(24, it->mValue.int_value); -// it++; -// EXPECT_EQ(INT, it->mValue.getType()); -// EXPECT_EQ(25, it->mValue.int_value); -// // One dimension. -// EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); -// EXPECT_EQ(2UL, gaugeProducer.mPastBuckets.begin()->second.size()); -// it = gaugeProducer.mPastBuckets.begin()->second.back().mGaugeAtoms.front().mFields->begin(); -// EXPECT_EQ(INT, it->mValue.getType()); -// EXPECT_EQ(10L, it->mValue.int_value); -// it++; -// EXPECT_EQ(INT, it->mValue.getType()); -// EXPECT_EQ(11L, it->mValue.int_value); -// -// gaugeProducer.flushIfNeededLocked(bucket4StartTimeNs); -// EXPECT_EQ(0UL, gaugeProducer.mCurrentSlicedBucket->size()); -// // One dimension. -// EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); -// EXPECT_EQ(3UL, gaugeProducer.mPastBuckets.begin()->second.size()); -// it = gaugeProducer.mPastBuckets.begin()->second.back().mGaugeAtoms.front().mFields->begin(); -// EXPECT_EQ(INT, it->mValue.getType()); -// EXPECT_EQ(24L, it->mValue.int_value); -// it++; -// EXPECT_EQ(INT, it->mValue.getType()); -// EXPECT_EQ(25L, it->mValue.int_value); -//} -// -//TEST(GaugeMetricProducerTest, TestPushedEventsWithUpgrade) { -// sp<AlarmMonitor> alarmMonitor; -// GaugeMetric metric; -// metric.set_id(metricId); -// metric.set_bucket(ONE_MINUTE); -// metric.mutable_gauge_fields_filter()->set_include_all(true); -// -// Alert alert; -// alert.set_id(101); -// alert.set_metric_id(metricId); -// alert.set_trigger_if_sum_gt(25); -// alert.set_num_buckets(100); -// sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); -// sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); -// -// UidMap uidMap; -// SimpleAtomMatcher atomMatcher; -// atomMatcher.set_atom_id(tagId); -// sp<EventMatcherWizard> eventMatcherWizard = new EventMatcherWizard({ -// new SimpleLogMatchingTracker(atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); -// -// GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, -// logEventMatcherIndex, eventMatcherWizard, -// -1 /* -1 means no pulling */, -1, tagId, bucketStartTimeNs, -// bucketStartTimeNs, pullerManager); -// -// sp<AnomalyTracker> anomalyTracker = gaugeProducer.addAnomalyTracker(alert, alarmMonitor); -// EXPECT_TRUE(anomalyTracker != nullptr); -// -// shared_ptr<LogEvent> event1 = make_shared<LogEvent>(tagId, bucketStartTimeNs + 10); -// event1->write(1); -// event1->write(10); -// event1->init(); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, *event1); -// EXPECT_EQ(1UL, (*gaugeProducer.mCurrentSlicedBucket).count(DEFAULT_METRIC_DIMENSION_KEY)); -// -// gaugeProducer.notifyAppUpgrade(eventUpgradeTimeNs, "ANY.APP", 1, 1); -// EXPECT_EQ(0UL, (*gaugeProducer.mCurrentSlicedBucket).count(DEFAULT_METRIC_DIMENSION_KEY)); -// EXPECT_EQ(1UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); -// EXPECT_EQ(0L, gaugeProducer.mCurrentBucketNum); -// EXPECT_EQ(eventUpgradeTimeNs, gaugeProducer.mCurrentBucketStartTimeNs); -// // Partial buckets are not sent to anomaly tracker. -// EXPECT_EQ(0, anomalyTracker->getSumOverPastBuckets(DEFAULT_METRIC_DIMENSION_KEY)); -// -// // Create an event in the same partial bucket. -// shared_ptr<LogEvent> event2 = make_shared<LogEvent>(tagId, bucketStartTimeNs + 59 * NS_PER_SEC); -// event2->write(1); -// event2->write(10); -// event2->init(); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, *event2); -// EXPECT_EQ(0L, gaugeProducer.mCurrentBucketNum); -// EXPECT_EQ(1UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); -// EXPECT_EQ((int64_t)eventUpgradeTimeNs, gaugeProducer.mCurrentBucketStartTimeNs); -// // Partial buckets are not sent to anomaly tracker. -// EXPECT_EQ(0, anomalyTracker->getSumOverPastBuckets(DEFAULT_METRIC_DIMENSION_KEY)); -// -// // Next event should trigger creation of new bucket and send previous full bucket to anomaly -// // tracker. -// shared_ptr<LogEvent> event3 = make_shared<LogEvent>(tagId, bucketStartTimeNs + 65 * NS_PER_SEC); -// event3->write(1); -// event3->write(10); -// event3->init(); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, *event3); -// EXPECT_EQ(1L, gaugeProducer.mCurrentBucketNum); -// EXPECT_EQ(2UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); -// EXPECT_EQ((int64_t)bucketStartTimeNs + bucketSizeNs, gaugeProducer.mCurrentBucketStartTimeNs); -// EXPECT_EQ(1, anomalyTracker->getSumOverPastBuckets(DEFAULT_METRIC_DIMENSION_KEY)); -// -// // Next event should trigger creation of new bucket. -// shared_ptr<LogEvent> event4 = -// make_shared<LogEvent>(tagId, bucketStartTimeNs + 125 * NS_PER_SEC); -// event4->write(1); -// event4->write(10); -// event4->init(); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, *event4); -// EXPECT_EQ(2L, gaugeProducer.mCurrentBucketNum); -// EXPECT_EQ(3UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); -// EXPECT_EQ(2, anomalyTracker->getSumOverPastBuckets(DEFAULT_METRIC_DIMENSION_KEY)); -//} -// -//TEST(GaugeMetricProducerTest, TestPulledWithUpgrade) { -// GaugeMetric metric; -// metric.set_id(metricId); -// metric.set_bucket(ONE_MINUTE); -// metric.set_max_pull_delay_sec(INT_MAX); -// auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); -// gaugeFieldMatcher->set_field(tagId); -// gaugeFieldMatcher->add_child()->set_field(2); -// -// sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); -// -// UidMap uidMap; -// SimpleAtomMatcher atomMatcher; -// atomMatcher.set_atom_id(tagId); -// sp<EventMatcherWizard> eventMatcherWizard = -// new EventMatcherWizard({new SimpleLogMatchingTracker( -// atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); -// -// sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); -// EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, Pull(tagId, _)) -// .WillOnce(Return(false)) -// .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { -// data->clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, eventUpgradeTimeNs); -// event->write("some value"); -// event->write(2); -// event->init(); -// data->push_back(event); -// return true; -// })); -// -// GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, -// logEventMatcherIndex, eventMatcherWizard, tagId, -1, tagId, -// bucketStartTimeNs, bucketStartTimeNs, pullerManager); -// -// vector<shared_ptr<LogEvent>> allData; -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 1); -// event->write("some value"); -// event->write(1); -// event->init(); -// allData.push_back(event); -// gaugeProducer.onDataPulled(allData, /** succeed */ true, bucketStartTimeNs); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(1, gaugeProducer.mCurrentSlicedBucket->begin() -// ->second.front() -// .mFields->begin() -// ->mValue.int_value); -// -// gaugeProducer.notifyAppUpgrade(eventUpgradeTimeNs, "ANY.APP", 1, 1); -// EXPECT_EQ(1UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); -// EXPECT_EQ(0L, gaugeProducer.mCurrentBucketNum); -// EXPECT_EQ((int64_t)eventUpgradeTimeNs, gaugeProducer.mCurrentBucketStartTimeNs); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(2, gaugeProducer.mCurrentSlicedBucket->begin() -// ->second.front() -// .mFields->begin() -// ->mValue.int_value); -// -// allData.clear(); -// event = make_shared<LogEvent>(tagId, bucketStartTimeNs + bucketSizeNs + 1); -// event->write("some value"); -// event->write(3); -// event->init(); -// allData.push_back(event); -// gaugeProducer.onDataPulled(allData, /** succeed */ true, bucketStartTimeNs + bucketSizeNs); -// EXPECT_EQ(2UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(3, gaugeProducer.mCurrentSlicedBucket->begin() -// ->second.front() -// .mFields->begin() -// ->mValue.int_value); -//} -// -//TEST(GaugeMetricProducerTest, TestPulledWithAppUpgradeDisabled) { -// GaugeMetric metric; -// metric.set_id(metricId); -// metric.set_bucket(ONE_MINUTE); -// metric.set_max_pull_delay_sec(INT_MAX); -// metric.set_split_bucket_for_app_upgrade(false); -// auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); -// gaugeFieldMatcher->set_field(tagId); -// gaugeFieldMatcher->add_child()->set_field(2); -// -// sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); -// -// UidMap uidMap; -// SimpleAtomMatcher atomMatcher; -// atomMatcher.set_atom_id(tagId); -// sp<EventMatcherWizard> eventMatcherWizard = new EventMatcherWizard({ -// new SimpleLogMatchingTracker(atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); -// -// sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); -// EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, Pull(tagId, _)).WillOnce(Return(false)); -// -// GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, -// logEventMatcherIndex, eventMatcherWizard, -// tagId, -1, tagId, bucketStartTimeNs, bucketStartTimeNs, -// pullerManager); -// -// vector<shared_ptr<LogEvent>> allData; -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 1); -// event->write("some value"); -// event->write(1); -// event->init(); -// allData.push_back(event); -// gaugeProducer.onDataPulled(allData, /** succeed */ true, bucketStartTimeNs); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(1, gaugeProducer.mCurrentSlicedBucket->begin() -// ->second.front() -// .mFields->begin() -// ->mValue.int_value); -// -// gaugeProducer.notifyAppUpgrade(eventUpgradeTimeNs, "ANY.APP", 1, 1); -// EXPECT_EQ(0UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); -// EXPECT_EQ(0L, gaugeProducer.mCurrentBucketNum); -// EXPECT_EQ(bucketStartTimeNs, gaugeProducer.mCurrentBucketStartTimeNs); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(1, gaugeProducer.mCurrentSlicedBucket->begin() -// ->second.front() -// .mFields->begin() -// ->mValue.int_value); -//} -// -//TEST(GaugeMetricProducerTest, TestPulledEventsWithCondition) { -// GaugeMetric metric; -// metric.set_id(metricId); -// metric.set_bucket(ONE_MINUTE); -// metric.set_max_pull_delay_sec(INT_MAX); -// auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); -// gaugeFieldMatcher->set_field(tagId); -// gaugeFieldMatcher->add_child()->set_field(2); -// metric.set_condition(StringToId("SCREEN_ON")); -// -// sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); -// -// UidMap uidMap; -// SimpleAtomMatcher atomMatcher; -// atomMatcher.set_atom_id(tagId); -// sp<EventMatcherWizard> eventMatcherWizard = new EventMatcherWizard({ -// new SimpleLogMatchingTracker(atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); -// -// sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); -// EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, Pull(tagId, _)) -// .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { -// data->clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 10); -// event->write("some value"); -// event->write(100); -// event->init(); -// data->push_back(event); -// return true; -// })); -// -// GaugeMetricProducer gaugeProducer(kConfigKey, metric, 1, wizard, -// logEventMatcherIndex, eventMatcherWizard, tagId, -1, tagId, -// bucketStartTimeNs, bucketStartTimeNs, pullerManager); -// -// gaugeProducer.onConditionChanged(true, bucketStartTimeNs + 8); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(100, gaugeProducer.mCurrentSlicedBucket->begin() -// ->second.front() -// .mFields->begin() -// ->mValue.int_value); -// EXPECT_EQ(0UL, gaugeProducer.mPastBuckets.size()); -// -// vector<shared_ptr<LogEvent>> allData; -// allData.clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucket2StartTimeNs + 1); -// event->write("some value"); -// event->write(110); -// event->init(); -// allData.push_back(event); -// gaugeProducer.onDataPulled(allData, /** succeed */ true, bucket2StartTimeNs); -// -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(110, gaugeProducer.mCurrentSlicedBucket->begin() -// ->second.front() -// .mFields->begin() -// ->mValue.int_value); -// EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); -// EXPECT_EQ(100, gaugeProducer.mPastBuckets.begin() -// ->second.back() -// .mGaugeAtoms.front() -// .mFields->begin() -// ->mValue.int_value); -// -// gaugeProducer.onConditionChanged(false, bucket2StartTimeNs + 10); -// gaugeProducer.flushIfNeededLocked(bucket3StartTimeNs + 10); -// EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); -// EXPECT_EQ(2UL, gaugeProducer.mPastBuckets.begin()->second.size()); -// EXPECT_EQ(110L, gaugeProducer.mPastBuckets.begin() -// ->second.back() -// .mGaugeAtoms.front() -// .mFields->begin() -// ->mValue.int_value); -//} -// -//TEST(GaugeMetricProducerTest, TestPulledEventsWithSlicedCondition) { -// const int conditionTag = 65; -// GaugeMetric metric; -// metric.set_id(1111111); -// metric.set_bucket(ONE_MINUTE); -// metric.mutable_gauge_fields_filter()->set_include_all(true); -// metric.set_condition(StringToId("APP_DIED")); -// metric.set_max_pull_delay_sec(INT_MAX); -// auto dim = metric.mutable_dimensions_in_what(); -// dim->set_field(tagId); -// dim->add_child()->set_field(1); -// -// UidMap uidMap; -// SimpleAtomMatcher atomMatcher; -// atomMatcher.set_atom_id(tagId); -// sp<EventMatcherWizard> eventMatcherWizard = new EventMatcherWizard({ -// new SimpleLogMatchingTracker(atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); -// -// sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); -// EXPECT_CALL(*wizard, query(_, _, _)) -// .WillRepeatedly( -// Invoke([](const int conditionIndex, const ConditionKey& conditionParameters, -// const bool isPartialLink) { -// int pos[] = {1, 0, 0}; -// Field f(conditionTag, pos, 0); -// HashableDimensionKey key; -// key.mutableValues()->emplace_back(f, Value((int32_t)1000000)); -// -// return ConditionState::kTrue; -// })); -// -// sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); -// EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, Pull(tagId, _)) -// .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { -// data->clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 10); -// event->write(1000); -// event->write(100); -// event->init(); -// data->push_back(event); -// return true; -// })); -// -// GaugeMetricProducer gaugeProducer(kConfigKey, metric, 1, wizard, -// logEventMatcherIndex, eventMatcherWizard, tagId, -1, tagId, -// bucketStartTimeNs, bucketStartTimeNs, pullerManager); -// -// gaugeProducer.onSlicedConditionMayChange(true, bucketStartTimeNs + 8); -// -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// const auto& key = gaugeProducer.mCurrentSlicedBucket->begin()->first; -// EXPECT_EQ(1UL, key.getDimensionKeyInWhat().getValues().size()); -// EXPECT_EQ(1000, key.getDimensionKeyInWhat().getValues()[0].mValue.int_value); -// -// EXPECT_EQ(0UL, gaugeProducer.mPastBuckets.size()); -// -// vector<shared_ptr<LogEvent>> allData; -// allData.clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucket2StartTimeNs + 1); -// event->write(1000); -// event->write(110); -// event->init(); -// allData.push_back(event); -// gaugeProducer.onDataPulled(allData, /** succeed */ true, bucket2StartTimeNs); -// -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); -//} -// -//TEST(GaugeMetricProducerTest, TestPulledEventsAnomalyDetection) { -// sp<AlarmMonitor> alarmMonitor; -// sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); -// -// sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); -// EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillOnce(Return()); -// EXPECT_CALL(*pullerManager, Pull(tagId, _)).WillOnce(Return(false)); -// -// GaugeMetric metric; -// metric.set_id(metricId); -// metric.set_bucket(ONE_MINUTE); -// metric.set_max_pull_delay_sec(INT_MAX); -// auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); -// gaugeFieldMatcher->set_field(tagId); -// gaugeFieldMatcher->add_child()->set_field(2); -// -// UidMap uidMap; -// SimpleAtomMatcher atomMatcher; -// atomMatcher.set_atom_id(tagId); -// sp<EventMatcherWizard> eventMatcherWizard = new EventMatcherWizard({ -// new SimpleLogMatchingTracker(atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); -// -// GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, -// logEventMatcherIndex, eventMatcherWizard, -// tagId, -1, tagId, bucketStartTimeNs, bucketStartTimeNs, -// pullerManager); -// -// Alert alert; -// alert.set_id(101); -// alert.set_metric_id(metricId); -// alert.set_trigger_if_sum_gt(25); -// alert.set_num_buckets(2); -// const int32_t refPeriodSec = 60; -// alert.set_refractory_period_secs(refPeriodSec); -// sp<AnomalyTracker> anomalyTracker = gaugeProducer.addAnomalyTracker(alert, alarmMonitor); -// -// int tagId = 1; -// std::shared_ptr<LogEvent> event1 = std::make_shared<LogEvent>(tagId, bucketStartTimeNs + 1); -// event1->write("some value"); -// event1->write(13); -// event1->init(); -// -// gaugeProducer.onDataPulled({event1}, /** succeed */ true, bucketStartTimeNs); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(13L, gaugeProducer.mCurrentSlicedBucket->begin() -// ->second.front() -// .mFields->begin() -// ->mValue.int_value); -// EXPECT_EQ(anomalyTracker->getRefractoryPeriodEndsSec(DEFAULT_METRIC_DIMENSION_KEY), 0U); -// -// std::shared_ptr<LogEvent> event2 = -// std::make_shared<LogEvent>(tagId, bucketStartTimeNs + bucketSizeNs + 20); -// event2->write("some value"); -// event2->write(15); -// event2->init(); -// -// gaugeProducer.onDataPulled({event2}, /** succeed */ true, bucketStartTimeNs + bucketSizeNs); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(15L, gaugeProducer.mCurrentSlicedBucket->begin() -// ->second.front() -// .mFields->begin() -// ->mValue.int_value); -// EXPECT_EQ(anomalyTracker->getRefractoryPeriodEndsSec(DEFAULT_METRIC_DIMENSION_KEY), -// std::ceil(1.0 * event2->GetElapsedTimestampNs() / NS_PER_SEC) + refPeriodSec); -// -// std::shared_ptr<LogEvent> event3 = -// std::make_shared<LogEvent>(tagId, bucketStartTimeNs + 2 * bucketSizeNs + 10); -// event3->write("some value"); -// event3->write(26); -// event3->init(); -// -// gaugeProducer.onDataPulled({event3}, /** succeed */ true, bucket2StartTimeNs + 2 * bucketSizeNs); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(26L, gaugeProducer.mCurrentSlicedBucket->begin() -// ->second.front() -// .mFields->begin() -// ->mValue.int_value); -// EXPECT_EQ(anomalyTracker->getRefractoryPeriodEndsSec(DEFAULT_METRIC_DIMENSION_KEY), -// std::ceil(1.0 * event2->GetElapsedTimestampNs() / NS_PER_SEC + refPeriodSec)); -// -// // The event4 does not have the gauge field. Thus the current bucket value is 0. -// std::shared_ptr<LogEvent> event4 = -// std::make_shared<LogEvent>(tagId, bucketStartTimeNs + 3 * bucketSizeNs + 10); -// event4->write("some value"); -// event4->init(); -// gaugeProducer.onDataPulled({event4}, /** succeed */ true, bucketStartTimeNs + 3 * bucketSizeNs); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_TRUE(gaugeProducer.mCurrentSlicedBucket->begin()->second.front().mFields->empty()); -//} -// -//TEST(GaugeMetricProducerTest, TestPullOnTrigger) { -// GaugeMetric metric; -// metric.set_id(metricId); -// metric.set_bucket(ONE_MINUTE); -// metric.set_sampling_type(GaugeMetric::FIRST_N_SAMPLES); -// metric.mutable_gauge_fields_filter()->set_include_all(false); -// metric.set_max_pull_delay_sec(INT_MAX); -// auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); -// gaugeFieldMatcher->set_field(tagId); -// gaugeFieldMatcher->add_child()->set_field(1); -// -// sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); -// -// UidMap uidMap; -// SimpleAtomMatcher atomMatcher; -// atomMatcher.set_atom_id(tagId); -// sp<EventMatcherWizard> eventMatcherWizard = new EventMatcherWizard({ -// new SimpleLogMatchingTracker(atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); -// -// sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); -// EXPECT_CALL(*pullerManager, Pull(tagId, _)) -// .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { -// data->clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 10); -// event->write(4); -// event->init(); -// data->push_back(event); -// return true; -// })) -// .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { -// data->clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 20); -// event->write(5); -// event->init(); -// data->push_back(event); -// return true; -// })) -// .WillOnce(Return(true)); -// -// int triggerId = 5; -// GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, -// logEventMatcherIndex, eventMatcherWizard, -// tagId, triggerId, tagId, bucketStartTimeNs, bucketStartTimeNs, -// pullerManager); -// -// vector<shared_ptr<LogEvent>> allData; -// -// EXPECT_EQ(0UL, gaugeProducer.mCurrentSlicedBucket->size()); -// LogEvent trigger(triggerId, bucketStartTimeNs + 10); -// trigger.init(); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, trigger); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->begin()->second.size()); -// trigger.setElapsedTimestampNs(bucketStartTimeNs + 20); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, trigger); -// EXPECT_EQ(2UL, gaugeProducer.mCurrentSlicedBucket->begin()->second.size()); -// trigger.setElapsedTimestampNs(bucket2StartTimeNs + 1); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, trigger); -// -// EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); -// EXPECT_EQ(2UL, gaugeProducer.mPastBuckets.begin()->second.back().mGaugeAtoms.size()); -// EXPECT_EQ(4, gaugeProducer.mPastBuckets.begin() -// ->second.back() -// .mGaugeAtoms[0] -// .mFields->begin() -// ->mValue.int_value); -// EXPECT_EQ(5, gaugeProducer.mPastBuckets.begin() -// ->second.back() -// .mGaugeAtoms[1] -// .mFields->begin() -// ->mValue.int_value); -//} -// -//TEST(GaugeMetricProducerTest, TestRemoveDimensionInOutput) { -// GaugeMetric metric; -// metric.set_id(metricId); -// metric.set_bucket(ONE_MINUTE); -// metric.set_sampling_type(GaugeMetric::FIRST_N_SAMPLES); -// metric.mutable_gauge_fields_filter()->set_include_all(true); -// metric.set_max_pull_delay_sec(INT_MAX); -// auto dimensionMatcher = metric.mutable_dimensions_in_what(); -// // use field 1 as dimension. -// dimensionMatcher->set_field(tagId); -// dimensionMatcher->add_child()->set_field(1); -// -// sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); -// -// UidMap uidMap; -// SimpleAtomMatcher atomMatcher; -// atomMatcher.set_atom_id(tagId); -// sp<EventMatcherWizard> eventMatcherWizard = new EventMatcherWizard({ -// new SimpleLogMatchingTracker(atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); -// -// sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); -// EXPECT_CALL(*pullerManager, Pull(tagId, _)) -// .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { -// data->clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 3); -// event->write(3); -// event->write(4); -// event->init(); -// data->push_back(event); -// return true; -// })) -// .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { -// data->clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 10); -// event->write(4); -// event->write(5); -// event->init(); -// data->push_back(event); -// return true; -// })) -// .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { -// data->clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs + 20); -// event->write(4); -// event->write(6); -// event->init(); -// data->push_back(event); -// return true; -// })) -// .WillOnce(Return(true)); -// -// int triggerId = 5; -// GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, -// logEventMatcherIndex, eventMatcherWizard, -// tagId, triggerId, tagId, bucketStartTimeNs, bucketStartTimeNs, -// pullerManager); -// -// vector<shared_ptr<LogEvent>> allData; -// -// LogEvent trigger(triggerId, bucketStartTimeNs + 3); -// trigger.init(); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, trigger); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); -// trigger.setElapsedTimestampNs(bucketStartTimeNs + 10); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, trigger); -// EXPECT_EQ(2UL, gaugeProducer.mCurrentSlicedBucket->size()); -// EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->begin()->second.size()); -// trigger.setElapsedTimestampNs(bucketStartTimeNs + 20); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, trigger); -// EXPECT_EQ(2UL, gaugeProducer.mCurrentSlicedBucket->begin()->second.size()); -// trigger.setElapsedTimestampNs(bucket2StartTimeNs + 1); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, trigger); -// -// EXPECT_EQ(2UL, gaugeProducer.mPastBuckets.size()); -// auto bucketIt = gaugeProducer.mPastBuckets.begin(); -// EXPECT_EQ(1UL, bucketIt->second.back().mGaugeAtoms.size()); -// EXPECT_EQ(3, bucketIt->first.getDimensionKeyInWhat().getValues().begin()->mValue.int_value); -// EXPECT_EQ(4, bucketIt->second.back().mGaugeAtoms[0].mFields->begin()->mValue.int_value); -// bucketIt++; -// EXPECT_EQ(2UL, bucketIt->second.back().mGaugeAtoms.size()); -// EXPECT_EQ(4, bucketIt->first.getDimensionKeyInWhat().getValues().begin()->mValue.int_value); -// EXPECT_EQ(5, bucketIt->second.back().mGaugeAtoms[0].mFields->begin()->mValue.int_value); -// EXPECT_EQ(6, bucketIt->second.back().mGaugeAtoms[1].mFields->begin()->mValue.int_value); -//} -// -///* -// * Test that BUCKET_TOO_SMALL dump reason is logged when a flushed bucket size -// * is smaller than the "min_bucket_size_nanos" specified in the metric config. -// */ -//TEST(GaugeMetricProducerTest_BucketDrop, TestBucketDropWhenBucketTooSmall) { -// GaugeMetric metric; -// metric.set_id(metricId); -// metric.set_bucket(FIVE_MINUTES); -// metric.set_sampling_type(GaugeMetric::FIRST_N_SAMPLES); -// metric.set_min_bucket_size_nanos(10000000000); // 10 seconds -// -// sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); -// -// UidMap uidMap; -// SimpleAtomMatcher atomMatcher; -// atomMatcher.set_atom_id(tagId); -// sp<EventMatcherWizard> eventMatcherWizard = new EventMatcherWizard({ -// new SimpleLogMatchingTracker(atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); -// -// sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); -// EXPECT_CALL(*pullerManager, Pull(tagId, _)) -// // Bucket start. -// .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { -// data->clear(); -// shared_ptr<LogEvent> event = make_shared<LogEvent>(tagId, bucketStartTimeNs); -// event->write("field1"); -// event->write(10); -// event->init(); -// data->push_back(event); -// return true; -// })); -// -// int triggerId = 5; -// GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, -// logEventMatcherIndex, eventMatcherWizard, -// tagId, triggerId, tagId, bucketStartTimeNs, bucketStartTimeNs, -// pullerManager); -// -// LogEvent trigger(triggerId, bucketStartTimeNs + 3); -// trigger.init(); -// gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, trigger); -// -// // Check dump report. -// ProtoOutputStream output; -// std::set<string> strSet; -// gaugeProducer.onDumpReport(bucketStartTimeNs + 9000000, true /* include recent buckets */, -// true, FAST /* dump_latency */, &strSet, &output); -// -// StatsLogReport report = outputStreamToProto(&output); -// EXPECT_TRUE(report.has_gauge_metrics()); -// EXPECT_EQ(0, report.gauge_metrics().data_size()); -// EXPECT_EQ(1, report.gauge_metrics().skipped_size()); -// -// EXPECT_EQ(NanoToMillis(bucketStartTimeNs), -// report.gauge_metrics().skipped(0).start_bucket_elapsed_millis()); -// EXPECT_EQ(NanoToMillis(bucketStartTimeNs + 9000000), -// report.gauge_metrics().skipped(0).end_bucket_elapsed_millis()); -// EXPECT_EQ(1, report.gauge_metrics().skipped(0).drop_event_size()); -// -// auto dropEvent = report.gauge_metrics().skipped(0).drop_event(0); -// EXPECT_EQ(BucketDropReason::BUCKET_TOO_SMALL, dropEvent.drop_reason()); -// EXPECT_EQ(NanoToMillis(bucketStartTimeNs + 9000000), dropEvent.drop_time_millis()); -//} +TEST(GaugeMetricProducerTest, TestPulledEventsNoCondition) { + GaugeMetric metric; + metric.set_id(metricId); + metric.set_bucket(ONE_MINUTE); + metric.mutable_gauge_fields_filter()->set_include_all(false); + metric.set_max_pull_delay_sec(INT_MAX); + auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); + gaugeFieldMatcher->set_field(tagId); + gaugeFieldMatcher->add_child()->set_field(1); + gaugeFieldMatcher->add_child()->set_field(3); + + sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); + + UidMap uidMap; + SimpleAtomMatcher atomMatcher; + atomMatcher.set_atom_id(tagId); + sp<EventMatcherWizard> eventMatcherWizard = + new EventMatcherWizard({new SimpleLogMatchingTracker( + atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); + + sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(makeLogEvent(tagId, bucketStartTimeNs + 10, 3, "some value", 11)); + return true; + })); + + GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, + logEventMatcherIndex, eventMatcherWizard, tagId, -1, tagId, + bucketStartTimeNs, bucketStartTimeNs, pullerManager); + gaugeProducer.prepareFirstBucket(); + + vector<shared_ptr<LogEvent>> allData; + allData.clear(); + allData.push_back(makeLogEvent(tagId, bucket2StartTimeNs + 1, 10, "some value", 11)); + + gaugeProducer.onDataPulled(allData, /** succeed */ true, bucket2StartTimeNs); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + auto it = gaugeProducer.mCurrentSlicedBucket->begin()->second.front().mFields->begin(); + EXPECT_EQ(INT, it->mValue.getType()); + EXPECT_EQ(10, it->mValue.int_value); + it++; + EXPECT_EQ(11, it->mValue.int_value); + EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); + EXPECT_EQ(3, gaugeProducer.mPastBuckets.begin() + ->second.back() + .mGaugeAtoms.front() + .mFields->begin() + ->mValue.int_value); + + allData.clear(); + allData.push_back(makeLogEvent(tagId, bucket3StartTimeNs + 10, 24, "some value", 25)); + gaugeProducer.onDataPulled(allData, /** succeed */ true, bucket3StartTimeNs); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + it = gaugeProducer.mCurrentSlicedBucket->begin()->second.front().mFields->begin(); + EXPECT_EQ(INT, it->mValue.getType()); + EXPECT_EQ(24, it->mValue.int_value); + it++; + EXPECT_EQ(INT, it->mValue.getType()); + EXPECT_EQ(25, it->mValue.int_value); + // One dimension. + EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); + EXPECT_EQ(2UL, gaugeProducer.mPastBuckets.begin()->second.size()); + it = gaugeProducer.mPastBuckets.begin()->second.back().mGaugeAtoms.front().mFields->begin(); + EXPECT_EQ(INT, it->mValue.getType()); + EXPECT_EQ(10L, it->mValue.int_value); + it++; + EXPECT_EQ(INT, it->mValue.getType()); + EXPECT_EQ(11L, it->mValue.int_value); + + gaugeProducer.flushIfNeededLocked(bucket4StartTimeNs); + EXPECT_EQ(0UL, gaugeProducer.mCurrentSlicedBucket->size()); + // One dimension. + EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); + EXPECT_EQ(3UL, gaugeProducer.mPastBuckets.begin()->second.size()); + it = gaugeProducer.mPastBuckets.begin()->second.back().mGaugeAtoms.front().mFields->begin(); + EXPECT_EQ(INT, it->mValue.getType()); + EXPECT_EQ(24L, it->mValue.int_value); + it++; + EXPECT_EQ(INT, it->mValue.getType()); + EXPECT_EQ(25L, it->mValue.int_value); +} + +TEST(GaugeMetricProducerTest, TestPushedEventsWithUpgrade) { + sp<AlarmMonitor> alarmMonitor; + GaugeMetric metric; + metric.set_id(metricId); + metric.set_bucket(ONE_MINUTE); + metric.mutable_gauge_fields_filter()->set_include_all(true); + + Alert alert; + alert.set_id(101); + alert.set_metric_id(metricId); + alert.set_trigger_if_sum_gt(25); + alert.set_num_buckets(100); + sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); + sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); + + UidMap uidMap; + SimpleAtomMatcher atomMatcher; + atomMatcher.set_atom_id(tagId); + sp<EventMatcherWizard> eventMatcherWizard = + new EventMatcherWizard({new SimpleLogMatchingTracker( + atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); + + GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, + logEventMatcherIndex, eventMatcherWizard, + -1 /* -1 means no pulling */, -1, tagId, bucketStartTimeNs, + bucketStartTimeNs, pullerManager); + gaugeProducer.prepareFirstBucket(); + + sp<AnomalyTracker> anomalyTracker = gaugeProducer.addAnomalyTracker(alert, alarmMonitor); + EXPECT_TRUE(anomalyTracker != nullptr); + + LogEvent event1(/*uid=*/0, /*pid=*/0); + CreateTwoValueLogEvent(&event1, tagId, bucketStartTimeNs + 10, 1, 10); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, event1); + EXPECT_EQ(1UL, (*gaugeProducer.mCurrentSlicedBucket).count(DEFAULT_METRIC_DIMENSION_KEY)); + + gaugeProducer.notifyAppUpgrade(eventUpgradeTimeNs, "ANY.APP", 1, 1); + EXPECT_EQ(0UL, (*gaugeProducer.mCurrentSlicedBucket).count(DEFAULT_METRIC_DIMENSION_KEY)); + EXPECT_EQ(1UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); + EXPECT_EQ(0L, gaugeProducer.mCurrentBucketNum); + EXPECT_EQ(eventUpgradeTimeNs, gaugeProducer.mCurrentBucketStartTimeNs); + // Partial buckets are not sent to anomaly tracker. + EXPECT_EQ(0, anomalyTracker->getSumOverPastBuckets(DEFAULT_METRIC_DIMENSION_KEY)); + + // Create an event in the same partial bucket. + LogEvent event2(/*uid=*/0, /*pid=*/0); + CreateTwoValueLogEvent(&event2, tagId, bucketStartTimeNs + 59 * NS_PER_SEC, 1, 10); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, event2); + EXPECT_EQ(0L, gaugeProducer.mCurrentBucketNum); + EXPECT_EQ(1UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); + EXPECT_EQ((int64_t)eventUpgradeTimeNs, gaugeProducer.mCurrentBucketStartTimeNs); + // Partial buckets are not sent to anomaly tracker. + EXPECT_EQ(0, anomalyTracker->getSumOverPastBuckets(DEFAULT_METRIC_DIMENSION_KEY)); + + // Next event should trigger creation of new bucket and send previous full bucket to anomaly + // tracker. + LogEvent event3(/*uid=*/0, /*pid=*/0); + CreateTwoValueLogEvent(&event3, tagId, bucketStartTimeNs + 65 * NS_PER_SEC, 1, 10); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, event3); + EXPECT_EQ(1L, gaugeProducer.mCurrentBucketNum); + EXPECT_EQ(2UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); + EXPECT_EQ((int64_t)bucketStartTimeNs + bucketSizeNs, gaugeProducer.mCurrentBucketStartTimeNs); + EXPECT_EQ(1, anomalyTracker->getSumOverPastBuckets(DEFAULT_METRIC_DIMENSION_KEY)); + + // Next event should trigger creation of new bucket. + LogEvent event4(/*uid=*/0, /*pid=*/0); + CreateTwoValueLogEvent(&event4, tagId, bucketStartTimeNs + 125 * NS_PER_SEC, 1, 10); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, event4); + EXPECT_EQ(2L, gaugeProducer.mCurrentBucketNum); + EXPECT_EQ(3UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); + EXPECT_EQ(2, anomalyTracker->getSumOverPastBuckets(DEFAULT_METRIC_DIMENSION_KEY)); +} + +TEST(GaugeMetricProducerTest, TestPulledWithUpgrade) { + GaugeMetric metric; + metric.set_id(metricId); + metric.set_bucket(ONE_MINUTE); + metric.set_max_pull_delay_sec(INT_MAX); + auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); + gaugeFieldMatcher->set_field(tagId); + gaugeFieldMatcher->add_child()->set_field(2); + + sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); + + UidMap uidMap; + SimpleAtomMatcher atomMatcher; + atomMatcher.set_atom_id(tagId); + sp<EventMatcherWizard> eventMatcherWizard = + new EventMatcherWizard({new SimpleLogMatchingTracker( + atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); + + sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Return(false)) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, eventUpgradeTimeNs, 2)); + return true; + })); + + GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, + logEventMatcherIndex, eventMatcherWizard, tagId, -1, tagId, + bucketStartTimeNs, bucketStartTimeNs, pullerManager); + gaugeProducer.prepareFirstBucket(); + + vector<shared_ptr<LogEvent>> allData; + allData.push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 1, 1)); + gaugeProducer.onDataPulled(allData, /** succeed */ true, bucketStartTimeNs); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(1, gaugeProducer.mCurrentSlicedBucket->begin() + ->second.front() + .mFields->begin() + ->mValue.int_value); + + gaugeProducer.notifyAppUpgrade(eventUpgradeTimeNs, "ANY.APP", 1, 1); + EXPECT_EQ(1UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); + EXPECT_EQ(0L, gaugeProducer.mCurrentBucketNum); + EXPECT_EQ((int64_t)eventUpgradeTimeNs, gaugeProducer.mCurrentBucketStartTimeNs); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(2, gaugeProducer.mCurrentSlicedBucket->begin() + ->second.front() + .mFields->begin() + ->mValue.int_value); + + allData.clear(); + allData.push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + bucketSizeNs + 1, 3)); + gaugeProducer.onDataPulled(allData, /** succeed */ true, bucketStartTimeNs + bucketSizeNs); + EXPECT_EQ(2UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(3, gaugeProducer.mCurrentSlicedBucket->begin() + ->second.front() + .mFields->begin() + ->mValue.int_value); +} + +TEST(GaugeMetricProducerTest, TestPulledWithAppUpgradeDisabled) { + GaugeMetric metric; + metric.set_id(metricId); + metric.set_bucket(ONE_MINUTE); + metric.set_max_pull_delay_sec(INT_MAX); + metric.set_split_bucket_for_app_upgrade(false); + auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); + gaugeFieldMatcher->set_field(tagId); + gaugeFieldMatcher->add_child()->set_field(2); + + sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); + + UidMap uidMap; + SimpleAtomMatcher atomMatcher; + atomMatcher.set_atom_id(tagId); + sp<EventMatcherWizard> eventMatcherWizard = + new EventMatcherWizard({new SimpleLogMatchingTracker( + atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); + + sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)).WillOnce(Return(false)); + + GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, + logEventMatcherIndex, eventMatcherWizard, tagId, -1, tagId, + bucketStartTimeNs, bucketStartTimeNs, pullerManager); + gaugeProducer.prepareFirstBucket(); + + vector<shared_ptr<LogEvent>> allData; + allData.push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 1, 1)); + gaugeProducer.onDataPulled(allData, /** succeed */ true, bucketStartTimeNs); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(1, gaugeProducer.mCurrentSlicedBucket->begin() + ->second.front() + .mFields->begin() + ->mValue.int_value); + + gaugeProducer.notifyAppUpgrade(eventUpgradeTimeNs, "ANY.APP", 1, 1); + EXPECT_EQ(0UL, gaugeProducer.mPastBuckets[DEFAULT_METRIC_DIMENSION_KEY].size()); + EXPECT_EQ(0L, gaugeProducer.mCurrentBucketNum); + EXPECT_EQ(bucketStartTimeNs, gaugeProducer.mCurrentBucketStartTimeNs); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(1, gaugeProducer.mCurrentSlicedBucket->begin() + ->second.front() + .mFields->begin() + ->mValue.int_value); +} + +TEST(GaugeMetricProducerTest, TestPulledEventsWithCondition) { + GaugeMetric metric; + metric.set_id(metricId); + metric.set_bucket(ONE_MINUTE); + metric.set_max_pull_delay_sec(INT_MAX); + auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); + gaugeFieldMatcher->set_field(tagId); + gaugeFieldMatcher->add_child()->set_field(2); + metric.set_condition(StringToId("SCREEN_ON")); + + sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); + + UidMap uidMap; + SimpleAtomMatcher atomMatcher; + atomMatcher.set_atom_id(tagId); + sp<EventMatcherWizard> eventMatcherWizard = + new EventMatcherWizard({new SimpleLogMatchingTracker( + atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); + + sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 10, 100)); + return true; + })); + + GaugeMetricProducer gaugeProducer(kConfigKey, metric, 1, wizard, logEventMatcherIndex, + eventMatcherWizard, tagId, -1, tagId, bucketStartTimeNs, + bucketStartTimeNs, pullerManager); + gaugeProducer.prepareFirstBucket(); + + gaugeProducer.onConditionChanged(true, bucketStartTimeNs + 8); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(100, gaugeProducer.mCurrentSlicedBucket->begin() + ->second.front() + .mFields->begin() + ->mValue.int_value); + EXPECT_EQ(0UL, gaugeProducer.mPastBuckets.size()); + + vector<shared_ptr<LogEvent>> allData; + allData.clear(); + allData.push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs + 1, 110)); + gaugeProducer.onDataPulled(allData, /** succeed */ true, bucket2StartTimeNs); + + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(110, gaugeProducer.mCurrentSlicedBucket->begin() + ->second.front() + .mFields->begin() + ->mValue.int_value); + EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); + EXPECT_EQ(100, gaugeProducer.mPastBuckets.begin() + ->second.back() + .mGaugeAtoms.front() + .mFields->begin() + ->mValue.int_value); + + gaugeProducer.onConditionChanged(false, bucket2StartTimeNs + 10); + gaugeProducer.flushIfNeededLocked(bucket3StartTimeNs + 10); + EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); + EXPECT_EQ(2UL, gaugeProducer.mPastBuckets.begin()->second.size()); + EXPECT_EQ(110L, gaugeProducer.mPastBuckets.begin() + ->second.back() + .mGaugeAtoms.front() + .mFields->begin() + ->mValue.int_value); +} + +TEST(GaugeMetricProducerTest, TestPulledEventsWithSlicedCondition) { + const int conditionTag = 65; + GaugeMetric metric; + metric.set_id(1111111); + metric.set_bucket(ONE_MINUTE); + metric.mutable_gauge_fields_filter()->set_include_all(true); + metric.set_condition(StringToId("APP_DIED")); + metric.set_max_pull_delay_sec(INT_MAX); + auto dim = metric.mutable_dimensions_in_what(); + dim->set_field(tagId); + dim->add_child()->set_field(1); + + UidMap uidMap; + SimpleAtomMatcher atomMatcher; + atomMatcher.set_atom_id(tagId); + sp<EventMatcherWizard> eventMatcherWizard = + new EventMatcherWizard({new SimpleLogMatchingTracker( + atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); + + sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); + EXPECT_CALL(*wizard, query(_, _, _)) + .WillRepeatedly( + Invoke([](const int conditionIndex, const ConditionKey& conditionParameters, + const bool isPartialLink) { + int pos[] = {1, 0, 0}; + Field f(conditionTag, pos, 0); + HashableDimensionKey key; + key.mutableValues()->emplace_back(f, Value((int32_t)1000000)); + + return ConditionState::kTrue; + })); + + sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs + 10, 1000, 100)); + return true; + })); + + GaugeMetricProducer gaugeProducer(kConfigKey, metric, 1, wizard, logEventMatcherIndex, + eventMatcherWizard, tagId, -1, tagId, bucketStartTimeNs, + bucketStartTimeNs, pullerManager); + gaugeProducer.prepareFirstBucket(); + + gaugeProducer.onSlicedConditionMayChange(true, bucketStartTimeNs + 8); + + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + const auto& key = gaugeProducer.mCurrentSlicedBucket->begin()->first; + EXPECT_EQ(1UL, key.getDimensionKeyInWhat().getValues().size()); + EXPECT_EQ(1000, key.getDimensionKeyInWhat().getValues()[0].mValue.int_value); + + EXPECT_EQ(0UL, gaugeProducer.mPastBuckets.size()); + + vector<shared_ptr<LogEvent>> allData; + allData.clear(); + allData.push_back(CreateTwoValueLogEvent(tagId, bucket2StartTimeNs + 1, 1000, 110)); + gaugeProducer.onDataPulled(allData, /** succeed */ true, bucket2StartTimeNs); + + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); +} + +TEST(GaugeMetricProducerTest, TestPulledEventsAnomalyDetection) { + sp<AlarmMonitor> alarmMonitor; + sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); + + sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)).WillOnce(Return(false)); + + GaugeMetric metric; + metric.set_id(metricId); + metric.set_bucket(ONE_MINUTE); + metric.set_max_pull_delay_sec(INT_MAX); + auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); + gaugeFieldMatcher->set_field(tagId); + gaugeFieldMatcher->add_child()->set_field(2); + + UidMap uidMap; + SimpleAtomMatcher atomMatcher; + atomMatcher.set_atom_id(tagId); + sp<EventMatcherWizard> eventMatcherWizard = + new EventMatcherWizard({new SimpleLogMatchingTracker( + atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); + + GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, + logEventMatcherIndex, eventMatcherWizard, tagId, -1, tagId, + bucketStartTimeNs, bucketStartTimeNs, pullerManager); + gaugeProducer.prepareFirstBucket(); + + Alert alert; + alert.set_id(101); + alert.set_metric_id(metricId); + alert.set_trigger_if_sum_gt(25); + alert.set_num_buckets(2); + const int32_t refPeriodSec = 60; + alert.set_refractory_period_secs(refPeriodSec); + sp<AnomalyTracker> anomalyTracker = gaugeProducer.addAnomalyTracker(alert, alarmMonitor); + + int tagId = 1; + vector<shared_ptr<LogEvent>> allData; + allData.clear(); + allData.push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 1, 13)); + gaugeProducer.onDataPulled(allData, /** succeed */ true, bucketStartTimeNs); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(13L, gaugeProducer.mCurrentSlicedBucket->begin() + ->second.front() + .mFields->begin() + ->mValue.int_value); + EXPECT_EQ(anomalyTracker->getRefractoryPeriodEndsSec(DEFAULT_METRIC_DIMENSION_KEY), 0U); + + std::shared_ptr<LogEvent> event2 = + CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + bucketSizeNs + 20, 15); + + allData.clear(); + allData.push_back(event2); + gaugeProducer.onDataPulled(allData, /** succeed */ true, bucketStartTimeNs + bucketSizeNs); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(15L, gaugeProducer.mCurrentSlicedBucket->begin() + ->second.front() + .mFields->begin() + ->mValue.int_value); + EXPECT_EQ(anomalyTracker->getRefractoryPeriodEndsSec(DEFAULT_METRIC_DIMENSION_KEY), + std::ceil(1.0 * event2->GetElapsedTimestampNs() / NS_PER_SEC) + refPeriodSec); + + allData.clear(); + allData.push_back( + CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 2 * bucketSizeNs + 10, 26)); + gaugeProducer.onDataPulled(allData, /** succeed */ true, bucket2StartTimeNs + 2 * bucketSizeNs); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(26L, gaugeProducer.mCurrentSlicedBucket->begin() + ->second.front() + .mFields->begin() + ->mValue.int_value); + EXPECT_EQ(anomalyTracker->getRefractoryPeriodEndsSec(DEFAULT_METRIC_DIMENSION_KEY), + std::ceil(1.0 * event2->GetElapsedTimestampNs() / NS_PER_SEC + refPeriodSec)); + + // This event does not have the gauge field. Thus the current bucket value is 0. + allData.clear(); + allData.push_back(CreateNoValuesLogEvent(tagId, bucketStartTimeNs + 3 * bucketSizeNs + 10)); + gaugeProducer.onDataPulled(allData, /** succeed */ true, bucketStartTimeNs + 3 * bucketSizeNs); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_TRUE(gaugeProducer.mCurrentSlicedBucket->begin()->second.front().mFields->empty()); +} + +TEST(GaugeMetricProducerTest, TestPullOnTrigger) { + GaugeMetric metric; + metric.set_id(metricId); + metric.set_bucket(ONE_MINUTE); + metric.set_sampling_type(GaugeMetric::FIRST_N_SAMPLES); + metric.mutable_gauge_fields_filter()->set_include_all(false); + metric.set_max_pull_delay_sec(INT_MAX); + auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields(); + gaugeFieldMatcher->set_field(tagId); + gaugeFieldMatcher->add_child()->set_field(1); + + sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); + + UidMap uidMap; + SimpleAtomMatcher atomMatcher; + atomMatcher.set_atom_id(tagId); + sp<EventMatcherWizard> eventMatcherWizard = + new EventMatcherWizard({new SimpleLogMatchingTracker( + atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); + + sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 10, 4)); + return true; + })) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 20, 5)); + return true; + })) + .WillOnce(Return(true)); + + int triggerId = 5; + GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, + logEventMatcherIndex, eventMatcherWizard, tagId, triggerId, + tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + gaugeProducer.prepareFirstBucket(); + + EXPECT_EQ(0UL, gaugeProducer.mCurrentSlicedBucket->size()); + + LogEvent triggerEvent(/*uid=*/0, /*pid=*/0); + CreateNoValuesLogEvent(&triggerEvent, triggerId, bucketStartTimeNs + 10); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, triggerEvent); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->begin()->second.size()); + triggerEvent.setElapsedTimestampNs(bucketStartTimeNs + 20); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, triggerEvent); + EXPECT_EQ(2UL, gaugeProducer.mCurrentSlicedBucket->begin()->second.size()); + triggerEvent.setElapsedTimestampNs(bucket2StartTimeNs + 1); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, triggerEvent); + + EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.size()); + EXPECT_EQ(2UL, gaugeProducer.mPastBuckets.begin()->second.back().mGaugeAtoms.size()); + EXPECT_EQ(4, gaugeProducer.mPastBuckets.begin() + ->second.back() + .mGaugeAtoms[0] + .mFields->begin() + ->mValue.int_value); + EXPECT_EQ(5, gaugeProducer.mPastBuckets.begin() + ->second.back() + .mGaugeAtoms[1] + .mFields->begin() + ->mValue.int_value); +} + +TEST(GaugeMetricProducerTest, TestRemoveDimensionInOutput) { + GaugeMetric metric; + metric.set_id(metricId); + metric.set_bucket(ONE_MINUTE); + metric.set_sampling_type(GaugeMetric::FIRST_N_SAMPLES); + metric.mutable_gauge_fields_filter()->set_include_all(true); + metric.set_max_pull_delay_sec(INT_MAX); + auto dimensionMatcher = metric.mutable_dimensions_in_what(); + // use field 1 as dimension. + dimensionMatcher->set_field(tagId); + dimensionMatcher->add_child()->set_field(1); + + sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); + + UidMap uidMap; + SimpleAtomMatcher atomMatcher; + atomMatcher.set_atom_id(tagId); + sp<EventMatcherWizard> eventMatcherWizard = + new EventMatcherWizard({new SimpleLogMatchingTracker( + atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); + + sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs + 3, 3, 4)); + return true; + })) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs + 10, 4, 5)); + return true; + })) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs + 20, 4, 6)); + return true; + })) + .WillOnce(Return(true)); + + int triggerId = 5; + GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, + logEventMatcherIndex, eventMatcherWizard, tagId, triggerId, + tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + gaugeProducer.prepareFirstBucket(); + + LogEvent triggerEvent(/*uid=*/0, /*pid=*/0); + CreateNoValuesLogEvent(&triggerEvent, triggerId, bucketStartTimeNs + 3); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, triggerEvent); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->size()); + triggerEvent.setElapsedTimestampNs(bucketStartTimeNs + 10); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, triggerEvent); + EXPECT_EQ(2UL, gaugeProducer.mCurrentSlicedBucket->size()); + EXPECT_EQ(1UL, gaugeProducer.mCurrentSlicedBucket->begin()->second.size()); + triggerEvent.setElapsedTimestampNs(bucketStartTimeNs + 20); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, triggerEvent); + EXPECT_EQ(2UL, gaugeProducer.mCurrentSlicedBucket->begin()->second.size()); + triggerEvent.setElapsedTimestampNs(bucket2StartTimeNs + 1); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, triggerEvent); + + EXPECT_EQ(2UL, gaugeProducer.mPastBuckets.size()); + auto bucketIt = gaugeProducer.mPastBuckets.begin(); + EXPECT_EQ(1UL, bucketIt->second.back().mGaugeAtoms.size()); + EXPECT_EQ(3, bucketIt->first.getDimensionKeyInWhat().getValues().begin()->mValue.int_value); + EXPECT_EQ(4, bucketIt->second.back().mGaugeAtoms[0].mFields->begin()->mValue.int_value); + bucketIt++; + EXPECT_EQ(2UL, bucketIt->second.back().mGaugeAtoms.size()); + EXPECT_EQ(4, bucketIt->first.getDimensionKeyInWhat().getValues().begin()->mValue.int_value); + EXPECT_EQ(5, bucketIt->second.back().mGaugeAtoms[0].mFields->begin()->mValue.int_value); + EXPECT_EQ(6, bucketIt->second.back().mGaugeAtoms[1].mFields->begin()->mValue.int_value); +} + +/* + * Test that BUCKET_TOO_SMALL dump reason is logged when a flushed bucket size + * is smaller than the "min_bucket_size_nanos" specified in the metric config. + */ +TEST(GaugeMetricProducerTest_BucketDrop, TestBucketDropWhenBucketTooSmall) { + GaugeMetric metric; + metric.set_id(metricId); + metric.set_bucket(FIVE_MINUTES); + metric.set_sampling_type(GaugeMetric::FIRST_N_SAMPLES); + metric.set_min_bucket_size_nanos(10000000000); // 10 seconds + + sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); + + UidMap uidMap; + SimpleAtomMatcher atomMatcher; + atomMatcher.set_atom_id(tagId); + sp<EventMatcherWizard> eventMatcherWizard = + new EventMatcherWizard({new SimpleLogMatchingTracker( + atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); + + sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + // Bucket start. + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 10)); + return true; + })); + + int triggerId = 5; + GaugeMetricProducer gaugeProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, + logEventMatcherIndex, eventMatcherWizard, tagId, triggerId, + tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + gaugeProducer.prepareFirstBucket(); + + LogEvent triggerEvent(/*uid=*/0, /*pid=*/0); + CreateNoValuesLogEvent(&triggerEvent, triggerId, bucketStartTimeNs + 3); + gaugeProducer.onMatchedLogEvent(1 /*log matcher index*/, triggerEvent); + + // Check dump report. + ProtoOutputStream output; + std::set<string> strSet; + gaugeProducer.onDumpReport(bucketStartTimeNs + 9000000, true /* include recent buckets */, true, + FAST /* dump_latency */, &strSet, &output); + + StatsLogReport report = outputStreamToProto(&output); + EXPECT_TRUE(report.has_gauge_metrics()); + EXPECT_EQ(0, report.gauge_metrics().data_size()); + EXPECT_EQ(1, report.gauge_metrics().skipped_size()); + + EXPECT_EQ(NanoToMillis(bucketStartTimeNs), + report.gauge_metrics().skipped(0).start_bucket_elapsed_millis()); + EXPECT_EQ(NanoToMillis(bucketStartTimeNs + 9000000), + report.gauge_metrics().skipped(0).end_bucket_elapsed_millis()); + EXPECT_EQ(1, report.gauge_metrics().skipped(0).drop_event_size()); + + auto dropEvent = report.gauge_metrics().skipped(0).drop_event(0); + EXPECT_EQ(BucketDropReason::BUCKET_TOO_SMALL, dropEvent.drop_reason()); + EXPECT_EQ(NanoToMillis(bucketStartTimeNs + 9000000), dropEvent.drop_time_millis()); +} } // namespace statsd } // namespace os diff --git a/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp b/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp index c1d4693ce01c..b623a0978f18 100644 --- a/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp +++ b/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp @@ -90,12 +90,15 @@ public: new EventMatcherWizard({new SimpleLogMatchingTracker( atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); - EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillRepeatedly(Return()); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)) + .WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)) + .WillRepeatedly(Return()); sp<ValueMetricProducer> valueProducer = new ValueMetricProducer( kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, logEventMatcherIndex, eventMatcherWizard, tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer->prepareFirstBucket(); return valueProducer; } @@ -108,12 +111,15 @@ public: new EventMatcherWizard({new SimpleLogMatchingTracker( atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); - EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillRepeatedly(Return()); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)) + .WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)) + .WillRepeatedly(Return()); sp<ValueMetricProducer> valueProducer = new ValueMetricProducer( kConfigKey, metric, 1, wizard, logEventMatcherIndex, eventMatcherWizard, tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer->prepareFirstBucket(); valueProducer->mCondition = ConditionState::kFalse; return valueProducer; } @@ -127,12 +133,15 @@ public: new EventMatcherWizard({new SimpleLogMatchingTracker( atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); - EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillRepeatedly(Return()); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)) + .WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)) + .WillRepeatedly(Return()); sp<ValueMetricProducer> valueProducer = new ValueMetricProducer( kConfigKey, metric, 1, wizard, logEventMatcherIndex, eventMatcherWizard, tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer->prepareFirstBucket(); return valueProducer; } @@ -147,12 +156,15 @@ public: new EventMatcherWizard({new SimpleLogMatchingTracker( atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); - EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillRepeatedly(Return()); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)) + .WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)) + .WillRepeatedly(Return()); sp<ValueMetricProducer> valueProducer = new ValueMetricProducer( kConfigKey, metric, -1 /* no condition */, wizard, logEventMatcherIndex, eventMatcherWizard, tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager, {}, {}, slicedStateAtoms, stateGroupMap); + valueProducer->prepareFirstBucket(); return valueProducer; } @@ -200,6 +212,7 @@ TEST(ValueMetricProducerTest, TestCalcPreviousBucketEndTime) { ValueMetricProducer valueProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, logEventMatcherIndex, eventMatcherWizard, -1, startTimeBase, 22, pullerManager); + valueProducer.prepareFirstBucket(); EXPECT_EQ(startTimeBase, valueProducer.calcPreviousBucketEndTime(60 * NS_PER_SEC + 10)); EXPECT_EQ(startTimeBase, valueProducer.calcPreviousBucketEndTime(60 * NS_PER_SEC + 10)); @@ -229,6 +242,7 @@ TEST(ValueMetricProducerTest, TestFirstBucket) { ValueMetricProducer valueProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, logEventMatcherIndex, eventMatcherWizard, -1, 5, 600 * NS_PER_SEC + NS_PER_SEC / 2, pullerManager); + valueProducer.prepareFirstBucket(); EXPECT_EQ(600500000000, valueProducer.mCurrentBucketStartTimeNs); EXPECT_EQ(10, valueProducer.mCurrentBucketNum); @@ -241,12 +255,13 @@ TEST(ValueMetricProducerTest, TestFirstBucket) { TEST(ValueMetricProducerTest, TestPulledEventsNoCondition) { ValueMetric metric = ValueMetricProducerTestHelper::createMetric(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); - return true; - })); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); + return true; + })); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerNoConditions(pullerManager, metric); @@ -313,15 +328,17 @@ TEST(ValueMetricProducerTest, TestPulledEventsNoCondition) { TEST(ValueMetricProducerTest, TestPartialBucketCreated) { ValueMetric metric = ValueMetricProducerTestHelper::createMetric(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Initialize bucket. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 1, 1)); return true; })) // Partial bucket. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs + 10, 5)); return true; @@ -369,18 +386,20 @@ TEST(ValueMetricProducerTest, TestPulledEventsWithFiltering) { atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs, 3, 3)); - return true; - })); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs, 3, 3)); + return true; + })); sp<ValueMetricProducer> valueProducer = new ValueMetricProducer( kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, logEventMatcherIndex, eventMatcherWizard, tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer->prepareFirstBucket(); vector<shared_ptr<LogEvent>> allData; allData.clear(); @@ -440,7 +459,7 @@ TEST(ValueMetricProducerTest, TestPulledEventsTakeAbsoluteValueOnReset) { metric.set_use_absolute_value_on_reset(true); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)).WillOnce(Return(true)); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)).WillOnce(Return(true)); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerNoConditions(pullerManager, metric); @@ -499,7 +518,7 @@ TEST(ValueMetricProducerTest, TestPulledEventsTakeAbsoluteValueOnReset) { TEST(ValueMetricProducerTest, TestPulledEventsTakeZeroOnReset) { ValueMetric metric = ValueMetricProducerTestHelper::createMetric(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)).WillOnce(Return(false)); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)).WillOnce(Return(false)); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerNoConditions(pullerManager, metric); @@ -554,18 +573,21 @@ TEST(ValueMetricProducerTest, TestEventsWithNonSlicedCondition) { sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 8, 100)); return true; })) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs + 1, 130)); return true; })) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket3StartTimeNs + 1, 180)); return true; @@ -631,6 +653,7 @@ TEST(ValueMetricProducerTest, TestPushedEventsWithUpgrade) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, -1, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); LogEvent event1(/*uid=*/0, /*pid=*/0); CreateTwoValueLogEvent(&event1, tagId, bucketStartTimeNs + 10, 1, 10); @@ -666,11 +689,12 @@ TEST(ValueMetricProducerTest, TestPulledValueWithUpgrade) { atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) .WillOnce(Return(true)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs + 149, 120)); return true; @@ -678,6 +702,7 @@ TEST(ValueMetricProducerTest, TestPulledValueWithUpgrade) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); vector<shared_ptr<LogEvent>> allData; allData.clear(); @@ -714,12 +739,13 @@ TEST(ValueMetricProducerTest, TestPulledWithAppUpgradeDisabled) { atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, Pull(tagId, _)).WillOnce(Return(true)); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)).WillOnce(Return(true)); ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); vector<shared_ptr<LogEvent>> allData; allData.clear(); @@ -737,13 +763,15 @@ TEST(ValueMetricProducerTest, TestPulledValueWithUpgradeWhileConditionFalse) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 1, 100)); return true; })) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs - 100, 120)); return true; @@ -781,6 +809,7 @@ TEST(ValueMetricProducerTest, TestPushedEventsWithoutCondition) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, -1, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); LogEvent event1(/*uid=*/0, /*pid=*/0); CreateTwoValueLogEvent(&event1, tagId, bucketStartTimeNs + 10, 1, 10); @@ -823,6 +852,7 @@ TEST(ValueMetricProducerTest, TestPushedEventsWithCondition) { ValueMetricProducer valueProducer(kConfigKey, metric, 1, wizard, logEventMatcherIndex, eventMatcherWizard, -1, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); valueProducer.mCondition = ConditionState::kFalse; LogEvent event1(/*uid=*/0, /*pid=*/0); @@ -891,6 +921,7 @@ TEST(ValueMetricProducerTest, TestAnomalyDetection) { ValueMetricProducer valueProducer(kConfigKey, metric, -1 /*-1 meaning no condition*/, wizard, logEventMatcherIndex, eventMatcherWizard, -1 /*not pulled*/, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); sp<AnomalyTracker> anomalyTracker = valueProducer.addAnomalyTracker(alert, alarmMonitor); @@ -947,7 +978,7 @@ TEST(ValueMetricProducerTest, TestAnomalyDetection) { TEST(ValueMetricProducerTest, TestBucketBoundaryNoCondition) { ValueMetric metric = ValueMetricProducerTestHelper::createMetric(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)).WillOnce(Return(true)); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)).WillOnce(Return(true)); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerNoConditions(pullerManager, metric); @@ -1008,15 +1039,17 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryWithCondition) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // condition becomes true - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 8, 100)); return true; })) // condition becomes false - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs + 1, 120)); return true; @@ -1065,21 +1098,24 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryWithCondition2) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // condition becomes true - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 8, 100)); return true; })) // condition becomes false - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs + 1, 120)); return true; })) // condition becomes true again - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs + 25, 130)); return true; @@ -1156,6 +1192,7 @@ TEST(ValueMetricProducerTest, TestPushedAggregateMin) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, -1, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); LogEvent event1(/*uid=*/0, /*pid=*/0); CreateTwoValueLogEvent(&event1, tagId, bucketStartTimeNs + 10, 1, 10); @@ -1198,6 +1235,7 @@ TEST(ValueMetricProducerTest, TestPushedAggregateMax) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, -1, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); LogEvent event1(/*uid=*/0, /*pid=*/0); CreateTwoValueLogEvent(&event1, tagId, bucketStartTimeNs + 10, 1, 10); @@ -1242,6 +1280,7 @@ TEST(ValueMetricProducerTest, TestPushedAggregateAvg) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, -1, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); LogEvent event1(/*uid=*/0, /*pid=*/0); CreateTwoValueLogEvent(&event1, tagId, bucketStartTimeNs + 10, 1, 10); @@ -1289,6 +1328,7 @@ TEST(ValueMetricProducerTest, TestPushedAggregateSum) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, -1, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); LogEvent event1(/*uid=*/0, /*pid=*/0); CreateTwoValueLogEvent(&event1, tagId, bucketStartTimeNs + 10, 1, 10); @@ -1331,6 +1371,7 @@ TEST(ValueMetricProducerTest, TestSkipZeroDiffOutput) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, -1, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); LogEvent event1(/*uid=*/0, /*pid=*/0); CreateTwoValueLogEvent(&event1, tagId, bucketStartTimeNs + 10, 1, 10); @@ -1400,6 +1441,7 @@ TEST(ValueMetricProducerTest, TestSkipZeroDiffOutputMultiValue) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, -1, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); LogEvent event1(/*uid=*/0, /*pid=*/0); CreateThreeValueLogEvent(&event1, tagId, bucketStartTimeNs + 10, 1, 10, 20); @@ -1496,12 +1538,13 @@ TEST(ValueMetricProducerTest, TestUseZeroDefaultBase) { metric.set_use_zero_default_base(true); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs, 1, 3)); - return true; - })); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs, 1, 3)); + return true; + })); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerNoConditions(pullerManager, metric); @@ -1571,12 +1614,13 @@ TEST(ValueMetricProducerTest, TestUseZeroDefaultBaseWithPullFailures) { metric.set_use_zero_default_base(true); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs, 1, 3)); - return true; - })); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs, 1, 3)); + return true; + })); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerNoConditions(pullerManager, metric); @@ -1675,12 +1719,13 @@ TEST(ValueMetricProducerTest, TestTrimUnusedDimensionKey) { metric.mutable_dimensions_in_what()->add_child()->set_field(1); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs, 1, 3)); - return true; - })); + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs, 1, 3)); + return true; + })); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerNoConditions(pullerManager, metric); @@ -1772,8 +1817,9 @@ TEST(ValueMetricProducerTest, TestResetBaseOnPullFailAfterConditionChange_EndOfB sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); // Used by onConditionChanged. - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 8, 100)); return true; @@ -1804,8 +1850,9 @@ TEST(ValueMetricProducerTest, TestResetBaseOnPullFailAfterConditionChange) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 8, 100)); return true; @@ -1840,13 +1887,15 @@ TEST(ValueMetricProducerTest, TestResetBaseOnPullFailBeforeConditionChange) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 50)); - return false; - })) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 50)); + return false; + })) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 8, 100)); return true; @@ -1878,8 +1927,9 @@ TEST(ValueMetricProducerTest, TestResetBaseOnPullDelayExceeded) { metric.set_max_pull_delay_sec(0); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 1, 120)); return true; @@ -1906,12 +1956,13 @@ TEST(ValueMetricProducerTest, TestResetBaseOnPullTooLate) { atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillRepeatedly(Return()); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillRepeatedly(Return()); ValueMetricProducer valueProducer(kConfigKey, metric, 1, wizard, logEventMatcherIndex, eventMatcherWizard, tagId, bucket2StartTimeNs, bucket2StartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); valueProducer.mCondition = ConditionState::kFalse; // Event should be skipped since it is from previous bucket. @@ -1924,8 +1975,9 @@ TEST(ValueMetricProducerTest, TestBaseSetOnConditionChange) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 1, 100)); return true; @@ -1956,11 +2008,12 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenOneConditionFailed ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // First onConditionChanged .WillOnce(Return(false)) // Second onConditionChanged - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 8, 130)); return true; @@ -2032,9 +2085,10 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenGuardRailHit) { metric.set_condition(StringToId("SCREEN_ON")); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // First onConditionChanged - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { for (int i = 0; i < 2000; i++) { data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 1, i)); } @@ -2088,15 +2142,17 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenInitialPullFailed) ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // First onConditionChanged - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 8, 120)); return true; })) // Second onConditionChanged - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 8, 130)); return true; @@ -2164,15 +2220,17 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenLastPullFailed) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // First onConditionChanged - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 8, 120)); return true; })) // Second onConditionChanged - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 8, 130)); return true; @@ -2234,13 +2292,14 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenLastPullFailed) { TEST(ValueMetricProducerTest, TestEmptyDataResetsBase_onDataPulled) { ValueMetric metric = ValueMetricProducerTestHelper::createMetric(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Start bucket. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); - return true; - })); + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); + return true; + })); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerNoConditions(pullerManager, metric); @@ -2266,17 +2325,19 @@ TEST(ValueMetricProducerTest, TestEmptyDataResetsBase_onConditionChanged) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // First onConditionChanged - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); - return true; - })) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - return true; - })); + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); + return true; + })) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + return true; + })); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerWithCondition(pullerManager, metric); @@ -2304,23 +2365,26 @@ TEST(ValueMetricProducerTest, TestEmptyDataResetsBase_onBucketBoundary) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // First onConditionChanged - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); - return true; - })) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 2)); - return true; - })) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 5)); - return true; - })); + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); + return true; + })) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 2)); + return true; + })) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 5)); + return true; + })); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerWithCondition(pullerManager, metric); @@ -2360,13 +2424,14 @@ TEST(ValueMetricProducerTest, TestPartialResetOnBucketBoundaries) { metric.set_condition(StringToId("SCREEN_ON")); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // First onConditionChanged - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); - return true; - })); + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); + return true; + })); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerWithCondition(pullerManager, metric); @@ -2400,15 +2465,17 @@ TEST(ValueMetricProducerTest, TestFullBucketResetWhenLastBucketInvalid) { ValueMetric metric = ValueMetricProducerTestHelper::createMetric(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Initialization. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); - return true; - })) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); + return true; + })) // notifyAppUpgrade. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent( tagId, bucketStartTimeNs + bucketSizeNs / 2, 10)); @@ -2430,15 +2497,17 @@ TEST(ValueMetricProducerTest, TestFullBucketResetWhenLastBucketInvalid) { TEST(ValueMetricProducerTest, TestBucketBoundariesOnConditionChange) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Second onConditionChanged. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs + 10, 5)); return true; })) // Third onConditionChanged. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket3StartTimeNs + 10, 7)); return true; @@ -2495,13 +2564,14 @@ TEST(ValueMetricProducerTest, TestLateOnDataPulledWithDiff) { ValueMetric metric = ValueMetricProducerTestHelper::createMetric(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Initialization. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); - return true; - })); + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); + return true; + })); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerNoConditions(pullerManager, metric); @@ -2522,15 +2592,17 @@ TEST(ValueMetricProducerTest, TestBucketBoundariesOnAppUpgrade) { ValueMetric metric = ValueMetricProducerTestHelper::createMetric(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Initialization. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); - return true; - })) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); + return true; + })) // notifyAppUpgrade. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs + 2, 10)); return true; @@ -2549,19 +2621,21 @@ TEST(ValueMetricProducerTest, TestDataIsNotUpdatedWhenNoConditionChanged) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // First on condition changed. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); - return true; - })) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); + return true; + })) // Second on condition changed. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); - return true; - })); + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); + return true; + })); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerWithCondition(pullerManager, metric); @@ -2588,25 +2662,28 @@ TEST(ValueMetricProducerTest, TestBucketInvalidIfGlobalBaseIsNotSet) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // First condition change. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); - return true; - })) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 1)); + return true; + })) // 2nd condition change. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs, 1)); - return true; - })) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs, 1)); + return true; + })) // 3rd condition change. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs, 1)); - return true; - })); + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs, 1)); + return true; + })); sp<ValueMetricProducer> valueProducer = ValueMetricProducerTestHelper::createValueProducerWithCondition(pullerManager, metric); @@ -2642,12 +2719,13 @@ TEST(ValueMetricProducerTest, TestPullNeededFastDump) { atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillRepeatedly(Return()); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillRepeatedly(Return()); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Initial pull. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateThreeValueLogEvent(tagId, bucketStartTimeNs, tagId, 1, 1)); return true; @@ -2656,6 +2734,7 @@ TEST(ValueMetricProducerTest, TestPullNeededFastDump) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); ProtoOutputStream output; std::set<string> strSet; @@ -2678,12 +2757,13 @@ TEST(ValueMetricProducerTest, TestFastDumpWithoutCurrentBucket) { atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillRepeatedly(Return()); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillRepeatedly(Return()); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Initial pull. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateThreeValueLogEvent(tagId, bucketStartTimeNs, tagId, 1, 1)); return true; @@ -2692,6 +2772,7 @@ TEST(ValueMetricProducerTest, TestFastDumpWithoutCurrentBucket) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); vector<shared_ptr<LogEvent>> allData; allData.clear(); @@ -2720,17 +2801,19 @@ TEST(ValueMetricProducerTest, TestPullNeededNoTimeConstraints) { atomMatcherId, logEventMatcherIndex, atomMatcher, uidMap)}); sp<MockConditionWizard> wizard = new NaggyMock<MockConditionWizard>(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, _, _, _)).WillOnce(Return()); - EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, _)).WillRepeatedly(Return()); + EXPECT_CALL(*pullerManager, RegisterReceiver(tagId, kConfigKey, _, _, _)).WillOnce(Return()); + EXPECT_CALL(*pullerManager, UnRegisterReceiver(tagId, kConfigKey, _)).WillRepeatedly(Return()); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Initial pull. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateThreeValueLogEvent(tagId, bucketStartTimeNs, tagId, 1, 1)); return true; })) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back( CreateThreeValueLogEvent(tagId, bucketStartTimeNs + 10, tagId, 3, 3)); @@ -2740,6 +2823,7 @@ TEST(ValueMetricProducerTest, TestPullNeededNoTimeConstraints) { ValueMetricProducer valueProducer(kConfigKey, metric, -1, wizard, logEventMatcherIndex, eventMatcherWizard, tagId, bucketStartTimeNs, bucketStartTimeNs, pullerManager); + valueProducer.prepareFirstBucket(); ProtoOutputStream output; std::set<string> strSet; @@ -2773,15 +2857,17 @@ TEST(ValueMetricProducerTest, TestPulledData_noDiff_withMultipleConditionChanges metric.set_use_diff(false); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // condition becomes true - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 30, 10)); return true; })) // condition becomes false - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 50, 20)); return true; @@ -2818,9 +2904,10 @@ TEST(ValueMetricProducerTest, TestPulledData_noDiff_bucketBoundaryTrue) { metric.set_use_diff(false); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // condition becomes true - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 30, 10)); return true; @@ -2867,9 +2954,10 @@ TEST(ValueMetricProducerTest, TestPulledData_noDiff_withFailure) { metric.set_use_diff(false); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // condition becomes true - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 30, 10)); return true; @@ -2905,9 +2993,10 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenDumpReportRequeste ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Condition change to true. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 20, 10)); return true; @@ -2949,9 +3038,10 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenConditionEventWron ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Condition change to true. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 50, 10)); return true; @@ -3001,15 +3091,17 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenAccumulateEventWro ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Condition change to true. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 50, 10)); return true; })) // Dump report requested. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket2StartTimeNs + 100, 15)); return true; @@ -3062,15 +3154,17 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenConditionUnknown) ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Condition change to true. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 50, 10)); return true; })) // Dump report requested. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 100, 15)); return true; @@ -3114,9 +3208,10 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenPullFailed) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Condition change to true. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 50, 10)); return true; @@ -3161,15 +3256,17 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenMultipleBucketsSki ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Condition change to true. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 10, 10)); return true; })) // Dump report requested. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucket4StartTimeNs + 1000, 15)); return true; @@ -3215,15 +3312,17 @@ TEST(ValueMetricProducerTest_BucketDrop, TestBucketDropWhenBucketTooSmall) { metric.set_min_bucket_size_nanos(10000000000); // 10 seconds sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Condition change to true. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 10, 10)); return true; })) // Dump report requested. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back( CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 9000000, 15)); @@ -3266,9 +3365,10 @@ TEST(ValueMetricProducerTest_BucketDrop, TestMultipleBucketDropEvents) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // Condition change to true. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 10, 10)); return true; @@ -3316,9 +3416,10 @@ TEST(ValueMetricProducerTest_BucketDrop, TestMaxBucketDropEvents) { ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithCondition(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // First condition change event. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { for (int i = 0; i < 2000; i++) { data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 1, i)); } @@ -3333,7 +3434,8 @@ TEST(ValueMetricProducerTest_BucketDrop, TestMaxBucketDropEvents) { .WillOnce(Return(false)) .WillOnce(Return(false)) .WillOnce(Return(false)) - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 220, 10)); return true; @@ -3431,33 +3533,38 @@ TEST(ValueMetricProducerTest, TestSlicedState) { // Set up ValueMetricProducer. ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithState("SCREEN_STATE"); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // ValueMetricProducer initialized. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); - return true; - })) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); + return true; + })) // Screen state change to ON. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 5, 5)); return true; })) // Screen state change to OFF. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 10, 9)); return true; })) // Screen state change to ON. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 15, 21)); return true; })) // Dump report requested. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 50, 30)); return true; @@ -3582,33 +3689,38 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithMap) { // Set up ValueMetricProducer. ValueMetric metric = ValueMetricProducerTestHelper::createMetricWithState("SCREEN_STATE_ONOFF"); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // ValueMetricProducer initialized. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { - data->clear(); - data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); - return true; - })) + .WillOnce(Invoke( + [](int tagId, const ConfigKey&, vector<std::shared_ptr<LogEvent>>* data, bool) { + data->clear(); + data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs, 3)); + return true; + })) // Screen state change to ON. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 5, 5)); return true; })) // Screen state change to VR. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 10, 9)); return true; })) // Screen state change to OFF. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 15, 21)); return true; })) // Dump report requested. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateRepeatedValueLogEvent(tagId, bucketStartTimeNs + 50, 30)); return true; @@ -3748,16 +3860,18 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) { *fieldsInState = CreateDimensions(UID_PROCESS_STATE_ATOM_ID, {1 /* uid */}); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(tagId, _)) + EXPECT_CALL(*pullerManager, Pull(tagId, kConfigKey, _, _)) // ValueMetricProducer initialized. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs, 2 /*uid*/, 7)); data->push_back(CreateTwoValueLogEvent(tagId, bucketStartTimeNs, 1 /*uid*/, 3)); return true; })) // Uid 1 process state change from kStateUnknown -> Foreground - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back( CreateTwoValueLogEvent(tagId, bucketStartTimeNs + 20, 1 /*uid*/, 6)); @@ -3768,7 +3882,8 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) { return true; })) // Uid 2 process state change from kStateUnknown -> Background - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back( CreateTwoValueLogEvent(tagId, bucketStartTimeNs + 40, 2 /*uid*/, 9)); @@ -3779,7 +3894,8 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) { return true; })) // Uid 1 process state change from Foreground -> Background - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back( CreateTwoValueLogEvent(tagId, bucket2StartTimeNs + 20, 1 /*uid*/, 13)); @@ -3790,7 +3906,8 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) { return true; })) // Uid 1 process state change from Background -> Foreground - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back( CreateTwoValueLogEvent(tagId, bucket2StartTimeNs + 40, 1 /*uid*/, 17)); @@ -3801,7 +3918,8 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) { return true; })) // Dump report pull. - .WillOnce(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + .WillOnce(Invoke([](int tagId, const ConfigKey&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back( CreateTwoValueLogEvent(tagId, bucket2StartTimeNs + 50, 2 /*uid*/, 20)); diff --git a/cmds/statsd/tests/metrics/metrics_test_helper.h b/cmds/statsd/tests/metrics/metrics_test_helper.h index 09c4d9e41fc2..69f7e3f49792 100644 --- a/cmds/statsd/tests/metrics/metrics_test_helper.h +++ b/cmds/statsd/tests/metrics/metrics_test_helper.h @@ -33,15 +33,24 @@ public: class MockStatsPullerManager : public StatsPullerManager { public: - MOCK_METHOD4(RegisterReceiver, void(int tagId, wp<PullDataReceiver> receiver, - int64_t nextPulltimeNs, int64_t intervalNs)); - MOCK_METHOD2(UnRegisterReceiver, void(int tagId, wp<PullDataReceiver> receiver)); - MOCK_METHOD2(Pull, bool(const int pullCode, vector<std::shared_ptr<LogEvent>>* data)); + MOCK_METHOD5(RegisterReceiver, + void(int tagId, const ConfigKey& key, wp<PullDataReceiver> receiver, + int64_t nextPulltimeNs, int64_t intervalNs)); + MOCK_METHOD3(UnRegisterReceiver, + void(int tagId, const ConfigKey& key, wp<PullDataReceiver> receiver)); + MOCK_METHOD4(Pull, bool(const int pullCode, const ConfigKey& key, + vector<std::shared_ptr<LogEvent>>* data, bool useUids)); + MOCK_METHOD4(Pull, bool(const int pullCode, const vector<int32_t>& uids, + vector<std::shared_ptr<LogEvent>>* data, bool useUids)); + MOCK_METHOD2(RegisterPullUidProvider, + void(const ConfigKey& configKey, wp<PullUidProvider> provider)); + MOCK_METHOD1(UnregisterPullUidProvider, void(const ConfigKey& configKey)); }; class MockUidMap : public UidMap { public: MOCK_CONST_METHOD1(getHostUidOrSelf, int(int uid)); + MOCK_CONST_METHOD1(getAppUid, std::set<int32_t>(const string& package)); }; HashableDimensionKey getMockedDimensionKey(int tagId, int key, std::string value); diff --git a/cmds/statsd/tests/shell/ShellSubscriber_test.cpp b/cmds/statsd/tests/shell/ShellSubscriber_test.cpp index 5eef92e12ba9..ac3ad690f81e 100644 --- a/cmds/statsd/tests/shell/ShellSubscriber_test.cpp +++ b/cmds/statsd/tests/shell/ShellSubscriber_test.cpp @@ -187,8 +187,10 @@ TEST(ShellSubscriberTest, testPulledSubscription) { sp<MockUidMap> uidMap = new NaggyMock<MockUidMap>(); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); - EXPECT_CALL(*pullerManager, Pull(10016, _)) - .WillRepeatedly(Invoke([](int tagId, vector<std::shared_ptr<LogEvent>>* data) { + const vector<int32_t> uids = {AID_SYSTEM}; + EXPECT_CALL(*pullerManager, Pull(10016, uids, _, _)) + .WillRepeatedly(Invoke([](int tagId, const vector<int32_t>&, + vector<std::shared_ptr<LogEvent>>* data, bool) { data->clear(); data->push_back(makeCpuActiveTimeAtom(/*uid=*/kUid1, /*timeMillis=*/kCpuTime1)); data->push_back(makeCpuActiveTimeAtom(/*uid=*/kUid2, /*timeMillis=*/kCpuTime2)); diff --git a/cmds/statsd/tests/statsd_test_util.cpp b/cmds/statsd/tests/statsd_test_util.cpp index c7838fcddb53..8c8836b94f56 100644 --- a/cmds/statsd/tests/statsd_test_util.cpp +++ b/cmds/statsd/tests/statsd_test_util.cpp @@ -428,7 +428,7 @@ shared_ptr<LogEvent> CreateTwoValueLogEvent(int atomId, int64_t eventTimeNs, int return logEvent; } -// + void CreateTwoValueLogEvent(LogEvent* logEvent, int atomId, int64_t eventTimeNs, int32_t value1, int32_t value2) { AStatsEvent* statsEvent = AStatsEvent_obtain(); @@ -531,6 +531,18 @@ shared_ptr<LogEvent> CreateNoValuesLogEvent(int atomId, int64_t eventTimeNs) { return logEvent; } +void CreateNoValuesLogEvent(LogEvent* logEvent, int atomId, int64_t eventTimeNs) { + AStatsEvent* statsEvent = AStatsEvent_obtain(); + AStatsEvent_setAtomId(statsEvent, atomId); + AStatsEvent_overwriteTimestamp(statsEvent, eventTimeNs); + AStatsEvent_build(statsEvent); + + size_t size; + uint8_t* buf = AStatsEvent_getBuffer(statsEvent, &size); + logEvent->parseBuffer(buf, size); + AStatsEvent_release(statsEvent); +} + std::unique_ptr<LogEvent> CreateScreenStateChangedEvent( uint64_t timestampNs, const android::view::DisplayStateEnum state) { AStatsEvent* statsEvent = AStatsEvent_obtain(); diff --git a/cmds/statsd/tests/statsd_test_util.h b/cmds/statsd/tests/statsd_test_util.h index 05e1572e3aa9..7c017554d511 100644 --- a/cmds/statsd/tests/statsd_test_util.h +++ b/cmds/statsd/tests/statsd_test_util.h @@ -187,6 +187,8 @@ void CreateRepeatedValueLogEvent(LogEvent* logEvent, int atomId, int64_t eventTi std::shared_ptr<LogEvent> CreateNoValuesLogEvent(int atomId, int64_t eventTimeNs); +void CreateNoValuesLogEvent(LogEvent* logEvent, int atomId, int64_t eventTimeNs); + // Create log event for screen state changed. std::unique_ptr<LogEvent> CreateScreenStateChangedEvent( uint64_t timestampNs, const android::view::DisplayStateEnum state); diff --git a/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/testdrive/TestDrive.java b/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/testdrive/TestDrive.java index c97f03562857..75518a3ea56f 100644 --- a/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/testdrive/TestDrive.java +++ b/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/testdrive/TestDrive.java @@ -19,6 +19,7 @@ import com.android.internal.os.StatsdConfigProto.AtomMatcher; import com.android.internal.os.StatsdConfigProto.EventMetric; import com.android.internal.os.StatsdConfigProto.FieldFilter; import com.android.internal.os.StatsdConfigProto.GaugeMetric; +import com.android.internal.os.StatsdConfigProto.PullAtomPackages; import com.android.internal.os.StatsdConfigProto.SimpleAtomMatcher; import com.android.internal.os.StatsdConfigProto.StatsdConfig; import com.android.internal.os.StatsdConfigProto.TimeUnit; @@ -33,6 +34,7 @@ import com.google.common.io.Files; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -49,19 +51,22 @@ public class TestDrive { private static final int VENDOR_PULLED_ATOM_START_TAG = 150000; private static final long CONFIG_ID = 54321; private static final String[] ALLOWED_LOG_SOURCES = { - "AID_GRAPHICS", - "AID_INCIDENTD", - "AID_STATSD", - "AID_RADIO", - "com.android.systemui", - "com.android.vending", - "AID_SYSTEM", - "AID_ROOT", - "AID_BLUETOOTH", - "AID_LMKD", - "com.android.managedprovisioning", - "AID_MEDIA", - "AID_NETWORK_STACK" + "AID_GRAPHICS", + "AID_INCIDENTD", + "AID_STATSD", + "AID_RADIO", + "com.android.systemui", + "com.android.vending", + "AID_SYSTEM", + "AID_ROOT", + "AID_BLUETOOTH", + "AID_LMKD", + "com.android.managedprovisioning", + "AID_MEDIA", + "AID_NETWORK_STACK" + }; + private static final String[] DEFAULT_PULL_SOURCES = { + "AID_SYSTEM", }; private static final Logger LOGGER = Logger.getLogger(TestDrive.class.getName()); @@ -158,6 +163,16 @@ public class TestDrive { StatsdConfig.Builder builder = StatsdConfig.newBuilder(); builder .addAllAllowedLogSource(allowedSources) + .addAllDefaultPullPackages(Arrays.asList(DEFAULT_PULL_SOURCES)) + .addPullAtomPackages(PullAtomPackages.newBuilder() + .setAtomId(Atom.GPU_STATS_GLOBAL_INFO_FIELD_NUMBER) + .addPackages("AID_GPU_SERVICE")) + .addPullAtomPackages(PullAtomPackages.newBuilder() + .setAtomId(Atom.GPU_STATS_APP_INFO_FIELD_NUMBER) + .addPackages("AID_GPU_SERVICE")) + .addPullAtomPackages(PullAtomPackages.newBuilder() + .setAtomId(Atom.TRAIN_INFO_FIELD_NUMBER) + .addPackages("AID_STATSD")) .setHashStringsInMetricReport(false); if (hasPulledAtom(atomIds)) { diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index f926075714a8..39fc18d8b747 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -394,4 +394,29 @@ public abstract class ActivityManagerInternal { */ // TODO: remove this toast after feature development is done public abstract void showWhileInUseDebugToast(int uid, int op, int mode); + + + /** Is this a device owner app? */ + public abstract boolean isDeviceOwner(int uid); + + /** + * Called by DevicePolicyManagerService to set the uid of the device owner. + */ + public abstract void setDeviceOwnerUid(int uid); + + /** + * Sends a broadcast, assuming the caller to be the system and allowing the inclusion of an + * approved whitelist of app Ids >= {@link android.os.Process#FIRST_APPLICATION_UID} that the + * broadcast my be sent to; any app Ids < {@link android.os.Process#FIRST_APPLICATION_UID} are + * automatically whitelisted. + * + * @see com.android.server.am.ActivityManagerService#broadcastIntentWithFeature( + * IApplicationThread, String, Intent, String, IIntentReceiver, int, String, Bundle, + * String[], int, Bundle, boolean, boolean, int) + */ + public abstract int broadcastIntent(Intent intent, + IIntentReceiver resultTo, + String[] requiredPermissions, boolean serialized, + int userId, int[] appIdWhitelist); + } diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index d4749bd8f330..46b06fb64b80 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -990,7 +990,7 @@ public class AppOpsManager { /** @hide Control whether an application is allowed to run in the background. */ @UnsupportedAppUsage public static final int OP_RUN_IN_BACKGROUND = - AppProtoEnums.APP_OP_RUN_ANY_IN_BACKGROUND; + AppProtoEnums.APP_OP_RUN_IN_BACKGROUND; /** @hide */ @UnsupportedAppUsage public static final int OP_AUDIO_ACCESSIBILITY_VOLUME = @@ -1088,8 +1088,9 @@ public class AppOpsManager { public static final int OP_ACTIVATE_PLATFORM_VPN = AppProtoEnums.APP_OP_ACTIVATE_PLATFORM_VPN; /** @hide */ public static final int OP_LOADER_USAGE_STATS = AppProtoEnums.APP_OP_LOADER_USAGE_STATS; - /** @hide Access telephony call audio */ - public static final int OP_ACCESS_CALL_AUDIO = AppProtoEnums.APP_OP_ACCESS_CALL_AUDIO; + + // App op deprecated/removed. + private static final int OP_DEPRECATED_1 = AppProtoEnums.APP_OP_DEPRECATED_1; /** @hide Auto-revoke app permissions if app is unused for an extended period */ public static final int OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED = @@ -1396,9 +1397,6 @@ public class AppOpsManager { @SystemApi public static final String OPSTR_MANAGE_EXTERNAL_STORAGE = "android:manage_external_storage"; - /** @hide Access telephony call audio */ - @SystemApi - public static final String OPSTR_ACCESS_CALL_AUDIO = "android:access_call_audio"; /** @hide Auto-revoke app permissions if app is unused for an extended period */ @SystemApi @@ -1498,9 +1496,6 @@ public class AppOpsManager { OP_MANAGE_EXTERNAL_STORAGE, OP_INTERACT_ACROSS_PROFILES, OP_LOADER_USAGE_STATS, - OP_ACCESS_CALL_AUDIO, - OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, - OP_AUTO_REVOKE_MANAGED_BY_INSTALLER, }; /** @@ -1608,7 +1603,7 @@ public class AppOpsManager { OP_INTERACT_ACROSS_PROFILES, //INTERACT_ACROSS_PROFILES OP_ACTIVATE_PLATFORM_VPN, // ACTIVATE_PLATFORM_VPN OP_LOADER_USAGE_STATS, // LOADER_USAGE_STATS - OP_ACCESS_CALL_AUDIO, // ACCESS_CALL_AUDIO + OP_DEPRECATED_1, // deprecated OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, //AUTO_REVOKE_PERMISSIONS_IF_UNUSED OP_AUTO_REVOKE_MANAGED_BY_INSTALLER, //OP_AUTO_REVOKE_MANAGED_BY_INSTALLER }; @@ -1713,7 +1708,7 @@ public class AppOpsManager { OPSTR_INTERACT_ACROSS_PROFILES, OPSTR_ACTIVATE_PLATFORM_VPN, OPSTR_LOADER_USAGE_STATS, - OPSTR_ACCESS_CALL_AUDIO, + "", // deprecated OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, OPSTR_AUTO_REVOKE_MANAGED_BY_INSTALLER, }; @@ -1819,7 +1814,7 @@ public class AppOpsManager { "INTERACT_ACROSS_PROFILES", "ACTIVATE_PLATFORM_VPN", "LOADER_USAGE_STATS", - "ACCESS_CALL_AUDIO", + "deprecated", "AUTO_REVOKE_PERMISSIONS_IF_UNUSED", "AUTO_REVOKE_MANAGED_BY_INSTALLER", }; @@ -1926,7 +1921,7 @@ public class AppOpsManager { android.Manifest.permission.INTERACT_ACROSS_PROFILES, null, // no permission for OP_ACTIVATE_PLATFORM_VPN android.Manifest.permission.LOADER_USAGE_STATS, - Manifest.permission.ACCESS_CALL_AUDIO, + null, // deprecated operation null, // no permission for OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED null, // no permission for OP_AUTO_REVOKE_MANAGED_BY_INSTALLER }; @@ -2033,7 +2028,7 @@ public class AppOpsManager { null, // INTERACT_ACROSS_PROFILES null, // ACTIVATE_PLATFORM_VPN null, // LOADER_USAGE_STATS - null, // ACCESS_CALL_AUDIO + null, // deprecated operation null, // AUTO_REVOKE_PERMISSIONS_IF_UNUSED null, // AUTO_REVOKE_MANAGED_BY_INSTALLER }; @@ -2139,7 +2134,7 @@ public class AppOpsManager { null, // INTERACT_ACROSS_PROFILES null, // ACTIVATE_PLATFORM_VPN null, // LOADER_USAGE_STATS - null, // ACCESS_CALL_AUDIO + null, // deprecated operation null, // AUTO_REVOKE_PERMISSIONS_IF_UNUSED null, // AUTO_REVOKE_MANAGED_BY_INSTALLER }; @@ -2244,7 +2239,7 @@ public class AppOpsManager { AppOpsManager.MODE_DEFAULT, // INTERACT_ACROSS_PROFILES AppOpsManager.MODE_IGNORED, // ACTIVATE_PLATFORM_VPN AppOpsManager.MODE_DEFAULT, // LOADER_USAGE_STATS - AppOpsManager.MODE_DEFAULT, // ACCESS_CALL_AUDIO + AppOpsManager.MODE_IGNORED, // deprecated operation AppOpsManager.MODE_DEFAULT, // OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED AppOpsManager.MODE_ALLOWED, // OP_AUTO_REVOKE_MANAGED_BY_INSTALLER }; @@ -2353,7 +2348,7 @@ public class AppOpsManager { false, // INTERACT_ACROSS_PROFILES false, // ACTIVATE_PLATFORM_VPN false, // LOADER_USAGE_STATS - false, // ACCESS_CALL_AUDIO + false, // deprecated operation false, // AUTO_REVOKE_PERMISSIONS_IF_UNUSED false, // AUTO_REVOKE_MANAGED_BY_INSTALLER }; diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 9ccfe8df14c2..bb64c3492c4f 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -1763,7 +1763,6 @@ class ContextImpl extends Context { return bindServiceCommon(service, conn, flags, instanceName, null, executor, getUser()); } - /** @hide */ @Override public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, UserHandle user) { @@ -1920,7 +1919,9 @@ class ContextImpl extends Context { return SystemServiceRegistry.getSystemServiceName(serviceClass); } - private boolean isUiContext() { + /** @hide */ + @Override + public boolean isUiContext() { return mIsSystemOrSystemUiContext || mIsUiContext || isSystemOrSystemUI(); } @@ -2414,8 +2415,7 @@ class ContextImpl extends Context { : CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO; final List<ResourcesLoader> loaders = mResources.getLoaders(); - // TODO(b/128338354): Rename to createTokenResources - return mResourcesManager.createBaseActivityResources(mToken, resDir, splitResDirs, + return mResourcesManager.createBaseTokenResources(mToken, resDir, splitResDirs, overlayDirs, libDirs, displayId, null /* overrideConfig */, compatInfo, mClassLoader, loaders); } @@ -2684,7 +2684,7 @@ class ContextImpl extends Context { // Create the base resources for which all configuration contexts for this Activity // will be rebased upon. - context.setResources(resourcesManager.createBaseActivityResources(activityToken, + context.setResources(resourcesManager.createBaseTokenResources(activityToken, packageInfo.getResDir(), splitDirs, packageInfo.getOverlayDirs(), diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl index 7fc10ed090c8..833bfed573b2 100644 --- a/core/java/android/app/IActivityManager.aidl +++ b/core/java/android/app/IActivityManager.aidl @@ -144,9 +144,6 @@ interface IActivityManager { void attachApplication(in IApplicationThread app, long startSeq); List<ActivityManager.RunningTaskInfo> getTasks(int maxNum); @UnsupportedAppUsage - List<ActivityManager.RunningTaskInfo> getFilteredTasks(int maxNum, int ignoreActivityType, - int ignoreWindowingMode); - @UnsupportedAppUsage void moveTaskToFront(in IApplicationThread caller, in String callingPackage, int task, int flags, in Bundle options); @UnsupportedAppUsage diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl index 03717ecd4038..e476993f003f 100644 --- a/core/java/android/app/IActivityTaskManager.aidl +++ b/core/java/android/app/IActivityTaskManager.aidl @@ -155,8 +155,8 @@ interface IActivityTaskManager { boolean removeTask(int taskId); void removeAllVisibleRecentTasks(); List<ActivityManager.RunningTaskInfo> getTasks(int maxNum); - List<ActivityManager.RunningTaskInfo> getFilteredTasks(int maxNum, int ignoreActivityType, - int ignoreWindowingMode); + List<ActivityManager.RunningTaskInfo> getFilteredTasks(int maxNum, + boolean filterOnlyVisibleRecents); boolean shouldUpRecreateTask(in IBinder token, in String destAffinity); boolean navigateUpTo(in IBinder token, in Intent target, int resultCode, in Intent resultData); @@ -298,13 +298,6 @@ interface IActivityTaskManager { void reportSizeConfigurations(in IBinder token, in int[] horizontalSizeConfiguration, in int[] verticalSizeConfigurations, in int[] smallestWidthConfigurations); - /** - * Dismisses PiP - * @param animate True if the dismissal should be animated. - * @param animationDuration The duration of the resize animation in milliseconds or -1 if the - * default animation duration should be used. - */ - void dismissPip(boolean animate, int animationDuration); void suppressResizeConfigChanges(boolean suppress); void moveTasksToFullscreenStack(int fromStackId, boolean onTop); boolean moveTopActivityToPinnedStack(int stackId, in Rect bounds); diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index d3324f9e106e..9b42fa2012e1 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -8859,6 +8859,7 @@ public class Notification implements Parcelable /** * @deprecated use {@link #getIntent()} instead. + * @removed Removed from the R SDK but was never publicly stable. */ @Nullable @Deprecated @@ -8886,6 +8887,7 @@ public class Notification implements Parcelable /** * @deprecated use {@link #getIcon()} instead. + * @removed Removed from the R SDK but was never publicly stable. */ @Nullable @Deprecated @@ -9089,6 +9091,7 @@ public class Notification implements Parcelable /** * @deprecated use {@link Builder#Builder(String)} instead. + * @removed Removed from the R SDK but was never publicly stable. */ @NonNull @Deprecated @@ -9104,6 +9107,7 @@ public class Notification implements Parcelable /** * @deprecated use {@link Builder#Builder(PendingIntent, Icon)} instead. + * @removed Removed from the R SDK but was never publicly stable. */ @NonNull @Deprecated diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java index 5f756033390b..d00366bd38f4 100644 --- a/core/java/android/app/ResourcesManager.java +++ b/core/java/android/app/ResourcesManager.java @@ -214,11 +214,10 @@ public class ResourcesManager { for (int i = mCachedApkAssets.size() - 1; i >= 0; i--) { final ApkKey key = mCachedApkAssets.keyAt(i); if (key.path.equals(path)) { - WeakReference<ApkAssets> apkAssetsRef = mCachedApkAssets.remove(key); + WeakReference<ApkAssets> apkAssetsRef = mCachedApkAssets.removeAt(i); if (apkAssetsRef != null && apkAssetsRef.get() != null) { apkAssetsRef.get().close(); } - mCachedApkAssets.remove(key); } } } @@ -695,26 +694,26 @@ public class ResourcesManager { } /** - * Creates base resources for an Activity. Calls to + * Creates base resources for a binder token. Calls to * {@link #getResources(IBinder, String, String[], String[], String[], int, Configuration, - * CompatibilityInfo, ClassLoader, List)} with the same activityToken will have their override + * CompatibilityInfo, ClassLoader, List)} with the same binder token will have their override * configurations merged with the one specified here. * - * @param activityToken Represents an Activity. + * @param token Represents an {@link Activity} or {@link WindowContext}. * @param resDir The base resource path. Can be null (only framework resources will be loaded). * @param splitResDirs An array of split resource paths. Can be null. * @param overlayDirs An array of overlay paths. Can be null. * @param libDirs An array of resource library paths. Can be null. * @param displayId The ID of the display for which to create the resources. * @param overrideConfig The configuration to apply on top of the base configuration. Can be - * null. This provides the base override for this Activity. + * {@code null}. This provides the base override for this token. * @param compatInfo The compatibility settings to use. Cannot be null. A default to use is * {@link CompatibilityInfo#DEFAULT_COMPATIBILITY_INFO}. * @param classLoader The class loader to use when inflating Resources. If null, the * {@link ClassLoader#getSystemClassLoader()} is used. * @return a Resources object from which to access resources. */ - public @Nullable Resources createBaseActivityResources(@NonNull IBinder activityToken, + public @Nullable Resources createBaseTokenResources(@NonNull IBinder token, @Nullable String resDir, @Nullable String[] splitResDirs, @Nullable String[] overlayDirs, @@ -739,24 +738,24 @@ public class ResourcesManager { classLoader = classLoader != null ? classLoader : ClassLoader.getSystemClassLoader(); if (DEBUG) { - Slog.d(TAG, "createBaseActivityResources activity=" + activityToken + Slog.d(TAG, "createBaseActivityResources activity=" + token + " with key=" + key); } synchronized (this) { // Force the creation of an ActivityResourcesStruct. - getOrCreateActivityResourcesStructLocked(activityToken); + getOrCreateActivityResourcesStructLocked(token); } // Update any existing Activity Resources references. - updateResourcesForActivity(activityToken, overrideConfig, displayId, + updateResourcesForActivity(token, overrideConfig, displayId, false /* movedToDifferentDisplay */); - cleanupReferences(activityToken); - rebaseKeyForActivity(activityToken, key); + cleanupReferences(token); + rebaseKeyForActivity(token, key); synchronized (this) { - Resources resources = findResourcesForActivityLocked(activityToken, key, + Resources resources = findResourcesForActivityLocked(token, key, classLoader); if (resources != null) { return resources; @@ -764,7 +763,7 @@ public class ResourcesManager { } // Now request an actual Resources object. - return createResources(activityToken, key, classLoader); + return createResources(token, key, classLoader); } finally { Trace.traceEnd(Trace.TRACE_TAG_RESOURCES); } @@ -774,19 +773,21 @@ public class ResourcesManager { * Rebases a key's override config on top of the Activity's base override. */ private void rebaseKeyForActivity(IBinder activityToken, ResourcesKey key) { - final ActivityResources activityResources = - getOrCreateActivityResourcesStructLocked(activityToken); - - // Clean up any dead references so they don't pile up. - ArrayUtils.unstableRemoveIf(activityResources.activityResources, - sEmptyReferencePredicate); - - // Rebase the key's override config on top of the Activity's base override. - if (key.hasOverrideConfiguration() - && !activityResources.overrideConfig.equals(Configuration.EMPTY)) { - final Configuration temp = new Configuration(activityResources.overrideConfig); - temp.updateFrom(key.mOverrideConfiguration); - key.mOverrideConfiguration.setTo(temp); + synchronized (this) { + final ActivityResources activityResources = + getOrCreateActivityResourcesStructLocked(activityToken); + + // Clean up any dead references so they don't pile up. + ArrayUtils.unstableRemoveIf(activityResources.activityResources, + sEmptyReferencePredicate); + + // Rebase the key's override config on top of the Activity's base override. + if (key.hasOverrideConfiguration() + && !activityResources.overrideConfig.equals(Configuration.EMPTY)) { + final Configuration temp = new Configuration(activityResources.overrideConfig); + temp.updateFrom(key.mOverrideConfiguration); + key.mOverrideConfiguration.setTo(temp); + } } } diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index 1aabd24d6df6..054e5e0945f3 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -1310,7 +1310,7 @@ public final class SystemServiceRegistry { throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( Context.FILE_INTEGRITY_SERVICE); - return new FileIntegrityManager( + return new FileIntegrityManager(ctx.getOuterContext(), IFileIntegrityService.Stub.asInterface(b)); }}); //CHECKSTYLE:ON IndentationCheck diff --git a/core/java/android/app/TaskEmbedder.java b/core/java/android/app/TaskEmbedder.java index 5ebcc46aa0d8..b8ad30840173 100644 --- a/core/java/android/app/TaskEmbedder.java +++ b/core/java/android/app/TaskEmbedder.java @@ -16,6 +16,7 @@ package android.app; +import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC; @@ -291,7 +292,7 @@ public class TaskEmbedder { * @see #startActivity(PendingIntent) */ public void startActivity(@NonNull Intent intent) { - final ActivityOptions options = prepareActivityOptions(); + final ActivityOptions options = prepareActivityOptions(null); mContext.startActivity(intent, options.toBundle()); } @@ -304,7 +305,7 @@ public class TaskEmbedder { * @see #startActivity(PendingIntent) */ public void startActivity(@NonNull Intent intent, UserHandle user) { - final ActivityOptions options = prepareActivityOptions(); + final ActivityOptions options = prepareActivityOptions(null); mContext.startActivityAsUser(intent, options.toBundle(), user); } @@ -316,7 +317,7 @@ public class TaskEmbedder { * @see #startActivity(Intent) */ public void startActivity(@NonNull PendingIntent pendingIntent) { - final ActivityOptions options = prepareActivityOptions(); + final ActivityOptions options = prepareActivityOptions(null); try { pendingIntent.send(null /* context */, 0 /* code */, null /* intent */, null /* onFinished */, null /* handler */, null /* requiredPermission */, @@ -337,8 +338,7 @@ public class TaskEmbedder { */ public void startActivity(@NonNull PendingIntent pendingIntent, @Nullable Intent fillInIntent, @NonNull ActivityOptions options) { - - options.setLaunchDisplayId(mVirtualDisplay.getDisplay().getDisplayId()); + prepareActivityOptions(options); try { pendingIntent.send(mContext, 0 /* code */, fillInIntent, null /* onFinished */, null /* handler */, null /* requiredPermission */, @@ -364,21 +364,25 @@ public class TaskEmbedder { @NonNull ActivityOptions options, @Nullable Rect sourceBounds) { LauncherApps service = (LauncherApps) mContext.getSystemService(Context.LAUNCHER_APPS_SERVICE); - options.setLaunchDisplayId(mVirtualDisplay.getDisplay().getDisplayId()); + prepareActivityOptions(options); service.startShortcut(shortcut, sourceBounds, options.toBundle()); } /** - * Check if container is ready to launch and create {@link ActivityOptions} to target the - * virtual display. + * Check if container is ready to launch and modify {@param options} to target the virtual + * display, creating them if necessary. */ - private ActivityOptions prepareActivityOptions() { + private ActivityOptions prepareActivityOptions(ActivityOptions options) { if (mVirtualDisplay == null) { throw new IllegalStateException( "Trying to start activity before ActivityView is ready."); } - final ActivityOptions options = ActivityOptions.makeBasic(); + if (options == null) { + options = ActivityOptions.makeBasic(); + } options.setLaunchDisplayId(getDisplayId()); + options.setLaunchWindowingMode(WINDOWING_MODE_MULTI_WINDOW); + options.setTaskAlwaysOnTop(true); return options; } diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index c4458b30c2db..10309a9b4a03 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -4424,11 +4424,13 @@ public class DevicePolicyManager { * the current factory reset protection (FRP) policy set previously by * {@link #setFactoryResetProtectionPolicy}. * <p> - * This method can also be called by the FRP management agent on device, in which case, - * it can pass {@code null} as the ComponentName. + * This method can also be called by the FRP management agent on device or with the permission + * {@link android.Manifest.permission#MASTER_CLEAR}, in which case, it can pass {@code null} + * as the ComponentName. * * @param admin Which {@link DeviceAdminReceiver} this request is associated with or - * {@code null} if called by the FRP management agent on device. + * {@code null} if called by the FRP management agent on device or with the + * permission {@link android.Manifest.permission#MASTER_CLEAR}. * @return The current FRP policy object or {@code null} if no policy is set. * @throws SecurityException if {@code admin} is not a device owner, a profile owner of * an organization-owned device or the FRP management agent. diff --git a/core/java/android/app/admin/FactoryResetProtectionPolicy.java b/core/java/android/app/admin/FactoryResetProtectionPolicy.java index 954db0459f99..aa94e817c152 100644 --- a/core/java/android/app/admin/FactoryResetProtectionPolicy.java +++ b/core/java/android/app/admin/FactoryResetProtectionPolicy.java @@ -43,6 +43,12 @@ import java.util.List; * reset protection policy for the device by calling the {@code DevicePolicyManager} method * {@link DevicePolicyManager#setFactoryResetProtectionPolicy(ComponentName, * FactoryResetProtectionPolicy)}}. + * <p> + * Normally factory reset protection does not kick in if the device is factory reset via Settings. + * This is also the case when a device owner sets factory reset protection policy. However, + * when a profile owner of an organization-owned device sets factory reset protection policy that + * locks the device to specific accounts, the policy will take effect even if factory reset is + * performed from Settings. * * @see DevicePolicyManager#setFactoryResetProtectionPolicy * @see DevicePolicyManager#getFactoryResetProtectionPolicy @@ -236,4 +242,16 @@ public final class FactoryResetProtectionPolicy implements Parcelable { } } + /** + * Returns if the policy will result in factory reset protection being locked to + * admin-specified accounts. + * <p> + * When a device has a non-empty factory reset protection policy, trusted factory reset + * via Settings will no longer remove factory reset protection from the device. + * @hide + */ + public boolean isNotEmpty() { + return !mFactoryResetProtectionAccounts.isEmpty() && mFactoryResetProtectionEnabled; + } + } diff --git a/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java index 22e2efb1dedd..002c66361233 100644 --- a/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java +++ b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java @@ -30,7 +30,7 @@ import java.util.List; import java.util.Objects; /** - * A time signal from a manual (user provided) source. + * A time zone suggestion from a manual (user provided) source. * * <p>{@code zoneId} contains the suggested time zone ID, e.g. "America/Los_Angeles". * @@ -124,7 +124,7 @@ public final class ManualTimeZoneSuggestion implements Parcelable { @Override public String toString() { - return "ManualTimeSuggestion{" + return "ManualTimeZoneSuggestion{" + "mZoneId=" + mZoneId + ", mDebugInfo=" + mDebugInfo + '}'; diff --git a/core/java/android/app/timezonedetector/TimeZoneDetector.java b/core/java/android/app/timezonedetector/TimeZoneDetector.java index 20761ad2d447..34a7586192fe 100644 --- a/core/java/android/app/timezonedetector/TimeZoneDetector.java +++ b/core/java/android/app/timezonedetector/TimeZoneDetector.java @@ -41,21 +41,21 @@ public interface TimeZoneDetector { } /** - * Suggests the current time zone, determined using telephony signals, to the detector. The - * detector may ignore the signal based on system settings, whether better information is - * available, and so on. + * Suggests the current time zone, determined using the user's manually entered information, to + * the detector. The detector may ignore the signal based on system settings. * * @hide */ - @RequiresPermission(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE) - void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion timeZoneSuggestion); + @RequiresPermission(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE) + void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion); /** - * Suggests the current time zone, determined for the user's manually information, to the - * detector. The detector may ignore the signal based on system settings. + * Suggests the current time zone, determined using telephony signals, to the detector. The + * detector may ignore the signal based on system settings, whether better information is + * available, and so on. * * @hide */ - @RequiresPermission(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE) - void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion); + @RequiresPermission(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE) + void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion timeZoneSuggestion); } diff --git a/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java b/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java index 0ada88500193..54cf1f380d97 100644 --- a/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java +++ b/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java @@ -40,24 +40,24 @@ public final class TimeZoneDetectorImpl implements TimeZoneDetector { } @Override - public void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion timeZoneSuggestion) { + public void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion) { if (DEBUG) { - Log.d(TAG, "suggestTelephonyTimeZone called: " + timeZoneSuggestion); + Log.d(TAG, "suggestManualTimeZone called: " + timeZoneSuggestion); } try { - mITimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion); + mITimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } @Override - public void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion) { + public void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion timeZoneSuggestion) { if (DEBUG) { - Log.d(TAG, "suggestManualTimeZone called: " + timeZoneSuggestion); + Log.d(TAG, "suggestTelephonyTimeZone called: " + timeZoneSuggestion); } try { - mITimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion); + mITimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java index 4aad3cbb2116..f216db6fc717 100644 --- a/core/java/android/bluetooth/BluetoothAdapter.java +++ b/core/java/android/bluetooth/BluetoothAdapter.java @@ -917,23 +917,11 @@ public final class BluetoothAdapter { if (!isBleScanAlwaysAvailable()) { return false; } - - int state = getLeState(); - if (state == BluetoothAdapter.STATE_ON || state == BluetoothAdapter.STATE_BLE_ON) { - String packageName = ActivityThread.currentPackageName(); - if (DBG) { - Log.d(TAG, "disableBLE(): de-registering " + packageName); - } - try { - mManagerService.updateBleAppCount(mToken, false, packageName); - } catch (RemoteException e) { - Log.e(TAG, "", e); - } - return true; - } - - if (DBG) { - Log.d(TAG, "disableBLE(): Already disabled"); + String packageName = ActivityThread.currentPackageName(); + try { + return mManagerService.disableBle(packageName, mToken); + } catch (RemoteException e) { + Log.e(TAG, "", e); } return false; } @@ -974,20 +962,9 @@ public final class BluetoothAdapter { if (!isBleScanAlwaysAvailable()) { return false; } - + String packageName = ActivityThread.currentPackageName(); try { - String packageName = ActivityThread.currentPackageName(); - mManagerService.updateBleAppCount(mToken, true, packageName); - if (isLeEnabled()) { - if (DBG) { - Log.d(TAG, "enableBLE(): Bluetooth already enabled"); - } - return true; - } - if (DBG) { - Log.d(TAG, "enableBLE(): Calling enable"); - } - return mManagerService.enable(packageName); + return mManagerService.enableBle(packageName, mToken); } catch (RemoteException e) { Log.e(TAG, "", e); } diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java index 31c3232f4714..60ecf64dd0a9 100644 --- a/core/java/android/content/ContentProvider.java +++ b/core/java/android/content/ContentProvider.java @@ -47,8 +47,8 @@ import android.os.Bundle; import android.os.CancellationSignal; import android.os.IBinder; import android.os.ICancellationSignal; -import android.os.Parcel; import android.os.ParcelFileDescriptor; +import android.os.ParcelableException; import android.os.Process; import android.os.RemoteCallback; import android.os.RemoteException; @@ -307,19 +307,8 @@ public abstract class ContentProvider implements ContentInterface, ComponentCall try { result.putString(ContentResolver.REMOTE_CALLBACK_RESULT, getType(uri)); } catch (Exception e) { - Parcel parcel = Parcel.obtain(); - try { - try { - parcel.writeException(e); - } catch (Exception ex) { - // getType threw an unparcelable exception. Wrap the message into - // a parcelable exception type - parcel.writeException(new IllegalStateException(e.getMessage())); - } - result.putByteArray(ContentResolver.REMOTE_CALLBACK_ERROR, parcel.marshall()); - } finally { - parcel.recycle(); - } + result.putParcelable(ContentResolver.REMOTE_CALLBACK_ERROR, + new ParcelableException(e)); } callback.sendResult(result); } @@ -602,8 +591,13 @@ public abstract class ContentProvider implements ContentInterface, ComponentCall public void canonicalizeAsync(String callingPkg, @Nullable String attributionTag, Uri uri, RemoteCallback callback) { final Bundle result = new Bundle(); - result.putParcelable(ContentResolver.REMOTE_CALLBACK_RESULT, - canonicalize(callingPkg, attributionTag, uri)); + try { + result.putParcelable(ContentResolver.REMOTE_CALLBACK_RESULT, + canonicalize(callingPkg, attributionTag, uri)); + } catch (Exception e) { + result.putParcelable(ContentResolver.REMOTE_CALLBACK_ERROR, + new ParcelableException(e)); + } callback.sendResult(result); } diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index 59862ae132a9..e446f4fa5eb4 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -55,8 +55,8 @@ import android.os.DeadObjectException; import android.os.IBinder; import android.os.ICancellationSignal; import android.os.OperationCanceledException; -import android.os.Parcel; import android.os.ParcelFileDescriptor; +import android.os.ParcelableException; import android.os.RemoteCallback; import android.os.RemoteException; import android.os.ServiceManager; @@ -931,8 +931,15 @@ public abstract class ContentResolver implements ContentInterface { @Override public void onResult(Bundle result) { synchronized (this) { - this.exception = getExceptionFromBundle(result); - if (this.exception == null) { + ParcelableException e = result.getParcelable(REMOTE_CALLBACK_ERROR); + if (e != null) { + Throwable t = e.getCause(); + if (t instanceof RuntimeException) { + this.exception = (RuntimeException) t; + } else { + this.exception = new RuntimeException(t); + } + } else { this.result = getResultFromBundle(result); } done = true; @@ -940,26 +947,6 @@ public abstract class ContentResolver implements ContentInterface { } } - private RuntimeException getExceptionFromBundle(Bundle result) { - byte[] bytes = result.getByteArray(REMOTE_CALLBACK_ERROR); - if (bytes == null) { - return null; - } - - Parcel parcel = Parcel.obtain(); - try { - parcel.unmarshall(bytes, 0, bytes.length); - parcel.setDataPosition(0); - parcel.readException(); - } catch (RuntimeException ex) { - return ex; - } finally { - parcel.recycle(); - } - - return null; - } - protected abstract T getResultFromBundle(Bundle result); public void waitForResult(long timeout) { diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 2fe935e35735..7c1b62fc9b8e 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -5788,7 +5788,7 @@ public abstract class Context { * {@link android.view.LayoutInflater inflating} views, such that they can be inflated with * proper {@link Resources}. * - * Below is a sample code to <b>add an application overlay window on the primary display:<b/> + * Below is a sample code to <b>add an application overlay window on the primary display:</b> * <pre class="prettyprint"> * ... * final DisplayManager dm = anyContext.getSystemService(DisplayManager.class); @@ -6103,4 +6103,13 @@ public abstract class Context { + "get a UI context from ActivityThread#getSystemUiContext()"); } } + + /** + * Indicates if this context is a visual context such as {@link android.app.Activity} or + * a context created from {@link #createWindowContext(int, Bundle)}. + * @hide + */ + public boolean isUiContext() { + throw new RuntimeException("Not implemented. Must override in a subclass."); + } } diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java index d389d2a4ae09..5dc41e483640 100644 --- a/core/java/android/content/ContextWrapper.java +++ b/core/java/android/content/ContextWrapper.java @@ -1145,4 +1145,12 @@ public class ContextWrapper extends Context { mBase.setContentCaptureOptions(options); } } + + /** + * @hide + */ + @Override + public boolean isUiContext() { + return mBase.isUiContext(); + } } diff --git a/core/java/android/content/pm/CrossProfileApps.java b/core/java/android/content/pm/CrossProfileApps.java index 6ba811e077ac..7578ede2648d 100644 --- a/core/java/android/content/pm/CrossProfileApps.java +++ b/core/java/android/content/pm/CrossProfileApps.java @@ -487,6 +487,34 @@ public class CrossProfileApps { } } + /** + * Clears the app-op for {@link android.Manifest.permission#INTERACT_ACROSS_PROFILES} back to + * its default value for every package on the device. + * + * <p>This method can be used to ensure that app-op state is not left around on existing users + * for previously-configured profiles. + * + * <p>If the caller does not have the {@link android.Manifest.permission + * #CONFIGURE_INTERACT_ACROSS_PROFILES} permission, then they must have the permissions that + * would have been required to call {@link android.app.AppOpsManager#setMode(int, int, String, + * int)}, which includes {@link android.Manifest.permission#MANAGE_APP_OPS_MODES}. + * + * <p>Also requires either {@link android.Manifest.permission#INTERACT_ACROSS_USERS} or {@link + * android.Manifest.permission#INTERACT_ACROSS_USERS_FULL}. + * + * @hide + */ + @RequiresPermission( + allOf={android.Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES, + android.Manifest.permission.INTERACT_ACROSS_USERS}) + public void clearInteractAcrossProfilesAppOps() { + try { + mService.clearInteractAcrossProfilesAppOps(); + } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); + } + } + private void verifyCanAccessUser(UserHandle userHandle) { if (!getTargetUserProfiles().contains(userHandle)) { throw new SecurityException("Not allowed to access " + userHandle); diff --git a/core/java/android/content/pm/DataLoaderParams.java b/core/java/android/content/pm/DataLoaderParams.java index 99c0907f1844..a791026d44cd 100644 --- a/core/java/android/content/pm/DataLoaderParams.java +++ b/core/java/android/content/pm/DataLoaderParams.java @@ -17,12 +17,8 @@ package android.content.pm; import android.annotation.NonNull; -import android.annotation.Nullable; import android.annotation.SystemApi; import android.content.ComponentName; -import android.os.ParcelFileDescriptor; - -import java.util.Map; /** * This class represents the parameters used to configure a Data Loader. @@ -44,7 +40,7 @@ public class DataLoaderParams { */ public static final @NonNull DataLoaderParams forStreaming(@NonNull ComponentName componentName, @NonNull String arguments) { - return new DataLoaderParams(DataLoaderType.STREAMING, componentName, arguments, null); + return new DataLoaderParams(DataLoaderType.STREAMING, componentName, arguments); } /** @@ -55,29 +51,17 @@ public class DataLoaderParams { */ public static final @NonNull DataLoaderParams forIncremental( @NonNull ComponentName componentName, @NonNull String arguments) { - return new DataLoaderParams(DataLoaderType.INCREMENTAL, componentName, arguments, null); + return new DataLoaderParams(DataLoaderType.INCREMENTAL, componentName, arguments); } /** @hide */ public DataLoaderParams(@NonNull @DataLoaderType int type, @NonNull ComponentName componentName, - @NonNull String arguments, @Nullable Map<String, ParcelFileDescriptor> namedFds) { + @NonNull String arguments) { DataLoaderParamsParcel data = new DataLoaderParamsParcel(); data.type = type; data.packageName = componentName.getPackageName(); data.className = componentName.getClassName(); data.arguments = arguments; - if (namedFds == null || namedFds.isEmpty()) { - data.dynamicArgs = new NamedParcelFileDescriptor[0]; - } else { - data.dynamicArgs = new NamedParcelFileDescriptor[namedFds.size()]; - int i = 0; - for (Map.Entry<String, ParcelFileDescriptor> namedFd : namedFds.entrySet()) { - data.dynamicArgs[i] = new NamedParcelFileDescriptor(); - data.dynamicArgs[i].name = namedFd.getKey(); - data.dynamicArgs[i].fd = namedFd.getValue(); - i += 1; - } - } mData = data; } diff --git a/core/java/android/content/pm/DataLoaderParamsParcel.aidl b/core/java/android/content/pm/DataLoaderParamsParcel.aidl index e05843b4d4e9..d40012fd5718 100644 --- a/core/java/android/content/pm/DataLoaderParamsParcel.aidl +++ b/core/java/android/content/pm/DataLoaderParamsParcel.aidl @@ -17,7 +17,6 @@ package android.content.pm; import android.content.pm.DataLoaderType; -import android.content.pm.NamedParcelFileDescriptor; /** * Class for holding data loader configuration parameters. @@ -28,5 +27,4 @@ parcelable DataLoaderParamsParcel { @utf8InCpp String packageName; @utf8InCpp String className; @utf8InCpp String arguments; - NamedParcelFileDescriptor[] dynamicArgs; } diff --git a/core/java/android/content/pm/ICrossProfileApps.aidl b/core/java/android/content/pm/ICrossProfileApps.aidl index 9b0dae221538..e2850f111c4f 100644 --- a/core/java/android/content/pm/ICrossProfileApps.aidl +++ b/core/java/android/content/pm/ICrossProfileApps.aidl @@ -40,4 +40,5 @@ interface ICrossProfileApps { boolean canConfigureInteractAcrossProfiles(in String packageName); boolean canUserAttemptToConfigureInteractAcrossProfiles(in String packageName); void resetInteractAcrossProfilesAppOps(in List<String> packageNames); + void clearInteractAcrossProfilesAppOps(); } diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index 50bee854c027..85a3986a65f9 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -72,7 +72,6 @@ import java.util.List; import java.util.Objects; import java.util.Set; import java.util.concurrent.Executor; -import java.util.stream.Collectors; /** * Offers the ability to install, upgrade, and remove applications on the @@ -589,9 +588,15 @@ public class PackageInstaller { * * {@link SessionInfo#isStagedSessionActive()}. */ public @NonNull List<SessionInfo> getActiveStagedSessions() { - return getStagedSessions().stream() - .filter(s -> s.isStagedSessionActive()) - .collect(Collectors.toList()); + final List<SessionInfo> activeStagedSessions = new ArrayList<>(); + final List<SessionInfo> stagedSessions = getStagedSessions(); + for (int i = 0; i < stagedSessions.size(); i++) { + final SessionInfo sessionInfo = stagedSessions.get(i); + if (sessionInfo.isStagedSessionActive()) { + activeStagedSessions.add(sessionInfo); + } + } + return activeStagedSessions; } /** @@ -1118,6 +1123,7 @@ public class PackageInstaller { * {@hide} */ @SystemApi + @RequiresPermission(android.Manifest.permission.USE_INSTALLER_V2) public @Nullable DataLoaderParams getDataLoaderParams() { try { DataLoaderParamsParcel data = mSession.getDataLoaderParams(); @@ -1157,6 +1163,7 @@ public class PackageInstaller { * {@hide} */ @SystemApi + @RequiresPermission(android.Manifest.permission.USE_INSTALLER_V2) public void addFile(@FileLocation int location, @NonNull String name, long lengthBytes, @NonNull byte[] metadata, @Nullable byte[] signature) { try { @@ -1180,6 +1187,7 @@ public class PackageInstaller { * {@hide} */ @SystemApi + @RequiresPermission(android.Manifest.permission.USE_INSTALLER_V2) public void removeFile(@FileLocation int location, @NonNull String name) { try { mSession.removeFile(location, name); @@ -1927,7 +1935,9 @@ public class PackageInstaller { * {@hide} */ @SystemApi - @RequiresPermission(Manifest.permission.INSTALL_PACKAGES) + @RequiresPermission(allOf = { + Manifest.permission.INSTALL_PACKAGES, + Manifest.permission.USE_INSTALLER_V2}) public void setDataLoaderParams(@NonNull DataLoaderParams dataLoaderParams) { this.dataLoaderParams = dataLoaderParams; } diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 370469ebe840..f48d78ac9cc3 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -1031,6 +1031,27 @@ public abstract class PackageManager { */ public static final int INSTALL_REASON_ROLLBACK = 5; + /** @hide */ + @IntDef(prefix = { "UNINSTALL_REASON_" }, value = { + UNINSTALL_REASON_UNKNOWN, + UNINSTALL_REASON_USER_TYPE, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface UninstallReason {} + + /** + * Code indicating that the reason for uninstalling this package is unknown. + * @hide + */ + public static final int UNINSTALL_REASON_UNKNOWN = 0; + + /** + * Code indicating that this package was uninstalled due to the type of user. + * See UserSystemPackageInstaller + * @hide + */ + public static final int UNINSTALL_REASON_USER_TYPE = 1; + /** * @hide */ diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 20ddba41bda1..1dadbda1918b 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -1837,6 +1837,12 @@ public class PackageParser { pkg.coreApp = parser.getAttributeBooleanValue(null, "coreApp", false); + final boolean isolatedSplits = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifest_isolatedSplits, false); + if (isolatedSplits) { + pkg.applicationInfo.privateFlags |= ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING; + } + pkg.mCompileSdkVersion = sa.getInteger( com.android.internal.R.styleable.AndroidManifest_compileSdkVersion, 0); pkg.applicationInfo.compileSdkVersion = pkg.mCompileSdkVersion; @@ -1912,10 +1918,6 @@ public class PackageParser { pkg.applicationInfo.flags |= ApplicationInfo.FLAG_EXTERNAL_STORAGE; } - if (sa.getBoolean(com.android.internal.R.styleable.AndroidManifest_isolatedSplits, false)) { - pkg.applicationInfo.privateFlags |= ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING; - } - // Resource boolean are -1, so 1 means we don't know the value. int supportsSmallScreens = 1; int supportsNormalScreens = 1; diff --git a/core/java/android/content/pm/PackageUserState.java b/core/java/android/content/pm/PackageUserState.java index 30cf4e76ba04..61b1553e28a8 100644 --- a/core/java/android/content/pm/PackageUserState.java +++ b/core/java/android/content/pm/PackageUserState.java @@ -74,6 +74,7 @@ public class PackageUserState { public int appLinkGeneration; public int categoryHint = ApplicationInfo.CATEGORY_UNDEFINED; public int installReason; + public @PackageManager.UninstallReason int uninstallReason; public String harmfulAppWarning; public ArraySet<String> disabledComponents; @@ -92,6 +93,7 @@ public class PackageUserState { domainVerificationStatus = PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; installReason = PackageManager.INSTALL_REASON_UNKNOWN; + uninstallReason = PackageManager.UNINSTALL_REASON_UNKNOWN; } @VisibleForTesting @@ -112,6 +114,7 @@ public class PackageUserState { appLinkGeneration = o.appLinkGeneration; categoryHint = o.categoryHint; installReason = o.installReason; + uninstallReason = o.uninstallReason; disabledComponents = ArrayUtils.cloneOrNull(o.disabledComponents); enabledComponents = ArrayUtils.cloneOrNull(o.enabledComponents); overlayPaths = @@ -353,6 +356,9 @@ public class PackageUserState { if (installReason != oldState.installReason) { return false; } + if (uninstallReason != oldState.uninstallReason) { + return false; + } if ((disabledComponents == null && oldState.disabledComponents != null) || (disabledComponents != null && oldState.disabledComponents == null)) { return false; @@ -407,6 +413,7 @@ public class PackageUserState { hashCode = 31 * hashCode + appLinkGeneration; hashCode = 31 * hashCode + categoryHint; hashCode = 31 * hashCode + installReason; + hashCode = 31 * hashCode + uninstallReason; hashCode = 31 * hashCode + Objects.hashCode(disabledComponents); hashCode = 31 * hashCode + Objects.hashCode(enabledComponents); hashCode = 31 * hashCode + Objects.hashCode(harmfulAppWarning); diff --git a/core/java/android/content/pm/parsing/ParsingPackageImpl.java b/core/java/android/content/pm/parsing/ParsingPackageImpl.java index 079a47056c24..894ad5584922 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageImpl.java +++ b/core/java/android/content/pm/parsing/ParsingPackageImpl.java @@ -433,6 +433,10 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable { R.styleable.AndroidManifest_compileSdkVersion, 0)); setCompileSdkVersionCodename(manifestArray.getNonConfigurationString( R.styleable.AndroidManifest_compileSdkVersionCodename, 0)); + + setIsolatedSplitLoading(manifestArray.getBoolean( + R.styleable.AndroidManifest_isolatedSplits, false)); + } } diff --git a/core/java/android/content/pm/parsing/ParsingPackageUtils.java b/core/java/android/content/pm/parsing/ParsingPackageUtils.java index ec771286d980..e90ccdffa8a8 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageUtils.java +++ b/core/java/android/content/pm/parsing/ParsingPackageUtils.java @@ -386,15 +386,14 @@ public class ParsingPackageUtils { return input.error(PackageManager.INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME); } - TypedArray manifestArray = res.obtainAttributes(parser, R.styleable.AndroidManifest); + final TypedArray manifestArray = res.obtainAttributes(parser, R.styleable.AndroidManifest); try { - boolean isCoreApp = parser.getAttributeBooleanValue(null, "coreApp", false); - - ParsingPackage pkg = mCallback.startParsingPackage(pkgName, apkPath, codePath, - manifestArray, isCoreApp); - - ParseResult<ParsingPackage> result = parseBaseApkTags(input, pkg, manifestArray, - res, parser, flags); + final boolean isCoreApp = + parser.getAttributeBooleanValue(null, "coreApp", false); + final ParsingPackage pkg = mCallback.startParsingPackage( + pkgName, apkPath, codePath, manifestArray, isCoreApp); + final ParseResult<ParsingPackage> result = + parseBaseApkTags(input, pkg, manifestArray, res, parser, flags); if (result.isError()) { return result; } @@ -620,14 +619,12 @@ public class ParsingPackageUtils { return sharedUserResult; } - pkg.setInstallLocation(anInt(PackageParser.PARSE_DEFAULT_INSTALL_LOCATION, + pkg.setInstallLocation(anInteger(PackageParser.PARSE_DEFAULT_INSTALL_LOCATION, R.styleable.AndroidManifest_installLocation, sa)) - .setTargetSandboxVersion(anInt(PackageParser.PARSE_DEFAULT_TARGET_SANDBOX, + .setTargetSandboxVersion(anInteger(PackageParser.PARSE_DEFAULT_TARGET_SANDBOX, R.styleable.AndroidManifest_targetSandboxVersion, sa)) /* Set the global "on SD card" flag */ - .setExternalStorage((flags & PackageParser.PARSE_EXTERNAL_STORAGE) != 0) - .setIsolatedSplitLoading( - bool(false, R.styleable.AndroidManifest_isolatedSplits, sa)); + .setExternalStorage((flags & PackageParser.PARSE_EXTERNAL_STORAGE) != 0); boolean foundApp = false; final int depth = parser.getDepth(); @@ -2658,6 +2655,10 @@ public class ParsingPackageUtils { return sa.getInt(attribute, defaultValue); } + private static int anInteger(int defaultValue, @StyleableRes int attribute, TypedArray sa) { + return sa.getInteger(attribute, defaultValue); + } + private static int anInt(@StyleableRes int attribute, TypedArray sa) { return sa.getInt(attribute, 0); } @@ -2688,6 +2689,6 @@ public class ParsingPackageUtils { boolean hasFeature(String feature); ParsingPackage startParsingPackage(String packageName, String baseCodePath, String codePath, - TypedArray manifestArray, boolean isCoreApp); + @NonNull TypedArray manifestArray, boolean isCoreApp); } } diff --git a/core/java/android/content/res/ResourcesImpl.java b/core/java/android/content/res/ResourcesImpl.java index acdd47a4d61e..f40d60dbde5a 100644 --- a/core/java/android/content/res/ResourcesImpl.java +++ b/core/java/android/content/res/ResourcesImpl.java @@ -57,8 +57,6 @@ import android.view.DisplayAdjustments; import com.android.internal.util.GrowingArrayUtils; -import libcore.io.IoUtils; - import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -818,27 +816,6 @@ public class ResourcesImpl { } /** - * Loads a Drawable from an encoded image stream, or null. - * - * This call will handle closing the {@link InputStream}. - */ - @Nullable - private Drawable decodeImageDrawable(@NonNull InputStream inputStream, - @NonNull Resources wrapper, @NonNull TypedValue value) { - ImageDecoder.Source src = ImageDecoder.createSource(wrapper, inputStream, value.density); - try { - return ImageDecoder.decodeDrawable(src, (decoder, info, s) -> - decoder.setAllocator(ImageDecoder.ALLOCATOR_SOFTWARE)); - } catch (IOException ignored) { - // This is okay. This may be something that ImageDecoder does not - // support, like SVG. - return null; - } finally { - IoUtils.closeQuietly(inputStream); - } - } - - /** * Loads a drawable from XML or resources stream. * * @return Drawable, or null if Drawable cannot be decoded. @@ -902,12 +879,8 @@ public class ResourcesImpl { } else { final InputStream is = mAssets.openNonAsset( value.assetCookie, file, AssetManager.ACCESS_STREAMING); - if (is instanceof AssetInputStream) { - AssetInputStream ais = (AssetInputStream) is; - dr = decodeImageDrawable(ais, wrapper, value); - } else { - dr = decodeImageDrawable(is, wrapper, value); - } + final AssetInputStream ais = (AssetInputStream) is; + dr = decodeImageDrawable(ais, wrapper, value); } } finally { stack.pop(); diff --git a/core/java/android/database/sqlite/SQLiteConnection.java b/core/java/android/database/sqlite/SQLiteConnection.java index 796cfdce2c0d..bcb3934a5b08 100644 --- a/core/java/android/database/sqlite/SQLiteConnection.java +++ b/core/java/android/database/sqlite/SQLiteConnection.java @@ -28,6 +28,7 @@ import android.os.SystemClock; import android.os.Trace; import android.util.Log; import android.util.LruCache; +import android.util.Pair; import android.util.Printer; import dalvik.system.BlockGuard; @@ -230,6 +231,7 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen setAutoCheckpointInterval(); setLocaleFromConfiguration(); setCustomFunctionsFromConfiguration(); + executePerConnectionSqlFromConfiguration(0); } private void dispose(boolean finalized) { @@ -468,6 +470,24 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen } } + private void executePerConnectionSqlFromConfiguration(int startIndex) { + for (int i = startIndex; i < mConfiguration.perConnectionSql.size(); i++) { + final Pair<String, Object[]> statement = mConfiguration.perConnectionSql.get(i); + final int type = DatabaseUtils.getSqlStatementType(statement.first); + switch (type) { + case DatabaseUtils.STATEMENT_SELECT: + executeForString(statement.first, statement.second, null); + break; + case DatabaseUtils.STATEMENT_PRAGMA: + execute(statement.first, statement.second, null); + break; + default: + throw new IllegalArgumentException( + "Unsupported configuration statement: " + statement); + } + } + } + private void checkDatabaseWiped() { if (!SQLiteGlobal.checkDbWipe()) { return; @@ -513,6 +533,9 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen .equals(mConfiguration.customScalarFunctions); boolean customAggregateFunctionsChanged = !configuration.customAggregateFunctions .equals(mConfiguration.customAggregateFunctions); + final int oldSize = mConfiguration.perConnectionSql.size(); + final int newSize = configuration.perConnectionSql.size(); + boolean perConnectionSqlChanged = newSize > oldSize; // Update configuration parameters. mConfiguration.updateParametersFrom(configuration); @@ -532,6 +555,9 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen if (customScalarFunctionsChanged || customAggregateFunctionsChanged) { setCustomFunctionsFromConfiguration(); } + if (perConnectionSqlChanged) { + executePerConnectionSqlFromConfiguration(oldSize); + } } // Called by SQLiteConnectionPool only. diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java index 458914efcbbd..24ac1527779e 100644 --- a/core/java/android/database/sqlite/SQLiteDatabase.java +++ b/core/java/android/database/sqlite/SQLiteDatabase.java @@ -1047,6 +1047,40 @@ public final class SQLiteDatabase extends SQLiteClosable { } /** + * Execute the given SQL statement on all connections to this database. + * <p> + * This statement will be immediately executed on all existing connections, + * and will be automatically executed on all future connections. + * <p> + * Some example usages are changes like {@code PRAGMA trusted_schema=OFF} or + * functions like {@code SELECT icu_load_collation()}. If you execute these + * statements using {@link #execSQL} then they will only apply to a single + * database connection; using this method will ensure that they are + * uniformly applied to all current and future connections. + * + * @param sql The SQL statement to be executed. Multiple statements + * separated by semicolons are not supported. + * @param bindArgs The arguments that should be bound to the SQL statement. + */ + public void execPerConnectionSQL(@NonNull String sql, @Nullable Object[] bindArgs) + throws SQLException { + Objects.requireNonNull(sql); + + synchronized (mLock) { + throwIfNotOpenLocked(); + + final int index = mConfigurationLocked.perConnectionSql.size(); + mConfigurationLocked.perConnectionSql.add(Pair.create(sql, bindArgs)); + try { + mConnectionPoolLocked.reconfigure(mConfigurationLocked); + } catch (RuntimeException ex) { + mConfigurationLocked.perConnectionSql.remove(index); + throw ex; + } + } + } + + /** * Gets the database version. * * @return the database version @@ -1788,6 +1822,12 @@ public final class SQLiteDatabase extends SQLiteClosable { * using "PRAGMA journal_mode'<value>" statement if your app is using * {@link #enableWriteAheadLogging()} * </p> + * <p> + * Note that {@code PRAGMA} values which apply on a per-connection basis + * should <em>not</em> be configured using this method; you should instead + * use {@link #execPerConnectionSQL} to ensure that they are uniformly + * applied to all current and future connections. + * </p> * * @param sql the SQL statement to be executed. Multiple statements separated by semicolons are * not supported. @@ -1834,6 +1874,12 @@ public final class SQLiteDatabase extends SQLiteClosable { * using "PRAGMA journal_mode'<value>" statement if your app is using * {@link #enableWriteAheadLogging()} * </p> + * <p> + * Note that {@code PRAGMA} values which apply on a per-connection basis + * should <em>not</em> be configured using this method; you should instead + * use {@link #execPerConnectionSQL} to ensure that they are uniformly + * applied to all current and future connections. + * </p> * * @param sql the SQL statement to be executed. Multiple statements separated by semicolons are * not supported. diff --git a/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java b/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java index b11942abe0c7..21c21c902fed 100644 --- a/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java +++ b/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java @@ -18,9 +18,10 @@ package android.database.sqlite; import android.compat.annotation.UnsupportedAppUsage; import android.util.ArrayMap; +import android.util.Pair; +import java.util.ArrayList; import java.util.Locale; -import java.util.Map; import java.util.function.BinaryOperator; import java.util.function.UnaryOperator; import java.util.regex.Pattern; @@ -102,6 +103,11 @@ public final class SQLiteDatabaseConfiguration { = new ArrayMap<>(); /** + * The statements to execute to initialize each connection. + */ + public final ArrayList<Pair<String, Object[]>> perConnectionSql = new ArrayList<>(); + + /** * The size in bytes of each lookaside slot * * <p>If negative, the default lookaside configuration will be used @@ -194,6 +200,8 @@ public final class SQLiteDatabaseConfiguration { customScalarFunctions.putAll(other.customScalarFunctions); customAggregateFunctions.clear(); customAggregateFunctions.putAll(other.customAggregateFunctions); + perConnectionSql.clear(); + perConnectionSql.addAll(other.perConnectionSql); lookasideSlotSize = other.lookasideSlotSize; lookasideSlotCount = other.lookasideSlotCount; idleConnectionTimeoutMs = other.idleConnectionTimeoutMs; diff --git a/core/java/android/hardware/biometrics/BiometricConstants.java b/core/java/android/hardware/biometrics/BiometricConstants.java index add67aa436c6..8e3f809e4f88 100644 --- a/core/java/android/hardware/biometrics/BiometricConstants.java +++ b/core/java/android/hardware/biometrics/BiometricConstants.java @@ -204,4 +204,18 @@ public interface BiometricConstants { * @hide */ int BIOMETRIC_ACQUIRED_VENDOR_BASE = 1000; + + // + // Internal messages. + // + + /** + * See {@link BiometricPrompt.Builder#setReceiveSystemEvents(boolean)}. This message is sent + * immediately when the user cancels authentication for example by tapping the back button or + * tapping the scrim. This is before {@link #BIOMETRIC_ERROR_USER_CANCELED}, which is sent when + * dismissal animation completes. + * @hide + */ + int BIOMETRIC_SYSTEM_EVENT_EARLY_USER_CANCEL = 1; + } diff --git a/core/java/android/hardware/biometrics/BiometricPrompt.java b/core/java/android/hardware/biometrics/BiometricPrompt.java index a3aa258fec35..5af7cef3e2b4 100644 --- a/core/java/android/hardware/biometrics/BiometricPrompt.java +++ b/core/java/android/hardware/biometrics/BiometricPrompt.java @@ -63,6 +63,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan /** * @hide */ + @RequiresPermission(USE_BIOMETRIC_INTERNAL) public static final String KEY_USE_DEFAULT_TITLE = "use_default_title"; /** * @hide @@ -75,14 +76,17 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan /** * @hide */ + @RequiresPermission(USE_BIOMETRIC_INTERNAL) public static final String KEY_DEVICE_CREDENTIAL_TITLE = "device_credential_title"; /** * @hide */ + @RequiresPermission(USE_BIOMETRIC_INTERNAL) public static final String KEY_DEVICE_CREDENTIAL_SUBTITLE = "device_credential_subtitle"; /** * @hide */ + @RequiresPermission(USE_BIOMETRIC_INTERNAL) public static final String KEY_DEVICE_CREDENTIAL_DESCRIPTION = "device_credential_description"; /** * @hide @@ -106,7 +110,15 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan * If this is set, check the Device Policy Manager for allowed biometrics. * @hide */ + @RequiresPermission(USE_BIOMETRIC_INTERNAL) public static final String EXTRA_DISALLOW_BIOMETRICS_IF_POLICY_EXISTS = "check_dpm"; + /** + * Request to receive system events, such as back gesture/button. See + * {@link AuthenticationCallback#onSystemEvent(int)} + * @hide + */ + @RequiresPermission(USE_BIOMETRIC_INTERNAL) + public static final String KEY_RECEIVE_SYSTEM_EVENTS = "receive_system_events"; /** * Error/help message will show for this amount of time. @@ -384,6 +396,18 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan } /** + * If set, receive internal events via {@link AuthenticationCallback#onSystemEvent(int)} + * @param set + * @return This builder. + * @hide + */ + @NonNull + public Builder setReceiveSystemEvents(boolean set) { + mBundle.putBoolean(KEY_RECEIVE_SYSTEM_EVENTS, set); + return this; + } + + /** * Creates a {@link BiometricPrompt}. * * @return An instance of {@link BiometricPrompt}. @@ -493,6 +517,13 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan }); } } + + @Override + public void onSystemEvent(int event) throws RemoteException { + mExecutor.execute(() -> { + mAuthenticationCallback.onSystemEvent(event); + }); + } }; private BiometricPrompt(Context context, Bundle bundle, @@ -732,6 +763,12 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan */ @Override public void onAuthenticationAcquired(int acquireInfo) {} + + /** + * Receiver for internal system events. See {@link Builder#setReceiveSystemEvents(boolean)} + * @hide + */ + public void onSystemEvent(int event) {} } /** diff --git a/core/java/android/hardware/biometrics/IBiometricServiceReceiver.aidl b/core/java/android/hardware/biometrics/IBiometricServiceReceiver.aidl index 1d43aa640b40..b0cddfd3b47f 100644 --- a/core/java/android/hardware/biometrics/IBiometricServiceReceiver.aidl +++ b/core/java/android/hardware/biometrics/IBiometricServiceReceiver.aidl @@ -30,4 +30,6 @@ oneway interface IBiometricServiceReceiver { void onAcquired(int acquiredInfo, String message); // Notifies that the SystemUI dialog has been dismissed. void onDialogDismissed(int reason); + // Notifies the client that an internal event, e.g. back button has occurred. + void onSystemEvent(int event); } diff --git a/core/java/android/hardware/biometrics/IBiometricServiceReceiverInternal.aidl b/core/java/android/hardware/biometrics/IBiometricServiceReceiverInternal.aidl index e7219caf6cd8..e57abd548057 100644 --- a/core/java/android/hardware/biometrics/IBiometricServiceReceiverInternal.aidl +++ b/core/java/android/hardware/biometrics/IBiometricServiceReceiverInternal.aidl @@ -42,4 +42,6 @@ oneway interface IBiometricServiceReceiverInternal { void onTryAgainPressed(); // Notifies that the user has pressed the "use password" button on SystemUI void onDeviceCredentialPressed(); + // Notifies the client that an internal event, e.g. back button has occurred. + void onSystemEvent(int event); } diff --git a/core/java/android/hardware/soundtrigger/ConversionUtil.java b/core/java/android/hardware/soundtrigger/ConversionUtil.java index 3d763e630bd0..425218a63cf7 100644 --- a/core/java/android/hardware/soundtrigger/ConversionUtil.java +++ b/core/java/android/hardware/soundtrigger/ConversionUtil.java @@ -106,11 +106,11 @@ class ConversionUtil { public static SoundModel api2aidlSoundModel(SoundTrigger.SoundModel apiModel) { SoundModel aidlModel = new SoundModel(); - aidlModel.type = apiModel.type; - aidlModel.uuid = api2aidlUuid(apiModel.uuid); - aidlModel.vendorUuid = api2aidlUuid(apiModel.vendorUuid); - aidlModel.data = byteArrayToSharedMemory(apiModel.data, "SoundTrigger SoundModel"); - aidlModel.dataSize = apiModel.data.length; + aidlModel.type = apiModel.getType(); + aidlModel.uuid = api2aidlUuid(apiModel.getUuid()); + aidlModel.vendorUuid = api2aidlUuid(apiModel.getVendorUuid()); + aidlModel.data = byteArrayToSharedMemory(apiModel.getData(), "SoundTrigger SoundModel"); + aidlModel.dataSize = apiModel.getData().length; return aidlModel; } @@ -122,20 +122,20 @@ class ConversionUtil { SoundTrigger.KeyphraseSoundModel apiModel) { PhraseSoundModel aidlModel = new PhraseSoundModel(); aidlModel.common = api2aidlSoundModel(apiModel); - aidlModel.phrases = new Phrase[apiModel.keyphrases.length]; - for (int i = 0; i < apiModel.keyphrases.length; ++i) { - aidlModel.phrases[i] = api2aidlPhrase(apiModel.keyphrases[i]); + aidlModel.phrases = new Phrase[apiModel.getKeyphrases().length]; + for (int i = 0; i < apiModel.getKeyphrases().length; ++i) { + aidlModel.phrases[i] = api2aidlPhrase(apiModel.getKeyphrases()[i]); } return aidlModel; } public static Phrase api2aidlPhrase(SoundTrigger.Keyphrase apiPhrase) { Phrase aidlPhrase = new Phrase(); - aidlPhrase.id = apiPhrase.id; - aidlPhrase.recognitionModes = api2aidlRecognitionModes(apiPhrase.recognitionModes); - aidlPhrase.users = Arrays.copyOf(apiPhrase.users, apiPhrase.users.length); - aidlPhrase.locale = apiPhrase.locale.toLanguageTag(); - aidlPhrase.text = apiPhrase.text; + aidlPhrase.id = apiPhrase.getId(); + aidlPhrase.recognitionModes = api2aidlRecognitionModes(apiPhrase.getRecognitionModes()); + aidlPhrase.users = Arrays.copyOf(apiPhrase.getUsers(), apiPhrase.getUsers().length); + aidlPhrase.locale = apiPhrase.getLocale().toLanguageTag(); + aidlPhrase.text = apiPhrase.getText(); return aidlPhrase; } diff --git a/core/java/android/hardware/soundtrigger/SoundTrigger.java b/core/java/android/hardware/soundtrigger/SoundTrigger.java index a74871d29041..98c4f618be18 100644 --- a/core/java/android/hardware/soundtrigger/SoundTrigger.java +++ b/core/java/android/hardware/soundtrigger/SoundTrigger.java @@ -104,32 +104,89 @@ public class SoundTrigger { /** * If set the underlying module supports AEC. - * Describes bit field {@link ModuleProperties#audioCapabilities} + * Describes bit field {@link ModuleProperties#mAudioCapabilities} */ public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION = 0x1; /** * If set, the underlying module supports noise suppression. - * Describes bit field {@link ModuleProperties#audioCapabilities} + * Describes bit field {@link ModuleProperties#mAudioCapabilities} */ public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION = 0x2; + private final int mId; + @NonNull + private final String mImplementor; + @NonNull + private final String mDescription; + @NonNull + private final UUID mUuid; + private final int mVersion; + @NonNull + private final String mSupportedModelArch; + private final int mMaxSoundModels; + private final int mMaxKeyphrases; + private final int mMaxUsers; + @RecognitionModes + private final int mRecognitionModes; + private final boolean mSupportsCaptureTransition; + private final int mMaxBufferMillis; + private final boolean mSupportsConcurrentCapture; + private final int mPowerConsumptionMw; + private final boolean mReturnsTriggerInEvent; + @AudioCapabilities + private final int mAudioCapabilities; + + ModuleProperties(int id, @NonNull String implementor, @NonNull String description, + @NonNull String uuid, int version, @NonNull String supportedModelArch, + int maxSoundModels, int maxKeyphrases, int maxUsers, + @RecognitionModes int recognitionModes, boolean supportsCaptureTransition, + int maxBufferMs, boolean supportsConcurrentCapture, int powerConsumptionMw, + boolean returnsTriggerInEvent, int audioCapabilities) { + this.mId = id; + this.mImplementor = requireNonNull(implementor); + this.mDescription = requireNonNull(description); + this.mUuid = UUID.fromString(requireNonNull(uuid)); + this.mVersion = version; + this.mSupportedModelArch = requireNonNull(supportedModelArch); + this.mMaxSoundModels = maxSoundModels; + this.mMaxKeyphrases = maxKeyphrases; + this.mMaxUsers = maxUsers; + this.mRecognitionModes = recognitionModes; + this.mSupportsCaptureTransition = supportsCaptureTransition; + this.mMaxBufferMillis = maxBufferMs; + this.mSupportsConcurrentCapture = supportsConcurrentCapture; + this.mPowerConsumptionMw = powerConsumptionMw; + this.mReturnsTriggerInEvent = returnsTriggerInEvent; + this.mAudioCapabilities = audioCapabilities; + } + /** Unique module ID provided by the native service */ - public final int id; + public int getId() { + return mId; + } /** human readable voice detection engine implementor */ @NonNull - public final String implementor; + public String getImplementor() { + return mImplementor; + } /** human readable voice detection engine description */ @NonNull - public final String description; + public String getDescription() { + return mDescription; + } /** Unique voice engine Id (changes with each version) */ @NonNull - public final UUID uuid; + public UUID getUuid() { + return mUuid; + } /** Voice detection engine version */ - public final int version; + public int getVersion() { + return mVersion; + } /** * String naming the architecture used for running the supported models. @@ -137,66 +194,64 @@ public class SoundTrigger { * architecture used) */ @NonNull - public final String supportedModelArch; + public String getSupportedModelArch() { + return mSupportedModelArch; + } /** Maximum number of active sound models */ - public final int maxSoundModels; + public int getMaxSoundModels() { + return mMaxSoundModels; + } /** Maximum number of key phrases */ - public final int maxKeyphrases; + public int getMaxKeyphrases() { + return mMaxKeyphrases; + } /** Maximum number of users per key phrase */ - public final int maxUsers; + public int getMaxUsers() { + return mMaxUsers; + } /** Supported recognition modes (bit field, RECOGNITION_MODE_VOICE_TRIGGER ...) */ @RecognitionModes - public final int recognitionModes; + public int getRecognitionModes() { + return mRecognitionModes; + } /** Supports seamless transition to capture mode after recognition */ - public final boolean supportsCaptureTransition; + public boolean isCaptureTransitionSupported() { + return mSupportsCaptureTransition; + } /** Maximum buffering capacity in ms if supportsCaptureTransition() is true */ - public final int maxBufferMs; + public int getMaxBufferMillis() { + return mMaxBufferMillis; + } /** Supports capture by other use cases while detection is active */ - public final boolean supportsConcurrentCapture; + public boolean isConcurrentCaptureSupported() { + return mSupportsConcurrentCapture; + } /** Rated power consumption when detection is active with TDB silence/sound/speech ratio */ - public final int powerConsumptionMw; + public int getPowerConsumptionMw() { + return mPowerConsumptionMw; + } /** Returns the trigger (key phrase) capture in the binary data of the * recognition callback event */ - public final boolean returnsTriggerInEvent; + public boolean isTriggerReturnedInEvent() { + return mReturnsTriggerInEvent; + } /** * Bit field encoding of the AudioCapabilities * supported by the firmware. */ @AudioCapabilities - public final int audioCapabilities; - - ModuleProperties(int id, @NonNull String implementor, @NonNull String description, - @NonNull String uuid, int version, @NonNull String supportedModelArch, - int maxSoundModels, int maxKeyphrases, int maxUsers, - @RecognitionModes int recognitionModes, boolean supportsCaptureTransition, - int maxBufferMs, boolean supportsConcurrentCapture, int powerConsumptionMw, - boolean returnsTriggerInEvent, int audioCapabilities) { - this.id = id; - this.implementor = requireNonNull(implementor); - this.description = requireNonNull(description); - this.uuid = UUID.fromString(requireNonNull(uuid)); - this.version = version; - this.supportedModelArch = requireNonNull(supportedModelArch); - this.maxSoundModels = maxSoundModels; - this.maxKeyphrases = maxKeyphrases; - this.maxUsers = maxUsers; - this.recognitionModes = recognitionModes; - this.supportsCaptureTransition = supportsCaptureTransition; - this.maxBufferMs = maxBufferMs; - this.supportsConcurrentCapture = supportsConcurrentCapture; - this.powerConsumptionMw = powerConsumptionMw; - this.returnsTriggerInEvent = returnsTriggerInEvent; - this.audioCapabilities = audioCapabilities; + public int getAudioCapabilities() { + return mAudioCapabilities; } public static final @android.annotation.NonNull Parcelable.Creator<ModuleProperties> CREATOR @@ -235,22 +290,22 @@ public class SoundTrigger { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(id); - dest.writeString(implementor); - dest.writeString(description); - dest.writeString(uuid.toString()); - dest.writeInt(version); - dest.writeString(supportedModelArch); - dest.writeInt(maxSoundModels); - dest.writeInt(maxKeyphrases); - dest.writeInt(maxUsers); - dest.writeInt(recognitionModes); - dest.writeByte((byte) (supportsCaptureTransition ? 1 : 0)); - dest.writeInt(maxBufferMs); - dest.writeByte((byte) (supportsConcurrentCapture ? 1 : 0)); - dest.writeInt(powerConsumptionMw); - dest.writeByte((byte) (returnsTriggerInEvent ? 1 : 0)); - dest.writeInt(audioCapabilities); + dest.writeInt(getId()); + dest.writeString(getImplementor()); + dest.writeString(getDescription()); + dest.writeString(getUuid().toString()); + dest.writeInt(getVersion()); + dest.writeString(getSupportedModelArch()); + dest.writeInt(getMaxSoundModels()); + dest.writeInt(getMaxKeyphrases()); + dest.writeInt(getMaxUsers()); + dest.writeInt(getRecognitionModes()); + dest.writeByte((byte) (isCaptureTransitionSupported() ? 1 : 0)); + dest.writeInt(getMaxBufferMillis()); + dest.writeByte((byte) (isConcurrentCaptureSupported() ? 1 : 0)); + dest.writeInt(getPowerConsumptionMw()); + dest.writeByte((byte) (isTriggerReturnedInEvent() ? 1 : 0)); + dest.writeInt(getAudioCapabilities()); } @Override @@ -260,16 +315,17 @@ public class SoundTrigger { @Override public String toString() { - return "ModuleProperties [id=" + id + ", implementor=" + implementor + ", description=" - + description + ", uuid=" + uuid + ", version=" + version - + " , supportedModelArch=" + supportedModelArch + ", maxSoundModels=" - + maxSoundModels + ", maxKeyphrases=" + maxKeyphrases + ", maxUsers=" - + maxUsers + ", recognitionModes=" + recognitionModes - + ", supportsCaptureTransition=" + supportsCaptureTransition + ", maxBufferMs=" - + maxBufferMs + ", supportsConcurrentCapture=" + supportsConcurrentCapture - + ", powerConsumptionMw=" + powerConsumptionMw - + ", returnsTriggerInEvent=" + returnsTriggerInEvent - + ", audioCapabilities=" + audioCapabilities + "]"; + return "ModuleProperties [id=" + getId() + ", implementor=" + getImplementor() + + ", description=" + getDescription() + ", uuid=" + getUuid() + + ", version=" + getVersion() + " , supportedModelArch=" + + getSupportedModelArch() + ", maxSoundModels=" + getMaxSoundModels() + + ", maxKeyphrases=" + getMaxKeyphrases() + ", maxUsers=" + getMaxUsers() + + ", recognitionModes=" + getRecognitionModes() + ", supportsCaptureTransition=" + + isCaptureTransitionSupported() + ", maxBufferMs=" + getMaxBufferMillis() + + ", supportsConcurrentCapture=" + isConcurrentCaptureSupported() + + ", powerConsumptionMw=" + getPowerConsumptionMw() + + ", returnsTriggerInEvent=" + isTriggerReturnedInEvent() + + ", audioCapabilities=" + getAudioCapabilities() + "]"; } } @@ -305,44 +361,64 @@ public class SoundTrigger { */ public static final int TYPE_GENERIC_SOUND = 1; + @NonNull + private final UUID mUuid; + @SoundModelType + private final int mType; + @NonNull + private final UUID mVendorUuid; + private final int mVersion; + @NonNull + private final byte[] mData; + + /** @hide */ + public SoundModel(@NonNull UUID uuid, @Nullable UUID vendorUuid, @SoundModelType int type, + @Nullable byte[] data, int version) { + this.mUuid = requireNonNull(uuid); + this.mVendorUuid = vendorUuid != null ? vendorUuid : new UUID(0, 0); + this.mType = type; + this.mVersion = version; + this.mData = data != null ? data : new byte[0]; + } + /** Unique sound model identifier */ @NonNull - public final UUID uuid; + public UUID getUuid() { + return mUuid; + } /** Sound model type (e.g. TYPE_KEYPHRASE); */ @SoundModelType - public final int type; + public int getType() { + return mType; + } /** Unique sound model vendor identifier */ @NonNull - public final UUID vendorUuid; + public UUID getVendorUuid() { + return mVendorUuid; + } /** vendor specific version number of the model */ - public final int version; + public int getVersion() { + return mVersion; + } /** Opaque data. For use by vendor implementation and enrollment application */ @NonNull - public final byte[] data; - - /** @hide */ - public SoundModel(@NonNull UUID uuid, @Nullable UUID vendorUuid, @SoundModelType int type, - @Nullable byte[] data, int version) { - this.uuid = requireNonNull(uuid); - this.vendorUuid = vendorUuid != null ? vendorUuid : new UUID(0, 0); - this.type = type; - this.version = version; - this.data = data != null ? data : new byte[0]; + public byte[] getData() { + return mData; } @Override public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + version; - result = prime * result + Arrays.hashCode(data); - result = prime * result + type; - result = prime * result + ((uuid == null) ? 0 : uuid.hashCode()); - result = prime * result + ((vendorUuid == null) ? 0 : vendorUuid.hashCode()); + result = prime * result + getVersion(); + result = prime * result + Arrays.hashCode(getData()); + result = prime * result + getType(); + result = prime * result + ((getUuid() == null) ? 0 : getUuid().hashCode()); + result = prime * result + ((getVendorUuid() == null) ? 0 : getVendorUuid().hashCode()); return result; } @@ -358,27 +434,27 @@ public class SoundTrigger { return false; } SoundModel other = (SoundModel) obj; - if (type != other.type) { + if (getType() != other.getType()) { return false; } - if (uuid == null) { - if (other.uuid != null) { + if (getUuid() == null) { + if (other.getUuid() != null) { return false; } - } else if (!uuid.equals(other.uuid)) { + } else if (!getUuid().equals(other.getUuid())) { return false; } - if (vendorUuid == null) { - if (other.vendorUuid != null) { + if (getVendorUuid() == null) { + if (other.getVendorUuid() != null) { return false; } - } else if (!vendorUuid.equals(other.vendorUuid)) { + } else if (!getVendorUuid().equals(other.getVendorUuid())) { return false; } - if (!Arrays.equals(data, other.data)) { + if (!Arrays.equals(getData(), other.getData())) { return false; } - if (version != other.version) { + if (getVersion() != other.getVersion()) { return false; } return true; @@ -390,8 +466,41 @@ public class SoundTrigger { * {@link KeyphraseSoundModel} */ public static final class Keyphrase implements Parcelable { + + private final int mId; + @RecognitionModes + private final int mRecognitionModes; + @NonNull + private final Locale mLocale; + @NonNull + private final String mText; + @NonNull + private final int[] mUsers; + + /** + * Constructor for Keyphrase describes a key phrase that can be detected by a + * {@link KeyphraseSoundModel} + * + * @param id Unique keyphrase identifier for this keyphrase + * @param recognitionModes Bit field representation of recognition modes this keyphrase + * supports + * @param locale Locale of the keyphrase + * @param text Key phrase text + * @param users Users this key phrase has been trained for. + */ + public Keyphrase(int id, @RecognitionModes int recognitionModes, @NonNull Locale locale, + @NonNull String text, @Nullable int[] users) { + this.mId = id; + this.mRecognitionModes = recognitionModes; + this.mLocale = requireNonNull(locale); + this.mText = requireNonNull(text); + this.mUsers = users != null ? users : new int[0]; + } + /** Unique identifier for this keyphrase */ - public final int id; + public int getId() { + return mId; + } /** * Recognition modes supported for this key phrase in the model @@ -402,41 +511,29 @@ public class SoundTrigger { * @see #RECOGNITION_MODE_GENERIC */ @RecognitionModes - public final int recognitionModes; + public int getRecognitionModes() { + return mRecognitionModes; + } /** Locale of the keyphrase. */ @NonNull - public final Locale locale; + public Locale getLocale() { + return mLocale; + } /** Key phrase text */ @NonNull - public final String text; + public String getText() { + return mText; + } /** * Users this key phrase has been trained for. countains sound trigger specific user IDs * derived from system user IDs {@link android.os.UserHandle#getIdentifier()}. */ @NonNull - public final int[] users; - - /** - * Constructor for Keyphrase describes a key phrase that can be detected by a - * {@link KeyphraseSoundModel} - * - * @param id Unique keyphrase identifier for this keyphrase - * @param recognitionModes Bit field representation of recognition modes this keyphrase - * supports - * @param locale Locale of the keyphrase - * @param text Key phrase text - * @param users Users this key phrase has been trained for. - */ - public Keyphrase(int id, @RecognitionModes int recognitionModes, @NonNull Locale locale, - @NonNull String text, @Nullable int[] users) { - this.id = id; - this.recognitionModes = recognitionModes; - this.locale = requireNonNull(locale); - this.text = requireNonNull(text); - this.users = users != null ? users : new int[0]; + public int[] getUsers() { + return mUsers; } public static final @NonNull Parcelable.Creator<Keyphrase> CREATOR = @@ -472,13 +569,13 @@ public class SoundTrigger { @Override public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeInt(id); - dest.writeInt(recognitionModes); - dest.writeString(locale.toLanguageTag()); - dest.writeString(text); - if (users != null) { - dest.writeInt(users.length); - dest.writeIntArray(users); + dest.writeInt(getId()); + dest.writeInt(getRecognitionModes()); + dest.writeString(getLocale().toLanguageTag()); + dest.writeString(getText()); + if (getUsers() != null) { + dest.writeInt(getUsers().length); + dest.writeIntArray(getUsers()); } else { dest.writeInt(-1); } @@ -494,11 +591,11 @@ public class SoundTrigger { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((text == null) ? 0 : text.hashCode()); - result = prime * result + id; - result = prime * result + ((locale == null) ? 0 : locale.hashCode()); - result = prime * result + recognitionModes; - result = prime * result + Arrays.hashCode(users); + result = prime * result + ((getText() == null) ? 0 : getText().hashCode()); + result = prime * result + getId(); + result = prime * result + ((getLocale() == null) ? 0 : getLocale().hashCode()); + result = prime * result + getRecognitionModes(); + result = prime * result + Arrays.hashCode(getUsers()); return result; } @@ -514,27 +611,27 @@ public class SoundTrigger { return false; } Keyphrase other = (Keyphrase) obj; - if (text == null) { - if (other.text != null) { + if (getText() == null) { + if (other.getText() != null) { return false; } - } else if (!text.equals(other.text)) { + } else if (!getText().equals(other.getText())) { return false; } - if (id != other.id) { + if (getId() != other.getId()) { return false; } - if (locale == null) { - if (other.locale != null) { + if (getLocale() == null) { + if (other.getLocale() != null) { return false; } - } else if (!locale.equals(other.locale)) { + } else if (!getLocale().equals(other.getLocale())) { return false; } - if (recognitionModes != other.recognitionModes) { + if (getRecognitionModes() != other.getRecognitionModes()) { return false; } - if (!Arrays.equals(users, other.users)) { + if (!Arrays.equals(getUsers(), other.getUsers())) { return false; } return true; @@ -542,9 +639,9 @@ public class SoundTrigger { @Override public String toString() { - return "Keyphrase [id=" + id + ", recognitionModes=" + recognitionModes - + ", locale=" + locale.toLanguageTag() + ", text=" + text - + ", users=" + Arrays.toString(users) + "]"; + return "Keyphrase [id=" + getId() + ", recognitionModes=" + getRecognitionModes() + + ", locale=" + getLocale().toLanguageTag() + ", text=" + getText() + + ", users=" + Arrays.toString(getUsers()) + "]"; } } @@ -554,15 +651,15 @@ public class SoundTrigger { * and the list of corresponding {@link Keyphrase} descriptors. */ public static final class KeyphraseSoundModel extends SoundModel implements Parcelable { - /** Key phrases in this sound model */ + @NonNull - public final Keyphrase[] keyphrases; // keyword phrases in model + private final Keyphrase[] mKeyphrases; public KeyphraseSoundModel( @NonNull UUID uuid, @NonNull UUID vendorUuid, @Nullable byte[] data, @Nullable Keyphrase[] keyphrases, int version) { super(uuid, vendorUuid, TYPE_KEYPHRASE, data, version); - this.keyphrases = keyphrases != null ? keyphrases : new Keyphrase[0]; + this.mKeyphrases = keyphrases != null ? keyphrases : new Keyphrase[0]; } public KeyphraseSoundModel(@NonNull UUID uuid, @NonNull UUID vendorUuid, @@ -570,6 +667,12 @@ public class SoundTrigger { this(uuid, vendorUuid, data, keyphrases, -1); } + /** Key phrases in this sound model */ + @NonNull + public Keyphrase[] getKeyphrases() { + return mKeyphrases; + } + public static final @NonNull Parcelable.Creator<KeyphraseSoundModel> CREATOR = new Parcelable.Creator<KeyphraseSoundModel>() { @NonNull @@ -608,32 +711,32 @@ public class SoundTrigger { @Override public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeString(uuid.toString()); - if (vendorUuid == null) { + dest.writeString(getUuid().toString()); + if (getVendorUuid() == null) { dest.writeInt(-1); } else { - dest.writeInt(vendorUuid.toString().length()); - dest.writeString(vendorUuid.toString()); + dest.writeInt(getVendorUuid().toString().length()); + dest.writeString(getVendorUuid().toString()); } - dest.writeInt(version); - dest.writeBlob(data); - dest.writeTypedArray(keyphrases, flags); + dest.writeInt(getVersion()); + dest.writeBlob(getData()); + dest.writeTypedArray(getKeyphrases(), flags); } @Override public String toString() { - return "KeyphraseSoundModel [keyphrases=" + Arrays.toString(keyphrases) - + ", uuid=" + uuid + ", vendorUuid=" + vendorUuid - + ", type=" + type - + ", data=" + (data == null ? 0 : data.length) - + ", version=" + version + "]"; + return "KeyphraseSoundModel [keyphrases=" + Arrays.toString(getKeyphrases()) + + ", uuid=" + getUuid() + ", vendorUuid=" + getVendorUuid() + + ", type=" + getType() + + ", data=" + (getData() == null ? 0 : getData().length) + + ", version=" + getVersion() + "]"; } @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); - result = prime * result + Arrays.hashCode(keyphrases); + result = prime * result + Arrays.hashCode(getKeyphrases()); return result; } @@ -649,7 +752,7 @@ public class SoundTrigger { return false; } KeyphraseSoundModel other = (KeyphraseSoundModel) obj; - if (!Arrays.equals(keyphrases, other.keyphrases)) { + if (!Arrays.equals(getKeyphrases(), other.getKeyphrases())) { return false; } return true; @@ -706,23 +809,23 @@ public class SoundTrigger { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeString(uuid.toString()); - if (vendorUuid == null) { + dest.writeString(getUuid().toString()); + if (getVendorUuid() == null) { dest.writeInt(-1); } else { - dest.writeInt(vendorUuid.toString().length()); - dest.writeString(vendorUuid.toString()); + dest.writeInt(getVendorUuid().toString().length()); + dest.writeString(getVendorUuid().toString()); } - dest.writeBlob(data); - dest.writeInt(version); + dest.writeBlob(getData()); + dest.writeInt(getVersion()); } @Override public String toString() { - return "GenericSoundModel [uuid=" + uuid + ", vendorUuid=" + vendorUuid - + ", type=" + type - + ", data=" + (data == null ? 0 : data.length) - + ", version=" + version + "]"; + return "GenericSoundModel [uuid=" + getUuid() + ", vendorUuid=" + getVendorUuid() + + ", type=" + getType() + + ", data=" + (getData() == null ? 0 : getData().length) + + ", version=" + getVersion() + "]"; } } @@ -1825,7 +1928,7 @@ public class SoundTrigger { /** * Get an interface on a hardware module to control sound models and recognition on * this module. - * @param moduleId Sound module system identifier {@link ModuleProperties#id}. mandatory. + * @param moduleId Sound module system identifier {@link ModuleProperties#mId}. mandatory. * @param listener {@link StatusListener} interface. Mandatory. * @param handler the Handler that will receive the callabcks. Can be null if default handler * is OK. diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 6daded4ee641..782fff2f69e0 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -60,7 +60,6 @@ import android.text.method.MovementMethod; import android.util.Log; import android.util.PrintWriterPrinter; import android.util.Printer; -import android.util.Size; import android.view.Gravity; import android.view.KeyCharacterMap; import android.view.KeyEvent; @@ -1480,8 +1479,8 @@ public class InputMethodService extends AbstractInputMethodService { */ public int getMaxWidth() { final WindowManager windowManager = getSystemService(WindowManager.class); - final Size windowSize = windowManager.getCurrentWindowMetrics().getSize(); - return windowSize.getWidth(); + final Rect windowBounds = windowManager.getCurrentWindowMetrics().getBounds(); + return windowBounds.width(); } /** diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 2a323e5ec97d..7332ede0b997 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -705,6 +705,36 @@ public class ConnectivityManager { @Deprecated public static final int TYPE_TEST = 18; // TODO: Remove this once NetworkTypes are unused. + /** + * @deprecated Use {@link NetworkCapabilities} instead. + * @hide + */ + @Deprecated + @Retention(RetentionPolicy.SOURCE) + @IntDef(prefix = { "TYPE_" }, value = { + TYPE_NONE, + TYPE_MOBILE, + TYPE_WIFI, + TYPE_MOBILE_MMS, + TYPE_MOBILE_SUPL, + TYPE_MOBILE_DUN, + TYPE_MOBILE_HIPRI, + TYPE_WIMAX, + TYPE_BLUETOOTH, + TYPE_DUMMY, + TYPE_ETHERNET, + TYPE_MOBILE_FOTA, + TYPE_MOBILE_IMS, + TYPE_MOBILE_CBS, + TYPE_WIFI_P2P, + TYPE_MOBILE_IA, + TYPE_MOBILE_EMERGENCY, + TYPE_PROXY, + TYPE_VPN, + TYPE_TEST + }) + public @interface LegacyNetworkType {} + // Deprecated constants for return values of startUsingNetworkFeature. They used to live // in com.android.internal.telephony.PhoneConstants until they were made inaccessible. private static final int DEPRECATED_PHONE_CONSTANT_APN_ALREADY_ACTIVE = 0; diff --git a/core/java/android/net/Ikev2VpnProfile.java b/core/java/android/net/Ikev2VpnProfile.java index f19a3410d673..81d03f07d0be 100644 --- a/core/java/android/net/Ikev2VpnProfile.java +++ b/core/java/android/net/Ikev2VpnProfile.java @@ -562,7 +562,7 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile { @NonNull private List<String> mAllowedAlgorithms = new ArrayList<>(); private boolean mIsBypassable = false; private boolean mIsMetered = true; - private int mMaxMtu = 1360; + private int mMaxMtu = PlatformVpnProfile.MAX_MTU_DEFAULT; /** * Creates a new builder with the basic parameters of an IKEv2/IPsec VPN. diff --git a/core/java/android/net/NetworkAgent.java b/core/java/android/net/NetworkAgent.java index 5c754a1b9733..fe90a8457949 100644 --- a/core/java/android/net/NetworkAgent.java +++ b/core/java/android/net/NetworkAgent.java @@ -16,6 +16,8 @@ package android.net; +import android.annotation.IntDef; +import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; @@ -32,18 +34,53 @@ import android.util.Log; import com.android.internal.util.AsyncChannel; import com.android.internal.util.Protocol; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.time.Duration; import java.util.ArrayList; import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; /** - * A Utility class for handling for communicating between bearer-specific + * A utility class for handling for communicating between bearer-specific * code and ConnectivityService. * + * An agent manages the life cycle of a network. A network starts its + * life cycle when {@link register} is called on NetworkAgent. The network + * is then connecting. When full L3 connectivity has been established, + * the agent shoud call {@link markConnected} to inform the system that + * this network is ready to use. When the network disconnects its life + * ends and the agent should call {@link unregister}, at which point the + * system will clean up and free resources. + * Any reconnection becomes a new logical network, so after a network + * is disconnected the agent cannot be used any more. Network providers + * should create a new NetworkAgent instance to handle new connections. + * * A bearer may have more than one NetworkAgent if it can simultaneously * support separate networks (IMS / Internet / MMS Apns on cellular, or * perhaps connections with different SSID or P2P for Wi-Fi). * + * This class supports methods to start and stop sending keepalive packets. + * Keepalive packets are typically sent at periodic intervals over a network + * with NAT when there is no other traffic to avoid the network forcefully + * closing the connection. NetworkAgents that manage technologies that + * have hardware support for keepalive should implement the related + * methods to save battery life. NetworkAgent that cannot get support + * without waking up the CPU should not, as this would be prohibitive in + * terms of battery - these agents should simply not override the related + * methods, which results in the implementation returning + * {@link SocketKeepalive.ERROR_UNSUPPORTED} as appropriate. + * + * Keepalive packets need to be sent at relatively frequent intervals + * (a few seconds to a few minutes). As the contents of keepalive packets + * depend on the current network status, hardware needs to be configured + * to send them and has a limited amount of memory to do so. The HAL + * formalizes this as slots that an implementation can configure to send + * the correct packets. Devices typically have a small number of slots + * per radio technology, and the specific number of slots for each + * technology is specified in configuration files. + * {@see SocketKeepalive} for details. + * * @hide */ @SystemApi @@ -65,7 +102,7 @@ public abstract class NetworkAgent { private final String LOG_TAG; private static final boolean DBG = true; private static final boolean VDBG = false; - private final ArrayList<Message>mPreConnectedQueue = new ArrayList<Message>(); + private final ArrayList<Message> mPreConnectedQueue = new ArrayList<Message>(); private volatile long mLastBwRefreshTime = 0; private static final long BW_REFRESH_MIN_WIN_MS = 500; private boolean mBandwidthUpdateScheduled = false; @@ -74,6 +111,8 @@ public abstract class NetworkAgent { // into the internal API of ConnectivityService. @NonNull private NetworkInfo mNetworkInfo; + @NonNull + private final Object mRegisterLock = new Object(); /** * The ID of the {@link NetworkProvider} that created this object, or @@ -158,6 +197,14 @@ public abstract class NetworkAgent { */ public static final int VALIDATION_STATUS_NOT_VALID = 2; + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(prefix = { "VALIDATION_STATUS_" }, value = { + VALIDATION_STATUS_VALID, + VALIDATION_STATUS_NOT_VALID + }) + public @interface ValidationStatus {} + // TODO: remove. /** @hide */ public static final int VALID_NETWORK = 1; @@ -202,7 +249,7 @@ public abstract class NetworkAgent { * Sent by ConnectivityService to the NetworkAgent to request that the specified packet be sent * periodically on the given interval. * - * arg1 = the slot number of the keepalive to start + * arg1 = the hardware slot number of the keepalive to start * arg2 = interval in seconds * obj = KeepalivePacketData object describing the data to be sent * @@ -214,7 +261,7 @@ public abstract class NetworkAgent { /** * Requests that the specified keepalive packet be stopped. * - * arg1 = slot number of the keepalive to stop. + * arg1 = hardware slot number of the keepalive to stop. * * Also used internally by ConnectivityService / KeepaliveTracker, with different semantics. * @hide @@ -229,7 +276,7 @@ public abstract class NetworkAgent { * This is also sent by KeepaliveTracker to the app's {@link SocketKeepalive}, * so that the app's {@link SocketKeepalive.Callback} methods can be called. * - * arg1 = slot number of the keepalive + * arg1 = hardware slot number of the keepalive * arg2 = error code * @hide */ @@ -259,7 +306,7 @@ public abstract class NetworkAgent { * remote site will send ACK packets in response to the keepalive packets, the firmware also * needs to be configured to properly filter the ACKs to prevent the system from waking up. * This does not happen with UDP, so this message is TCP-specific. - * arg1 = slot number of the keepalive to filter for. + * arg1 = hardware slot number of the keepalive to filter for. * obj = the keepalive packet to send repeatedly. * @hide */ @@ -268,7 +315,7 @@ public abstract class NetworkAgent { /** * Sent by the KeepaliveTracker to NetworkAgent to remove a packet filter. See * {@link #CMD_ADD_KEEPALIVE_PACKET_FILTER}. - * arg1 = slot number of the keepalive packet filter to remove. + * arg1 = hardware slot number of the keepalive packet filter to remove. * @hide */ public static final int CMD_REMOVE_KEEPALIVE_PACKET_FILTER = BASE + 17; @@ -441,7 +488,15 @@ public abstract class NetworkAgent { + (msg.arg1 == VALID_NETWORK ? "VALID, " : "INVALID, ") + redirectUrl); } - onValidationStatus(msg.arg1 /* status */, redirectUrl); + Uri uri = null; + try { + if (null != redirectUrl) { + uri = Uri.parse(redirectUrl); + } + } catch (Exception e) { + Log.wtf(LOG_TAG, "Surprising URI : " + redirectUrl, e); + } + onValidationStatus(msg.arg1 /* status */, uri); break; } case CMD_SAVE_ACCEPT_UNVALIDATED: { @@ -449,7 +504,8 @@ public abstract class NetworkAgent { break; } case CMD_START_SOCKET_KEEPALIVE: { - onStartSocketKeepalive(msg.arg1 /* slot */, msg.arg2 /* interval */, + onStartSocketKeepalive(msg.arg1 /* slot */, + Duration.ofSeconds(msg.arg2) /* interval */, (KeepalivePacketData) msg.obj /* packet */); break; } @@ -489,19 +545,29 @@ public abstract class NetworkAgent { /** * Register this network agent with ConnectivityService. + * + * This method can only be called once per network agent. + * * @return the Network associated with this network agent (which can also be obtained later * by calling getNetwork() on this agent). + * @throws IllegalStateException thrown by the system server if this network agent is + * already registered. */ @NonNull public Network register() { if (VDBG) log("Registering NetworkAgent"); final ConnectivityManager cm = (ConnectivityManager) mInitialConfiguration.context .getSystemService(Context.CONNECTIVITY_SERVICE); - mNetwork = cm.registerNetworkAgent(new Messenger(mHandler), - new NetworkInfo(mInitialConfiguration.info), - mInitialConfiguration.properties, mInitialConfiguration.capabilities, - mInitialConfiguration.score, mInitialConfiguration.config, providerId); - mInitialConfiguration = null; // All this memory can now be GC'd + synchronized (mRegisterLock) { + if (mNetwork != null) { + throw new IllegalStateException("Agent already registered"); + } + mNetwork = cm.registerNetworkAgent(new Messenger(mHandler), + new NetworkInfo(mInitialConfiguration.info), + mInitialConfiguration.properties, mInitialConfiguration.capabilities, + mInitialConfiguration.score, mInitialConfiguration.config, providerId); + mInitialConfiguration = null; // All this memory can now be GC'd + } return mNetwork; } @@ -544,18 +610,19 @@ public abstract class NetworkAgent { * Must be called by the agent when the network's {@link LinkProperties} change. * @param linkProperties the new LinkProperties. */ - public void sendLinkProperties(@NonNull LinkProperties linkProperties) { + public final void sendLinkProperties(@NonNull LinkProperties linkProperties) { Objects.requireNonNull(linkProperties); queueOrSendMessage(EVENT_NETWORK_PROPERTIES_CHANGED, new LinkProperties(linkProperties)); } /** * Inform ConnectivityService that this agent has now connected. + * Call {@link #unregister} to disconnect. */ - public void setConnected() { + public void markConnected() { if (mIsLegacy) { throw new UnsupportedOperationException( - "Legacy agents can't call setConnected."); + "Legacy agents can't call markConnected."); } mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, null, null); queueOrSendMessage(EVENT_NETWORK_INFO_CHANGED, mNetworkInfo); @@ -569,8 +636,7 @@ public abstract class NetworkAgent { */ public void unregister() { if (mIsLegacy) { - throw new UnsupportedOperationException( - "Legacy agents can't call unregister."); + throw new UnsupportedOperationException("Legacy agents can't call unregister."); } mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.DISCONNECTED, null, null); queueOrSendMessage(EVENT_NETWORK_INFO_CHANGED, mNetworkInfo); @@ -626,7 +692,7 @@ public abstract class NetworkAgent { * @hide TODO: expose something better. */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) - public void sendNetworkInfo(NetworkInfo networkInfo) { + public final void sendNetworkInfo(NetworkInfo networkInfo) { if (!mIsLegacy) { throw new UnsupportedOperationException("Only legacy agents can call sendNetworkInfo."); } @@ -637,7 +703,7 @@ public abstract class NetworkAgent { * Must be called by the agent when the network's {@link NetworkCapabilities} change. * @param networkCapabilities the new NetworkCapabilities. */ - public void sendNetworkCapabilities(@NonNull NetworkCapabilities networkCapabilities) { + public final void sendNetworkCapabilities(@NonNull NetworkCapabilities networkCapabilities) { Objects.requireNonNull(networkCapabilities); mBandwidthUpdatePending.set(false); mLastBwRefreshTime = System.currentTimeMillis(); @@ -647,9 +713,10 @@ public abstract class NetworkAgent { /** * Must be called by the agent to update the score of this network. - * @param score the new score. + * + * @param score the new score, between 0 and 99. */ - public void sendNetworkScore(int score) { + public final void sendNetworkScore(@IntRange(from = 0, to = 99) int score) { if (score < 0) { throw new IllegalArgumentException("Score must be >= 0"); } @@ -733,15 +800,15 @@ public abstract class NetworkAgent { * {@code VALIDATION_STATUS_VALID} if Internet connectivity was validated, * {@code VALIDATION_STATUS_NOT_VALID} if Internet connectivity was not validated. * - * This may be called multiple times as network status changes, or if there are multiple - * subsequent attempts to validate connectivity that fail. + * This is guaranteed to be called again when the network status changes, but the system + * may also call this multiple times even if the status does not change. * * @param status one of {@code VALIDATION_STATUS_VALID} or {@code VALIDATION_STATUS_NOT_VALID}. - * @param redirectUrl If Internet connectivity is being redirected (e.g., on a captive portal), + * @param redirectUri If Internet connectivity is being redirected (e.g., on a captive portal), * this is the destination the probes are being redirected to, otherwise {@code null}. */ - public void onValidationStatus(int status, @Nullable String redirectUrl) { - networkStatus(status, redirectUrl); + public void onValidationStatus(@ValidationStatus int status, @Nullable Uri redirectUri) { + networkStatus(status, redirectUri.toString()); } /** @hide TODO delete once subclasses have moved to onValidationStatus */ protected void networkStatus(int status, String redirectUrl) { @@ -767,13 +834,25 @@ public abstract class NetworkAgent { * Requests that the network hardware send the specified packet at the specified interval. * * @param slot the hardware slot on which to start the keepalive. - * @param intervalSeconds the interval between packets + * @param interval the interval between packets, between 10 and 3600. Note that this API + * does not support sub-second precision and will round off the request. * @param packet the packet to send. */ - public void onStartSocketKeepalive(int slot, int intervalSeconds, + // seconds is from SocketKeepalive.MIN_INTERVAL_SEC to MAX_INTERVAL_SEC, but these should + // not be exposed as constants because they may change in the future (API guideline 4.8) + // and should have getters if exposed at all. Getters can't be used in the annotation, + // so the values unfortunately need to be copied. + public void onStartSocketKeepalive(int slot, @NonNull Duration interval, @NonNull KeepalivePacketData packet) { - Message msg = mHandler.obtainMessage(CMD_START_SOCKET_KEEPALIVE, slot, intervalSeconds, - packet); + final long intervalSeconds = interval.getSeconds(); + if (intervalSeconds < SocketKeepalive.MIN_INTERVAL_SEC + || intervalSeconds > SocketKeepalive.MAX_INTERVAL_SEC) { + throw new IllegalArgumentException("Interval needs to be comprised between " + + SocketKeepalive.MIN_INTERVAL_SEC + " and " + SocketKeepalive.MAX_INTERVAL_SEC + + " but was " + intervalSeconds); + } + final Message msg = mHandler.obtainMessage(CMD_START_SOCKET_KEEPALIVE, slot, + (int) intervalSeconds, packet); startSocketKeepalive(msg); msg.recycle(); } @@ -801,9 +880,11 @@ public abstract class NetworkAgent { * Must be called by the agent when a socket keepalive event occurs. * * @param slot the hardware slot on which the event occurred. - * @param event the event that occurred. + * @param event the event that occurred, as one of the SocketKeepalive.ERROR_* + * or SocketKeepalive.SUCCESS constants. */ - public void sendSocketKeepaliveEvent(int slot, int event) { + public final void sendSocketKeepaliveEvent(int slot, + @SocketKeepalive.KeepaliveEvent int event) { queueOrSendMessage(EVENT_SOCKET_KEEPALIVE, slot, event); } /** @hide TODO delete once callers have moved to sendSocketKeepaliveEvent */ @@ -845,9 +926,18 @@ public abstract class NetworkAgent { } /** - * Called by ConnectivityService to inform this network transport of signal strength thresholds + * Called by ConnectivityService to inform this network agent of signal strength thresholds * that when crossed should trigger a system wakeup and a NetworkCapabilities update. * + * When the system updates the list of thresholds that should wake up the CPU for a + * given agent it will call this method on the agent. The agent that implement this + * should implement it in hardware so as to ensure the CPU will be woken up on breach. + * Agents are expected to react to a breach by sending an updated NetworkCapabilities + * object with the appropriate signal strength to sendNetworkCapabilities. + * + * The specific units are bearer-dependent. See details on the units and requests in + * {@link NetworkCapabilities.Builder#setSignalStrength}. + * * @param thresholds the array of thresholds that should trigger wakeups. */ public void onSignalStrengthThresholdsUpdated(@NonNull int[] thresholds) { diff --git a/core/java/android/net/NetworkAgentConfig.java b/core/java/android/net/NetworkAgentConfig.java index ca9328a713f0..fee868a93be4 100644 --- a/core/java/android/net/NetworkAgentConfig.java +++ b/core/java/android/net/NetworkAgentConfig.java @@ -155,6 +155,7 @@ public final class NetworkAgentConfig implements Parcelable { /** * @return the legacy type */ + @ConnectivityManager.LegacyNetworkType public int getLegacyType() { return legacyType; } @@ -206,7 +207,7 @@ public final class NetworkAgentConfig implements Parcelable { /** * Builder class to facilitate constructing {@link NetworkAgentConfig} objects. */ - public static class Builder { + public static final class Builder { private final NetworkAgentConfig mConfig = new NetworkAgentConfig(); /** diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java index af9414c56654..4e4ff4a63a1a 100644 --- a/core/java/android/net/NetworkCapabilities.java +++ b/core/java/android/net/NetworkCapabilities.java @@ -920,7 +920,7 @@ public final class NetworkCapabilities implements Parcelable { * empty unless the destination is 1) the System Server, or 2) Telephony. In either case, the * receiving entity must have the ACCESS_FINE_LOCATION permission and target R+. */ - private int[] mAdministratorUids = new int[0]; + @NonNull private int[] mAdministratorUids = new int[0]; /** * Sets the int[] of UIDs that are administrators of this network. @@ -1122,7 +1122,7 @@ public final class NetworkCapabilities implements Parcelable { } private boolean satisfiedBySpecifier(NetworkCapabilities nc) { - return mNetworkSpecifier == null || mNetworkSpecifier.satisfiedBy(nc.mNetworkSpecifier) + return mNetworkSpecifier == null || mNetworkSpecifier.canBeSatisfiedBy(nc.mNetworkSpecifier) || nc.mNetworkSpecifier instanceof MatchAllNetworkSpecifier; } diff --git a/core/java/android/net/NetworkProvider.java b/core/java/android/net/NetworkProvider.java index 418d6915d4b3..75086cf82b57 100644 --- a/core/java/android/net/NetworkProvider.java +++ b/core/java/android/net/NetworkProvider.java @@ -16,6 +16,7 @@ package android.net; +import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; @@ -33,8 +34,8 @@ import android.util.Log; * {@link NetworkAgent}s. The networks can then provide connectivity to apps and can be interacted * with via networking APIs such as {@link ConnectivityManager}. * - * Subclasses should implement {@link #onNetworkRequested} and {@link #onRequestWithdrawn} to - * receive {@link NetworkRequest}s sent by the system and by apps. A network that is not the + * Subclasses should implement {@link #onNetworkRequested} and {@link #onNetworkRequestWithdrawn} + * to receive {@link NetworkRequest}s sent by the system and by apps. A network that is not the * best (highest-scoring) network for any request is generally not used by the system, and torn * down. * @@ -77,7 +78,7 @@ public class NetworkProvider { * Constructs a new NetworkProvider. * * @param looper the Looper on which to run {@link #onNetworkRequested} and - * {@link #onRequestWithdrawn}. + * {@link #onNetworkRequestWithdrawn}. * @param name the name of the listener, used only for debugging. * * @hide @@ -94,7 +95,7 @@ public class NetworkProvider { onNetworkRequested((NetworkRequest) m.obj, m.arg1, m.arg2); break; case CMD_CANCEL_REQUEST: - onRequestWithdrawn((NetworkRequest) m.obj); + onNetworkRequestWithdrawn((NetworkRequest) m.obj); break; default: Log.e(mName, "Unhandled message: " + m.what); @@ -142,14 +143,15 @@ public class NetworkProvider { * @hide */ @SystemApi - public void onNetworkRequested(@NonNull NetworkRequest request, int score, int providerId) {} + public void onNetworkRequested(@NonNull NetworkRequest request, + @IntRange(from = 0, to = 99) int score, int providerId) {} /** * Called when a NetworkRequest is withdrawn. * @hide */ @SystemApi - public void onRequestWithdrawn(@NonNull NetworkRequest request) {} + public void onNetworkRequestWithdrawn(@NonNull NetworkRequest request) {} /** * Asserts that no provider will ever be able to satisfy the specified request. The provider @@ -157,7 +159,7 @@ public class NetworkProvider { * satisfying this request, and that the request cannot be satisfied. The application filing the * request will receive an {@link NetworkCallback#onUnavailable()} callback. * - * @param request the request that cannot be fulfilled + * @param request the request that permanently cannot be fulfilled * @hide */ @SystemApi diff --git a/core/java/android/net/NetworkRequest.java b/core/java/android/net/NetworkRequest.java index 964f13f39ec6..a6bd74a5870d 100644 --- a/core/java/android/net/NetworkRequest.java +++ b/core/java/android/net/NetworkRequest.java @@ -473,10 +473,8 @@ public class NetworkRequest implements Parcelable { * * @param nc Capabilities that should satisfy this NetworkRequest. null capabilities do not * satisfy any request. - * @hide */ - @SystemApi - public boolean satisfiedBy(@Nullable NetworkCapabilities nc) { + public boolean canBeSatisfiedBy(@Nullable NetworkCapabilities nc) { return networkCapabilities.satisfiedByNetworkCapabilities(nc); } diff --git a/core/java/android/net/NetworkSpecifier.java b/core/java/android/net/NetworkSpecifier.java index 2dd0c4e207fe..160259e39813 100644 --- a/core/java/android/net/NetworkSpecifier.java +++ b/core/java/android/net/NetworkSpecifier.java @@ -35,7 +35,9 @@ public abstract class NetworkSpecifier { * @hide */ @SystemApi - public abstract boolean satisfiedBy(@Nullable NetworkSpecifier other); + public boolean canBeSatisfiedBy(@Nullable NetworkSpecifier other) { + return false; + } /** * Optional method which can be overridden by concrete implementations of NetworkSpecifier to diff --git a/core/java/android/net/PlatformVpnProfile.java b/core/java/android/net/PlatformVpnProfile.java index fbae63707be2..445ec91e4f46 100644 --- a/core/java/android/net/PlatformVpnProfile.java +++ b/core/java/android/net/PlatformVpnProfile.java @@ -60,6 +60,9 @@ public abstract class PlatformVpnProfile { public static final int TYPE_IKEV2_IPSEC_RSA = VpnProfile.TYPE_IKEV2_IPSEC_RSA; /** @hide */ + public static final int MAX_MTU_DEFAULT = 1360; + + /** @hide */ @PlatformVpnType protected final int mType; /** @hide */ diff --git a/core/java/android/net/SocketKeepalive.java b/core/java/android/net/SocketKeepalive.java index fc9a8f63c131..46aef10258d9 100644 --- a/core/java/android/net/SocketKeepalive.java +++ b/core/java/android/net/SocketKeepalive.java @@ -109,6 +109,17 @@ public abstract class SocketKeepalive implements AutoCloseable { }) public @interface ErrorCode {} + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(value = { + SUCCESS, + ERROR_INVALID_LENGTH, + ERROR_UNSUPPORTED, + ERROR_INSUFFICIENT_RESOURCES, + ERROR_HARDWARE_UNSUPPORTED + }) + public @interface KeepaliveEvent {} + /** * The minimum interval in seconds between keepalive packet transmissions. * diff --git a/core/java/android/net/StringNetworkSpecifier.java b/core/java/android/net/StringNetworkSpecifier.java index 6ae59716cfd8..3f2aa17f263e 100644 --- a/core/java/android/net/StringNetworkSpecifier.java +++ b/core/java/android/net/StringNetworkSpecifier.java @@ -40,7 +40,7 @@ public final class StringNetworkSpecifier extends NetworkSpecifier implements Pa /** @hide */ @Override - public boolean satisfiedBy(NetworkSpecifier other) { + public boolean canBeSatisfiedBy(NetworkSpecifier other) { return equals(other); } diff --git a/core/java/android/net/TelephonyNetworkSpecifier.java b/core/java/android/net/TelephonyNetworkSpecifier.java index 726f77059707..aafebd7ecfc8 100644 --- a/core/java/android/net/TelephonyNetworkSpecifier.java +++ b/core/java/android/net/TelephonyNetworkSpecifier.java @@ -97,7 +97,7 @@ public final class TelephonyNetworkSpecifier extends NetworkSpecifier implements /** @hide */ @Override - public boolean satisfiedBy(NetworkSpecifier other) { + public boolean canBeSatisfiedBy(NetworkSpecifier other) { // Any generic requests should be satisfied by a specific telephony network. // For simplicity, we treat null same as MatchAllNetworkSpecifier return equals(other) || other == null || other instanceof MatchAllNetworkSpecifier; diff --git a/core/java/android/os/BasicShellCommandHandler.java b/core/java/android/os/BasicShellCommandHandler.java index 5bd5d61b6361..52273cb247c3 100644 --- a/core/java/android/os/BasicShellCommandHandler.java +++ b/core/java/android/os/BasicShellCommandHandler.java @@ -264,6 +264,16 @@ public abstract class BasicShellCommandHandler { } /** + * Returns number of arguments that haven't been processed yet. + */ + public int getRemainingArgsCount() { + if (mArgPos >= mArgs.length) { + return 0; + } + return mArgs.length - mArgPos; + } + + /** * Return the next argument on the command line, whatever it is; if there are * no arguments left, throws an IllegalArgumentException to report this to the user. */ diff --git a/core/java/android/os/IVibratorService.aidl b/core/java/android/os/IVibratorService.aidl index 84013e7ebc88..615ae6593330 100644 --- a/core/java/android/os/IVibratorService.aidl +++ b/core/java/android/os/IVibratorService.aidl @@ -28,7 +28,7 @@ interface IVibratorService boolean registerVibratorStateListener(in IVibratorStateListener listener); boolean unregisterVibratorStateListener(in IVibratorStateListener listener); boolean hasAmplitudeControl(); - boolean[] areEffectsSupported(in int[] effectIds); + int[] areEffectsSupported(in int[] effectIds); boolean[] arePrimitivesSupported(in int[] primitiveIds); boolean setAlwaysOnEffect(int uid, String opPkg, int alwaysOnId, in VibrationEffect effect, in VibrationAttributes attributes); diff --git a/core/java/android/os/IncidentManager.java b/core/java/android/os/IncidentManager.java index 8dde117fd19a..565d31a26dbc 100644 --- a/core/java/android/os/IncidentManager.java +++ b/core/java/android/os/IncidentManager.java @@ -567,7 +567,8 @@ public class IncidentManager { } /** - * Register a callback to dump an extended incident report section with the given id and name. + * Register a callback to dump an extended incident report section with the given id and name, + * running on the supplied executor. * * Calling <code>registerSection</code> with a duplicate id will override previous registration. * However, the request must come from the same calling uid. @@ -578,23 +579,6 @@ public class IncidentManager { * Also see incident.proto for other rules about the ID. * @param name the name to display in logs and/or stderr when taking an incident report * containing this section, mainly for debugging purpose - * @param callback the callback function to be invoked when an incident report with all sections - * or sections matching the given id is being taken - */ - public void registerSection(int id, @NonNull String name, @NonNull DumpCallback callback) { - registerSection(id, name, mContext.getMainExecutor(), callback); - } - - /** - * Register a callback to dump an extended incident report section with the given id and name, - * running on the supplied executor. - * - * @param id the ID of the extended section. It should be unique system-wide, and be - * different from IDs of all existing section in - * frameworks/base/core/proto/android/os/incident.proto. - * Also see incident.proto for other rules about the ID. - * @param name the name to display in logs and/or stderr when taking an incident report - * containing this section, mainly for debugging purpose * @param executor the executor used to run the callback * @param callback the callback function to be invoked when an incident report with all sections * or sections matching the given id is being taken diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java index d60820ef0f57..8cdcd49cb2cc 100644 --- a/core/java/android/os/RecoverySystem.java +++ b/core/java/android/os/RecoverySystem.java @@ -665,15 +665,17 @@ public class RecoverySystem { * the preparation for unattended update is reset. * * @param context the Context to use. - * @throws IOException if there were any errors setting up unattended update + * @throws IOException if there were any errors clearing the unattended update state * @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.RECOVERY) - public static boolean clearPrepareForUnattendedUpdate(@NonNull Context context) + public static void clearPrepareForUnattendedUpdate(@NonNull Context context) throws IOException { RecoverySystem rs = (RecoverySystem) context.getSystemService(Context.RECOVERY_SERVICE); - return rs.clearLskf(); + if (!rs.clearLskf()) { + throw new IOException("could not reset unattended update state"); + } } /** @@ -684,21 +686,22 @@ public class RecoverySystem { * @param context the Context to use. * @param updateToken the token used to call {@link #prepareForUnattendedUpdate} before * @param reason the reboot reason to give to the {@link PowerManager} - * @throws IOException if there were any errors setting up unattended update - * @return false if the reboot couldn't proceed because the device wasn't ready for an + * @throws IOException if the reboot couldn't proceed because the device wasn't ready for an * unattended reboot or if the {@code updateToken} did not match the previously * given token * @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.RECOVERY) - public static boolean rebootAndApply(@NonNull Context context, @NonNull String updateToken, + public static void rebootAndApply(@NonNull Context context, @NonNull String updateToken, @NonNull String reason) throws IOException { if (updateToken == null) { throw new NullPointerException("updateToken == null"); } RecoverySystem rs = (RecoverySystem) context.getSystemService(Context.RECOVERY_SERVICE); - return rs.rebootWithLskf(updateToken, reason); + if (!rs.rebootWithLskf(updateToken, reason)) { + throw new IOException("system not prepared to apply update"); + } } /** diff --git a/core/java/android/os/SystemVibrator.java b/core/java/android/os/SystemVibrator.java index da20c7f2ae70..2dba8dce62da 100644 --- a/core/java/android/os/SystemVibrator.java +++ b/core/java/android/os/SystemVibrator.java @@ -21,12 +21,13 @@ import android.annotation.NonNull; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; import android.media.AudioAttributes; -import android.os.IVibratorStateListener; import android.util.ArrayMap; import android.util.Log; + import com.android.internal.annotations.GuardedBy; -import java.util.concurrent.Executor; + import java.util.Objects; +import java.util.concurrent.Executor; /** * Vibrator implementation that controls the main system vibrator. @@ -238,13 +239,13 @@ public class SystemVibrator extends Vibrator { } @Override - public boolean[] areEffectsSupported(@VibrationEffect.EffectType int... effectIds) { + public int[] areEffectsSupported(@VibrationEffect.EffectType int... effectIds) { try { return mService.areEffectsSupported(effectIds); } catch (RemoteException e) { Log.w(TAG, "Failed to query effect support"); + throw e.rethrowAsRuntimeException(); } - return new boolean[effectIds.length]; } @Override @@ -254,8 +255,8 @@ public class SystemVibrator extends Vibrator { return mService.arePrimitivesSupported(primitiveIds); } catch (RemoteException e) { Log.w(TAG, "Failed to query effect support"); + throw e.rethrowAsRuntimeException(); } - return new boolean[primitiveIds.length]; } diff --git a/core/java/android/os/VibrationEffect.java b/core/java/android/os/VibrationEffect.java index aa89b515adc6..ca861577ab37 100644 --- a/core/java/android/os/VibrationEffect.java +++ b/core/java/android/os/VibrationEffect.java @@ -961,7 +961,7 @@ public abstract class VibrationEffect implements Parcelable { * * @see VibrationEffect#startComposition() */ - public static class Composition { + public static final class Composition { /** @hide */ @IntDef(prefix = { "PRIMITIVE_" }, value = { PRIMITIVE_CLICK, @@ -1020,6 +1020,8 @@ public abstract class VibrationEffect implements Parcelable { private ArrayList<PrimitiveEffect> mEffects = new ArrayList<>(); + Composition() { } + /** * Add a haptic primitive to the end of the current composition. * @@ -1030,7 +1032,7 @@ public abstract class VibrationEffect implements Parcelable { * * @return The {@link Composition} object to enable adding multiple primitives in one chain. */ - @Nullable + @NonNull public Composition addPrimitive(@Primitive int primitiveId) { addPrimitive(primitiveId, /*scale*/ 1.0f, /*delay*/ 0); return this; @@ -1046,7 +1048,7 @@ public abstract class VibrationEffect implements Parcelable { * * @return The {@link Composition} object to enable adding multiple primitives in one chain. */ - @Nullable + @NonNull public Composition addPrimitive(@Primitive int primitiveId, @FloatRange(from = 0f, to = 1f) float scale) { addPrimitive(primitiveId, scale, /*delay*/ 0); @@ -1058,11 +1060,11 @@ public abstract class VibrationEffect implements Parcelable { * * @param primitiveId The primitive to add * @param scale The scale to apply to the intensity of the primitive. - * @param delay The amount of time, in milliseconds, to wait before playing the prior + * @param delay The amount of time, in milliseconds, to wait between playing the prior * primitive and this one * @return The {@link Composition} object to enable adding multiple primitives in one chain. */ - @Nullable + @NonNull public Composition addPrimitive(@Primitive int primitiveId, @FloatRange(from = 0f, to = 1f) float scale, @IntRange(from = 0) int delay) { mEffects.add(new PrimitiveEffect(checkPrimitive(primitiveId), scale, delay)); diff --git a/core/java/android/os/Vibrator.java b/core/java/android/os/Vibrator.java index d4da7a84d2a1..86d009e8607e 100644 --- a/core/java/android/os/Vibrator.java +++ b/core/java/android/os/Vibrator.java @@ -32,6 +32,7 @@ import android.util.Log; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.Arrays; import java.util.concurrent.Executor; /** @@ -72,6 +73,37 @@ public abstract class Vibrator { */ public static final int VIBRATION_INTENSITY_HIGH = 3; + /** + * Vibration effect support: unknown + * + * The hardware doesn't report it's supported effects, so we can't determine whether the + * effect is supported or not. + */ + public static final int VIBRATION_EFFECT_SUPPORT_UNKNOWN = 0; + + /** + * Vibration effect support: supported + * + * This effect is supported by the underlying hardware. + */ + public static final int VIBRATION_EFFECT_SUPPORT_YES = 1; + + /** + * Vibration effect support: unsupported + * + * This effect is <b>not</b> supported by the underlying hardware. + */ + public static final int VIBRATION_EFFECT_SUPPORT_NO = 2; + + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(prefix = {"VIBRATION_EFFECT_SUPPORT_"}, value = { + VIBRATION_EFFECT_SUPPORT_UNKNOWN, + VIBRATION_EFFECT_SUPPORT_YES, + VIBRATION_EFFECT_SUPPORT_NO, + }) + public @interface VibrationEffectSupport {} + /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef(prefix = {"VIBRATION_INTENSITY_"}, value = { @@ -318,47 +350,61 @@ public abstract class Vibrator { /** * Query whether the vibrator supports the given effects. * - * If the returned array is {@code null}, the hardware doesn't support querying its supported - * effects. It may support any or all effects, but there's no way to programmatically know - * whether a {@link #vibrate} call will be successful. + * Not all hardware reports its effect capabilities, so the system may not necessarily know + * whether an effect is supported or not. * - * If the returned array is non-null, then it will be the same length as the query array and - * the value at a given index will contain whether the effect at that same index in the - * querying array is supported or not. + * The returned array will be the same length as the query array and the value at a given index + * will contain {@link #VIBRATION_EFFECT_SUPPORT_YES} if the effect at that same index in the + * querying array is supported, {@link #VIBRATION_EFFECT_SUPPORT_NO} if it isn't supported, or + * {@link #VIBRATION_EFFECT_SUPPORT_UNKNOWN} if the system can't determine whether it's + * supported or not. * * @param effectIds Which effects to query for. - * @return Whether the effects are supported. Null when the hardware doesn't tell us what it - * supports. + * @return An array containing the systems current knowledge about whether the given effects + * are supported or not. */ - @Nullable - public boolean[] areEffectsSupported( + @NonNull + @VibrationEffectSupport + public int[] areEffectsSupported( @NonNull @VibrationEffect.EffectType int... effectIds) { - return new boolean[effectIds.length]; + final int[] support = new int[effectIds.length]; + Arrays.fill(support, VIBRATION_EFFECT_SUPPORT_NO); + return support; } /** * Query whether the vibrator supports all of the given effects. * - * If the result is {@code null}, the hardware doesn't support querying its supported - * effects. It may support any or all effects, but there's no way to programmatically know - * whether a {@link #vibrate} call will be successful. + * Not all hardware reports its effect capabilities, so the system may not necessarily know + * whether an effect is supported or not. * - * If the returned array is non-null, then it will return whether all of the effects are + * If the result is {@link #VIBRATION_EFFECT_SUPPORT_YES}, all effects in the query are * supported by the hardware. * + * If the result is {@link #VIBRATION_EFFECT_SUPPORT_NO}, at least one of the effects in the + * query is not supported. + * + * If the result is {@link #VIBRATION_EFFECT_SUPPORT_UNKNOWN}, the system doesn't know whether + * all of the effects are supported. It may support any or all of the queried effects, + * but there's no way to programmatically know whether a {@link #vibrate} call will successfully + * cause a vibration. It's guaranteed, however, that none of the queried effects are + * definitively unsupported by the hardware. + * * @param effectIds Which effects to query for. - * @return Whether the effects are supported. {@code null} when the hardware doesn't tell us - * what it supports. + * @return Whether all of the effects are supported. */ - @Nullable - public Boolean areAllEffectsSupported( + @VibrationEffectSupport + public final int areAllEffectsSupported( @NonNull @VibrationEffect.EffectType int... effectIds) { - for (boolean supported : areEffectsSupported(effectIds)) { - if (!supported) { - return false; + int support = VIBRATION_EFFECT_SUPPORT_YES; + for (int supported : areEffectsSupported(effectIds)) { + if (supported == VIBRATION_EFFECT_SUPPORT_NO) { + return VIBRATION_EFFECT_SUPPORT_NO; + } else if (supported == VIBRATION_EFFECT_SUPPORT_UNKNOWN) { + support = VIBRATION_EFFECT_SUPPORT_UNKNOWN; } } - return true; + return support; } @@ -384,7 +430,7 @@ public abstract class Vibrator { * @param primitiveIds Which primitives to query for. * @return Whether primitives effects are supported. */ - public boolean areAllPrimitivesSupported( + public final boolean areAllPrimitivesSupported( @NonNull @VibrationEffect.Composition.Primitive int... primitiveIds) { for (boolean supported : arePrimitivesSupported(primitiveIds)) { if (!supported) { diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index bbcb9d9249af..e2d0c49d9d13 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -6589,11 +6589,9 @@ public final class Settings { "accessibility_shortcut_target_service"; /** - * Setting specifying the accessibility services, accessibility shortcut targets, - * or features to be toggled via the accessibility button in the navigation bar. - * - * <p> This is a colon-separated string list which contains the flattened - * {@link ComponentName} and the class name of a system class implementing a supported + * Setting specifying the accessibility service or feature to be toggled via the + * accessibility button in the navigation bar. This is either a flattened + * {@link ComponentName} or the class name of a system class implementing a supported * accessibility feature. * @hide */ @@ -6602,15 +6600,14 @@ public final class Settings { /** * Setting specifying the accessibility services, accessibility shortcut targets, - * or features to be toggled via the long press accessibility button in the navigation bar. + * or features to be toggled via the accessibility button in the navigation bar. * * <p> This is a colon-separated string list which contains the flattened * {@link ComponentName} and the class name of a system class implementing a supported * accessibility feature. * @hide */ - public static final String ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS = - "accessibility_button_long_press_targets"; + public static final String ACCESSIBILITY_BUTTON_TARGETS = "accessibility_button_targets"; /** * The system class name of magnification controller which is a target to be toggled via @@ -6775,8 +6772,8 @@ public final class Settings { * zoom in the display content and is targeted to low vision users. The current * magnification scale is controlled by {@link #ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE}. * - * @deprecated Use {@link #ACCESSIBILITY_BUTTON_TARGET_COMPONENT} instead. - * {@link #ACCESSIBILITY_BUTTON_TARGET_COMPONENT} holds the magnification system class name + * @deprecated Use {@link #ACCESSIBILITY_BUTTON_TARGETS} instead. + * {@link #ACCESSIBILITY_BUTTON_TARGETS} holds the magnification system class name * when navigation bar magnification is enabled. * @hide */ @@ -8574,6 +8571,16 @@ public final class Settings { public static final String QS_TILES = "sysui_qs_tiles"; /** + * Whether this user has enabled Quick controls. + * + * 0 indicates disabled and 1 indicates enabled. A non existent value should be treated as + * enabled. + * + * @hide + */ + public static final String CONTROLS_ENABLED = "controls_enabled"; + + /** * Specifies whether the web action API is enabled. * * @hide @@ -9642,14 +9649,6 @@ public final class Settings { "location_ignore_settings_package_whitelist"; /** - * Maximum staleness allowed for last location when returned to clients with only foreground - * location permissions. - * @hide - */ - public static final String LOCATION_LAST_LOCATION_MAX_AGE_MILLIS = - "location_last_location_max_age_millis"; - - /** * Whether TV will switch to MHL port when a mobile device is plugged in. * (0 = false, 1 = true) * @hide @@ -13061,6 +13060,18 @@ public final class Settings { "chained_battery_attribution_enabled"; /** + * Toggle to enable/disable the incremental ADB installation by default. + * If not set, default adb installations are incremental; set to zero to use full ones. + * Note: only ADB uses it, no usages in the Framework code. + * <p> + * Type: int (0 to disable, 1 to enable) + * + * @hide + */ + public static final String ENABLE_ADB_INCREMENTAL_INSTALL_DEFAULT = + "enable_adb_incremental_install_default"; + + /** * The packages whitelisted to be run in autofill compatibility mode. The list * of packages is {@code ":"} colon delimited, and each entry has the name of the * package and an optional list of url bar resource ids (the list is delimited by @@ -14169,6 +14180,23 @@ public final class Settings { "appop_history_parameters"; /** + * Auto revoke parameters. These parameters are represented by + * a comma-delimited key-value list. + * + * <pre> + * enabledForPreRApps (bolean) + * unusedThresholdMs (long) + * checkFrequencyMs (long) + * </pre> + * + * Ex: "enabledForPreRApps=false,unusedThresholdMs=7776000000,checkFrequencyMs=1296000000" + * + * @hide + */ + public static final String AUTO_REVOKE_PARAMETERS = + "auto_revoke_parameters"; + + /** * Delay for sending ACTION_CHARGING after device is plugged in. * This is used as an override for constants defined in BatteryStatsImpl for * ease of experimentation. diff --git a/core/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java index 1eb53aa366fa..b34268d04238 100644 --- a/core/java/android/provider/Telephony.java +++ b/core/java/android/provider/Telephony.java @@ -1332,7 +1332,6 @@ public final class Telephony { * @hide */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) - @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final String ACTION_SMS_MMS_DB_LOST = "android.provider.action.SMS_MMS_DB_LOST"; diff --git a/core/java/android/security/FileIntegrityManager.java b/core/java/android/security/FileIntegrityManager.java index cdd6584e9b35..266046e57cd5 100644 --- a/core/java/android/security/FileIntegrityManager.java +++ b/core/java/android/security/FileIntegrityManager.java @@ -31,9 +31,11 @@ import java.security.cert.X509Certificate; @SystemService(Context.FILE_INTEGRITY_SERVICE) public final class FileIntegrityManager { @NonNull private final IFileIntegrityService mService; + @NonNull private final Context mContext; /** @hide */ - public FileIntegrityManager(@NonNull IFileIntegrityService service) { + public FileIntegrityManager(@NonNull Context context, @NonNull IFileIntegrityService service) { + mContext = context; mService = service; } @@ -69,7 +71,8 @@ public final class FileIntegrityManager { public boolean isAppSourceCertificateTrusted(@NonNull X509Certificate certificate) throws CertificateEncodingException { try { - return mService.isAppSourceCertificateTrusted(certificate.getEncoded()); + return mService.isAppSourceCertificateTrusted( + certificate.getEncoded(), mContext.getOpPackageName()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/core/java/android/security/IFileIntegrityService.aidl b/core/java/android/security/IFileIntegrityService.aidl index ebb8bcb85350..dff347ec758a 100644 --- a/core/java/android/security/IFileIntegrityService.aidl +++ b/core/java/android/security/IFileIntegrityService.aidl @@ -22,5 +22,5 @@ package android.security; */ interface IFileIntegrityService { boolean isApkVeritySupported(); - boolean isAppSourceCertificateTrusted(in byte[] certificateBytes); + boolean isAppSourceCertificateTrusted(in byte[] certificateBytes, in String packageName); } diff --git a/core/java/android/service/autofill/InlinePresentation.java b/core/java/android/service/autofill/InlinePresentation.java index b6a8ced29f72..cb03d2136dd4 100644 --- a/core/java/android/service/autofill/InlinePresentation.java +++ b/core/java/android/service/autofill/InlinePresentation.java @@ -21,7 +21,7 @@ import android.annotation.Size; import android.app.slice.Slice; import android.os.Parcel; import android.os.Parcelable; -import android.view.inline.InlinePresentationSpec; +import android.widget.inline.InlinePresentationSpec; import com.android.internal.util.DataClass; @@ -233,7 +233,7 @@ public final class InlinePresentation implements Parcelable { time = 1582753782651L, codegenVersion = "1.0.14", sourceFile = "frameworks/base/core/java/android/service/autofill/InlinePresentation.java", - inputSignatures = "private final @android.annotation.NonNull android.app.slice.Slice mSlice\nprivate final @android.annotation.NonNull android.view.inline.InlinePresentationSpec mInlinePresentationSpec\nprivate final boolean mPinned\npublic @android.annotation.NonNull @android.annotation.Size(min=0L) java.lang.String[] getAutofillHints()\nclass InlinePresentation extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genHiddenConstDefs=true, genEqualsHashCode=true)") + inputSignatures = "private final @android.annotation.NonNull android.app.slice.Slice mSlice\nprivate final @android.annotation.NonNull android.widget.inline.InlinePresentationSpec mInlinePresentationSpec\nprivate final boolean mPinned\npublic @android.annotation.NonNull @android.annotation.Size(min=0L) java.lang.String[] getAutofillHints()\nclass InlinePresentation extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genHiddenConstDefs=true, genEqualsHashCode=true)") @Deprecated private void __metadata() {} diff --git a/core/java/android/service/contentcapture/ContentCaptureService.java b/core/java/android/service/contentcapture/ContentCaptureService.java index cecfe24613a4..ef55f0615ec7 100644 --- a/core/java/android/service/contentcapture/ContentCaptureService.java +++ b/core/java/android/service/contentcapture/ContentCaptureService.java @@ -18,7 +18,7 @@ package android.service.contentcapture; import static android.view.contentcapture.ContentCaptureHelper.sDebug; import static android.view.contentcapture.ContentCaptureHelper.sVerbose; import static android.view.contentcapture.ContentCaptureHelper.toList; -import static android.view.contentcapture.ContentCaptureSession.NO_SESSION_ID; +import static android.view.contentcapture.ContentCaptureManager.NO_SESSION_ID; import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage; @@ -60,7 +60,9 @@ import com.android.internal.util.Preconditions; import java.io.FileDescriptor; import java.io.PrintWriter; import java.lang.ref.WeakReference; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.concurrent.Executor; import java.util.function.Consumer; @@ -119,6 +121,9 @@ public abstract class ContentCaptureService extends Service { */ public static final String SERVICE_META_DATA = "android.content_capture"; + private final LocalDataShareAdapterResourceManager mDataShareAdapterResourceManager = + new LocalDataShareAdapterResourceManager(); + private Handler mHandler; private IContentCaptureServiceCallback mCallback; @@ -546,7 +551,8 @@ public abstract class ContentCaptureService extends Service { Preconditions.checkNotNull(executor); DataShareReadAdapterDelegate delegate = - new DataShareReadAdapterDelegate(executor, adapter); + new DataShareReadAdapterDelegate(executor, adapter, + mDataShareAdapterResourceManager); try { callback.accept(delegate); @@ -653,16 +659,17 @@ public abstract class ContentCaptureService extends Service { private static class DataShareReadAdapterDelegate extends IDataShareReadAdapter.Stub { + private final WeakReference<LocalDataShareAdapterResourceManager> mResourceManagerReference; private final Object mLock = new Object(); - private final WeakReference<DataShareReadAdapter> mAdapterReference; - private final WeakReference<Executor> mExecutorReference; - DataShareReadAdapterDelegate(Executor executor, DataShareReadAdapter adapter) { + DataShareReadAdapterDelegate(Executor executor, DataShareReadAdapter adapter, + LocalDataShareAdapterResourceManager resourceManager) { Preconditions.checkNotNull(executor); Preconditions.checkNotNull(adapter); + Preconditions.checkNotNull(resourceManager); - mExecutorReference = new WeakReference<>(executor); - mAdapterReference = new WeakReference<>(adapter); + resourceManager.initializeForDelegate(this, adapter, executor); + mResourceManagerReference = new WeakReference<>(resourceManager); } @Override @@ -670,6 +677,10 @@ public abstract class ContentCaptureService extends Service { throws RemoteException { synchronized (mLock) { executeAdapterMethodLocked(adapter -> adapter.onStart(fd), "onStart"); + + // Client app and Service successfully connected, so this object would be kept alive + // until the session has finished. + clearHardReferences(); } } @@ -678,16 +689,23 @@ public abstract class ContentCaptureService extends Service { synchronized (mLock) { executeAdapterMethodLocked( adapter -> adapter.onError(errorCode), "onError"); + clearHardReferences(); } } private void executeAdapterMethodLocked(Consumer<DataShareReadAdapter> adapterFn, String methodName) { - DataShareReadAdapter adapter = mAdapterReference.get(); - Executor executor = mExecutorReference.get(); + LocalDataShareAdapterResourceManager resourceManager = mResourceManagerReference.get(); + if (resourceManager == null) { + Slog.w(TAG, "Can't execute " + methodName + "(), resource manager has been GC'ed"); + return; + } + + DataShareReadAdapter adapter = resourceManager.getAdapter(this); + Executor executor = resourceManager.getExecutor(this); if (adapter == null || executor == null) { - Slog.w(TAG, "Can't execute " + methodName + "(), references have been GC'ed"); + Slog.w(TAG, "Can't execute " + methodName + "(), references are null"); return; } @@ -698,5 +716,51 @@ public abstract class ContentCaptureService extends Service { Binder.restoreCallingIdentity(identity); } } + + private void clearHardReferences() { + LocalDataShareAdapterResourceManager resourceManager = mResourceManagerReference.get(); + if (resourceManager == null) { + Slog.w(TAG, "Can't clear references, resource manager has been GC'ed"); + return; + } + + resourceManager.clearHardReferences(this); + } + } + + /** + * Wrapper class making sure dependencies on the current application stay in the application + * context. + */ + private static class LocalDataShareAdapterResourceManager { + + // Keeping hard references to the remote objects in the current process (static context) + // to prevent them to be gc'ed during the lifetime of the application. This is an + // artifact of only operating with weak references remotely: there has to be at least 1 + // hard reference in order for this to not be killed. + private Map<DataShareReadAdapterDelegate, DataShareReadAdapter> + mDataShareReadAdapterHardReferences = new HashMap<>(); + private Map<DataShareReadAdapterDelegate, Executor> mExecutorHardReferences = + new HashMap<>(); + + + void initializeForDelegate(DataShareReadAdapterDelegate delegate, + DataShareReadAdapter adapter, Executor executor) { + mDataShareReadAdapterHardReferences.put(delegate, adapter); + mExecutorHardReferences.remove(delegate, executor); + } + + Executor getExecutor(DataShareReadAdapterDelegate delegate) { + return mExecutorHardReferences.get(delegate); + } + + DataShareReadAdapter getAdapter(DataShareReadAdapterDelegate delegate) { + return mDataShareReadAdapterHardReferences.get(delegate); + } + + void clearHardReferences(DataShareReadAdapterDelegate delegate) { + mDataShareReadAdapterHardReferences.remove(delegate); + mExecutorHardReferences.remove(delegate); + } } } diff --git a/core/java/android/service/controls/ControlsProviderService.java b/core/java/android/service/controls/ControlsProviderService.java index 9accf5b0abf5..4262c4022131 100644 --- a/core/java/android/service/controls/ControlsProviderService.java +++ b/core/java/android/service/controls/ControlsProviderService.java @@ -304,12 +304,11 @@ public abstract class ControlsProviderService extends Service { Preconditions.checkNotNull(context); Preconditions.checkNotNull(componentName); Preconditions.checkNotNull(control); - final ComponentName sysuiComponent = ComponentName.unflattenFromString( - context.getResources().getString( - com.android.internal.R.string.config_systemUIServiceComponent)); + final String controlsPackage = context.getString( + com.android.internal.R.string.config_controlsPackage); Intent intent = new Intent(ACTION_ADD_CONTROL); intent.putExtra(Intent.EXTRA_COMPONENT_NAME, componentName); - intent.setPackage(sysuiComponent.getPackageName()); + intent.setPackage(controlsPackage); if (isStatelessControl(control)) { intent.putExtra(EXTRA_CONTROL, control); } else { diff --git a/core/java/android/service/controls/actions/ControlAction.java b/core/java/android/service/controls/actions/ControlAction.java index 37a75f0e9e5a..10f526d6565c 100644 --- a/core/java/android/service/controls/actions/ControlAction.java +++ b/core/java/android/service/controls/actions/ControlAction.java @@ -136,7 +136,8 @@ public abstract class ControlAction { /** * Response code for the {@code consumer} in * {@link ControlsProviderService#performControlAction} indicating that in order for the action - * to be performed, acknowledgment from the user is required. + * to be performed, acknowledgment from the user is required. Any non-empty string returned + * from {@link #getChallengeValue} shall be treated as a positive acknowledgment. */ public static final @ResponseResult int RESPONSE_CHALLENGE_ACK = 3; /** diff --git a/core/java/android/service/dataloader/DataLoaderService.java b/core/java/android/service/dataloader/DataLoaderService.java index 0170726b31d6..c047dc0d07c7 100644 --- a/core/java/android/service/dataloader/DataLoaderService.java +++ b/core/java/android/service/dataloader/DataLoaderService.java @@ -29,7 +29,6 @@ import android.content.pm.IDataLoader; import android.content.pm.IDataLoaderStatusListener; import android.content.pm.InstallationFile; import android.content.pm.InstallationFileParcel; -import android.content.pm.NamedParcelFileDescriptor; import android.os.IBinder; import android.os.ParcelFileDescriptor; import android.util.ExceptionUtils; @@ -133,16 +132,6 @@ public abstract class DataLoaderService extends Service { } } } - if (params.dynamicArgs != null) { - NamedParcelFileDescriptor[] fds = params.dynamicArgs; - for (NamedParcelFileDescriptor nfd : fds) { - try { - nfd.fd.close(); - } catch (IOException e) { - Slog.e(TAG, "Failed to close DynamicArgs parcel file descriptor " + e); - } - } - } } } diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java index e70311fb9429..c9be1c1fabb2 100644 --- a/core/java/android/service/dreams/DreamService.java +++ b/core/java/android/service/dreams/DreamService.java @@ -15,8 +15,6 @@ */ package android.service.dreams; -import static android.view.WindowManager.LayoutParams.TYPE_DREAM; - import android.annotation.IdRes; import android.annotation.LayoutRes; import android.annotation.NonNull; @@ -1071,7 +1069,6 @@ public class DreamService extends Service implements Window.Callback { private void onWindowCreated(Window w) { mWindow = w; mWindow.setCallback(this); - mWindow.setType(TYPE_DREAM); mWindow.requestFeature(Window.FEATURE_NO_TITLE); WindowManager.LayoutParams lp = mWindow.getAttributes(); diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java index f8265d6366ab..97cd7608f876 100644 --- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java +++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java @@ -487,7 +487,7 @@ public class AlwaysOnHotwordDetector { ModuleProperties properties = mModelManagementService.getDspModuleProperties(); if (properties != null) { - return properties.audioCapabilities; + return properties.getAudioCapabilities(); } return 0; diff --git a/core/java/android/telephony/PhoneStateListener.java b/core/java/android/telephony/PhoneStateListener.java index f6d56eed0fb3..c36a33f7a53d 100644 --- a/core/java/android/telephony/PhoneStateListener.java +++ b/core/java/android/telephony/PhoneStateListener.java @@ -21,6 +21,7 @@ import android.annotation.NonNull; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.TestApi; +import android.compat.annotation.ChangeId; import android.compat.annotation.UnsupportedAppUsage; import android.os.Binder; import android.os.Build; @@ -65,6 +66,43 @@ public class PhoneStateListener { private static final boolean DBG = false; // STOPSHIP if true /** + * Experiment flag to set the per-pid registration limit for PhoneStateListeners + * + * Limit on registrations of {@link PhoneStateListener}s on a per-pid + * basis. When this limit is exceeded, any calls to {@link TelephonyManager#listen} will fail + * with an {@link IllegalStateException}. + * + * {@link android.os.Process#PHONE_UID}, {@link android.os.Process#SYSTEM_UID}, and the uid that + * TelephonyRegistry runs under are exempt from this limit. + * + * If the value of the flag is less than 1, enforcement of the limit will be disabled. + * @hide + */ + public static final String FLAG_PER_PID_REGISTRATION_LIMIT = + "phone_state_listener_per_pid_registration_limit"; + + /** + * Default value for the per-pid registation limit. + * See {@link #FLAG_PER_PID_REGISTRATION_LIMIT}. + * @hide + */ + public static final int DEFAULT_PER_PID_REGISTRATION_LIMIT = 50; + + /** + * This change enables a limit on the number of {@link PhoneStateListener} objects any process + * may register via {@link TelephonyManager#listen}. The default limit is 50, which may change + * via remote device config updates. + * + * This limit is enforced via an {@link IllegalStateException} thrown from + * {@link TelephonyManager#listen} when the offending process attempts to register one too many + * listeners. + * + * @hide + */ + @ChangeId + public static final long PHONE_STATE_LISTENER_LIMIT_CHANGE_ID = 150880553L; + + /** * Stop listening for updates. * * The PhoneStateListener is not tied to any subscription and unregistered for any update. diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java index dffcafe1de0e..0ccb1e055c46 100644 --- a/core/java/android/view/Display.java +++ b/core/java/android/view/Display.java @@ -57,8 +57,8 @@ import java.util.List; * <li>The application display area specifies the part of the display that may contain * an application window, excluding the system decorations. The application display area may * be smaller than the real display area because the system subtracts the space needed - * for decor elements such as the status bar. Use {@link WindowMetrics#getSize()} to query the - * application window size.</li> + * for decor elements such as the status bar. Use {@link WindowMetrics#getBounds()} to query the + * application window bounds.</li> * <li>The real display area specifies the part of the display that contains content * including the system decorations. Even so, the real display area may be smaller than the * physical size of the display if the window manager is emulating a smaller display @@ -673,7 +673,7 @@ public final class Display { * * @param outSize A {@link Point} object to receive the size information. * @deprecated Use {@link WindowManager#getCurrentWindowMetrics()} to obtain an instance of - * {@link WindowMetrics} and use {@link WindowMetrics#getSize()} instead. + * {@link WindowMetrics} and use {@link WindowMetrics#getBounds()} instead. */ @Deprecated public void getSize(Point outSize) { @@ -689,7 +689,7 @@ public final class Display { * Gets the size of the display as a rectangle, in pixels. * * @param outSize A {@link Rect} object to receive the size information. - * @deprecated Use {@link WindowMetrics#getSize()} to get the dimensions of the application + * @deprecated Use {@link WindowMetrics#getBounds()} to get the dimensions of the application * window area. */ @Deprecated @@ -755,7 +755,7 @@ public final class Display { } /** - * @deprecated Use {@link WindowMetrics#getSize()} instead. + * @deprecated Use {@link WindowMetrics#getBounds#width()} instead. */ @Deprecated public int getWidth() { @@ -766,7 +766,7 @@ public final class Display { } /** - * @deprecated Use {@link WindowMetrics#getSize()} instead. + * @deprecated Use {@link WindowMetrics#getBounds()#height()} instead. */ @Deprecated public int getHeight() { @@ -1105,7 +1105,7 @@ public final class Display { * </p> * * @param outMetrics A {@link DisplayMetrics} object to receive the metrics. - * @deprecated Use {@link WindowMetrics#getSize()} to get the dimensions of the application + * @deprecated Use {@link WindowMetrics#getBounds()} to get the dimensions of the application * window area, and {@link Configuration#densityDpi} to get the current density. */ @Deprecated diff --git a/core/java/android/view/IPinnedStackListener.aidl b/core/java/android/view/IPinnedStackListener.aidl index 596d55aebc6d..071c2593f522 100644 --- a/core/java/android/view/IPinnedStackListener.aidl +++ b/core/java/android/view/IPinnedStackListener.aidl @@ -60,20 +60,12 @@ oneway interface IPinnedStackListener { void onActionsChanged(in ParceledListSlice actions); /** - * Called by the window manager to notify the listener to save the reentry fraction and size, - * typically when an Activity leaves PiP (picture-in-picture) mode to fullscreen. - * {@param componentName} represents the application component of PiP window - * while {@param bounds} is the current PiP bounds used to calculate the - * reentry snap fraction and size. - */ - void onSaveReentryBounds(in ComponentName componentName, in Rect bounds); - - /** - * Called by the window manager to notify the listener to reset saved reentry fraction and size, - * typically when an Activity enters PiP (picture-in-picture) mode from fullscreen. + * Called by the window manager to notify the listener that Activity (was or is in pinned mode) + * is hidden (either stopped or removed). This is generally used as a signal to reset saved + * reentry fraction and size. * {@param componentName} represents the application component of PiP window. */ - void onResetReentryBounds(in ComponentName componentName); + void onActivityHidden(in ComponentName componentName); /** * Called when the window manager has detected change on DisplayInfo, or diff --git a/core/java/android/view/InsetsAnimationControlImpl.java b/core/java/android/view/InsetsAnimationControlImpl.java index 07b6cc1c22d2..94ca550b0e76 100644 --- a/core/java/android/view/InsetsAnimationControlImpl.java +++ b/core/java/android/view/InsetsAnimationControlImpl.java @@ -23,6 +23,8 @@ import static android.view.InsetsState.ISIDE_LEFT; import static android.view.InsetsState.ISIDE_RIGHT; import static android.view.InsetsState.ISIDE_TOP; +import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE; + import android.annotation.Nullable; import android.graphics.Insets; import android.graphics.Matrix; @@ -76,6 +78,8 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll private boolean mShownOnFinish; private float mCurrentAlpha = 1.0f; private float mPendingAlpha = 1.0f; + @VisibleForTesting(visibility = PACKAGE) + public boolean mReadyDispatched; @VisibleForTesting public InsetsAnimationControlImpl(SparseArray<InsetsSourceControl> controls, Rect frame, @@ -214,7 +218,7 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll return; } mCancelled = true; - mListener.onCancelled(this); + mListener.onCancelled(mReadyDispatched ? this : null); releaseLeashes(); } diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java index e6bd84391fef..8eb9b5f6ef23 100644 --- a/core/java/android/view/InsetsController.java +++ b/core/java/android/view/InsetsController.java @@ -16,8 +16,8 @@ package android.view; +import static android.view.InsetsState.ITYPE_CAPTION_BAR; import static android.view.InsetsState.ITYPE_IME; -import static android.view.InsetsState.toInternalType; import static android.view.InsetsState.toPublicType; import static android.view.WindowInsets.Type.all; import static android.view.WindowInsets.Type.ime; @@ -367,6 +367,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation private int mLastLegacySystemUiFlags; private DisplayCutout mLastDisplayCutout; private boolean mStartingAnimation; + private int mCaptionInsetsHeight = 0; private SyncRtSurfaceTransactionApplier mApplier; @@ -454,40 +455,49 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation return mState; } + @Override + public boolean isRequestedVisible(int type) { + return getSourceConsumer(type).isRequestedVisible(); + } + public InsetsState getLastDispatchedState() { return mLastDispachedState; } @VisibleForTesting public boolean onStateChanged(InsetsState state) { - boolean localStateChanged = !mState.equals(state); + boolean localStateChanged = !mState.equals(state, true /* excludingCaptionInsets */) + || !captionInsetsUnchanged(); if (!localStateChanged && mLastDispachedState.equals(state)) { return false; } - updateState(state); + mState.set(state); mLastDispachedState.set(state, true /* copySources */); applyLocalVisibilityOverride(); if (localStateChanged) { mViewRoot.notifyInsetsChanged(); } - if (!mState.equals(mLastDispachedState)) { + if (!mState.equals(mLastDispachedState, true /* excludingCaptionInsets */)) { sendStateToWindowManager(); } + if (mCaptionInsetsHeight != 0) { + mState.getSource(ITYPE_CAPTION_BAR).setFrame(new Rect(mFrame.left, mFrame.top, + mFrame.right, mFrame.top + mCaptionInsetsHeight)); + } return true; } - private void updateState(InsetsState newState) { - mState.setDisplayFrame(newState.getDisplayFrame()); - for (int i = newState.getSourcesCount() - 1; i >= 0; i--) { - InsetsSource source = newState.sourceAt(i); - getSourceConsumer(source.getType()).updateSource(source); + private boolean captionInsetsUnchanged() { + if (mState.peekSource(ITYPE_CAPTION_BAR) == null + && mCaptionInsetsHeight == 0) { + return true; } - for (int i = mState.getSourcesCount() - 1; i >= 0; i--) { - InsetsSource source = mState.sourceAt(i); - if (newState.peekSource(source.getType()) == null) { - mState.removeSource(source.getType()); - } + if (mState.peekSource(ITYPE_CAPTION_BAR) != null + && mCaptionInsetsHeight + == mState.peekSource(ITYPE_CAPTION_BAR).getFrame().height()) { + return true; } + return false; } /** @@ -869,15 +879,8 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation control.cancel(); } for (int i = mRunningAnimations.size() - 1; i >= 0; i--) { - RunningAnimation runningAnimation = mRunningAnimations.get(i); - if (runningAnimation.runner == control) { + if (mRunningAnimations.get(i).runner == control) { mRunningAnimations.remove(i); - ArraySet<Integer> types = toInternalType(control.getTypes()); - for (int j = types.size() - 1; j >= 0; j--) { - if (getSourceConsumer(types.valueAt(j)).notifyAnimationFinished()) { - mViewRoot.notifyInsetsChanged(); - } - } break; } } @@ -964,6 +967,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation InsetsState tmpState = new InsetsState(); for (int i = mSourceConsumers.size() - 1; i >= 0; i--) { final InsetsSourceConsumer consumer = mSourceConsumers.valueAt(i); + if (consumer.getType() == ITYPE_CAPTION_BAR) continue; if (consumer.getControl() != null) { tmpState.addSource(mState.getSource(consumer.getType())); } @@ -1056,6 +1060,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } mViewRoot.mView.dispatchWindowInsetsAnimationStart(animation, bounds); mStartingAnimation = true; + controller.mReadyDispatched = true; listener.onReady(controller, types); mStartingAnimation = false; return true; @@ -1105,6 +1110,11 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } @Override + public void setCaptionInsetsHeight(int height) { + mCaptionInsetsHeight = height; + } + + @Override public void setSystemBarsBehavior(@Behavior int behavior) { mViewRoot.mWindowAttributes.privateFlags |= PRIVATE_FLAG_BEHAVIOR_CONTROLLED; if (mViewRoot.mWindowAttributes.insetsFlags.behavior != behavior) { diff --git a/core/java/android/view/InsetsSource.java b/core/java/android/view/InsetsSource.java index 294faaf0b5c8..033ccef3666d 100644 --- a/core/java/android/view/InsetsSource.java +++ b/core/java/android/view/InsetsSource.java @@ -16,6 +16,7 @@ package android.view; +import static android.view.InsetsState.ITYPE_CAPTION_BAR; import static android.view.InsetsState.ITYPE_IME; import android.annotation.NonNull; @@ -118,6 +119,12 @@ public class InsetsSource implements Parcelable { if (!getIntersection(frame, relativeFrame, mTmpFrame)) { return Insets.NONE; } + // During drag-move and drag-resizing, the caption insets position may not get updated + // before the app frame get updated. To layout the app content correctly during drag events, + // we always return the insets with the corresponding height covering the top. + if (getType() == ITYPE_CAPTION_BAR) { + return Insets.of(0, frame.height(), 0, 0); + } // TODO: Currently, non-floating IME always intersects at bottom due to issues with cutout. // However, we should let the policy decide from the server. diff --git a/core/java/android/view/InsetsSourceConsumer.java b/core/java/android/view/InsetsSourceConsumer.java index f36621c0a49e..83ff8fa42f49 100644 --- a/core/java/android/view/InsetsSourceConsumer.java +++ b/core/java/android/view/InsetsSourceConsumer.java @@ -16,13 +16,11 @@ package android.view; -import static android.view.InsetsController.ANIMATION_TYPE_NONE; import static android.view.InsetsController.AnimationType; import static android.view.InsetsState.toPublicType; import android.annotation.IntDef; import android.annotation.Nullable; -import android.graphics.Rect; import android.view.InsetsState.InternalInsetsType; import android.view.SurfaceControl.Transaction; import android.view.WindowInsets.Type.InsetsType; @@ -66,8 +64,6 @@ public class InsetsSourceConsumer { private final Supplier<Transaction> mTransactionSupplier; private @Nullable InsetsSourceControl mSourceControl; private boolean mHasWindowFocus; - private Rect mPendingFrame; - private Rect mPendingVisibleFrame; public InsetsSourceConsumer(@InternalInsetsType int type, InsetsState state, Supplier<Transaction> transactionSupplier, InsetsController controller) { @@ -112,12 +108,12 @@ public class InsetsSourceConsumer { hideTypes[0] |= toPublicType(getType()); } } else { - // We are gaining control, but don't need to run an animation. - // However make sure that the leash visibility is still up to date. - if (applyLocalVisibilityOverride()) { - mController.notifyVisibilityChanged(); - } - applyHiddenToControl(); + // We are gaining control, but don't need to run an animation. + // However make sure that the leash visibility is still up to date. + if (applyLocalVisibilityOverride()) { + mController.notifyVisibilityChanged(); + applyHiddenToControl(); + } } } if (lastControl != null) { @@ -219,38 +215,6 @@ public class InsetsSourceConsumer { // no-op for types that always return ShowResult#SHOW_IMMEDIATELY. } - void updateSource(InsetsSource newSource) { - InsetsSource source = mState.peekSource(mType); - if (source == null || mController.getAnimationType(mType) == ANIMATION_TYPE_NONE - || source.getFrame().equals(newSource.getFrame())) { - mState.addSource(newSource); - return; - } - - // Frame is changing while animating. Keep note of the new frame but keep existing frame - // until animaition is finished. - newSource = new InsetsSource(newSource); - mPendingFrame = new Rect(newSource.getFrame()); - mPendingVisibleFrame = newSource.getVisibleFrame() != null - ? new Rect(newSource.getVisibleFrame()) - : null; - newSource.setFrame(source.getFrame()); - newSource.setVisibleFrame(source.getVisibleFrame()); - mState.addSource(newSource); - } - - boolean notifyAnimationFinished() { - if (mPendingFrame != null) { - InsetsSource source = mState.getSource(mType); - source.setFrame(mPendingFrame); - source.setVisibleFrame(mPendingVisibleFrame); - mPendingFrame = null; - mPendingVisibleFrame = null; - return true; - } - return false; - } - /** * Sets requested visibility from the client, regardless of whether we are able to control it at * the moment. diff --git a/core/java/android/view/InsetsState.java b/core/java/android/view/InsetsState.java index 40e6f57f2286..c5154662928e 100644 --- a/core/java/android/view/InsetsState.java +++ b/core/java/android/view/InsetsState.java @@ -45,6 +45,8 @@ import android.view.WindowInsets.Type; import android.view.WindowInsets.Type.InsetsType; import android.view.WindowManager.LayoutParams.SoftInputModeFlags; +import com.android.internal.annotations.VisibleForTesting; + import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -498,6 +500,19 @@ public class InsetsState implements Parcelable { @Override public boolean equals(Object o) { + return equals(o, false); + } + + /** + * An equals method can exclude the caption insets. This is useful because we assemble the + * caption insets information on the client side, and when we communicate with server, it's + * excluded. + * @param excludingCaptionInsets {@code true} if we want to compare two InsetsState objects but + * ignore the caption insets source value. + * @return {@code true} if the two InsetsState objects are equal, {@code false} otherwise. + */ + @VisibleForTesting + public boolean equals(Object o, boolean excludingCaptionInsets) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } @@ -506,11 +521,24 @@ public class InsetsState implements Parcelable { if (!mDisplayFrame.equals(state.mDisplayFrame)) { return false; } - if (mSources.size() != state.mSources.size()) { + int size = mSources.size(); + int otherSize = state.mSources.size(); + if (excludingCaptionInsets) { + if (mSources.get(ITYPE_CAPTION_BAR) != null) { + size--; + } + if (state.mSources.get(ITYPE_CAPTION_BAR) != null) { + otherSize--; + } + } + if (size != otherSize) { return false; } for (int i = mSources.size() - 1; i >= 0; i--) { InsetsSource source = mSources.valueAt(i); + if (excludingCaptionInsets) { + if (source.getType() == ITYPE_CAPTION_BAR) continue; + } InsetsSource otherSource = state.mSources.get(source.getType()); if (otherSource == null) { return false; diff --git a/core/java/android/view/PendingInsetsController.java b/core/java/android/view/PendingInsetsController.java index 229ee03521bc..0283ada0dd40 100644 --- a/core/java/android/view/PendingInsetsController.java +++ b/core/java/android/view/PendingInsetsController.java @@ -42,6 +42,7 @@ public class PendingInsetsController implements WindowInsetsController { private InsetsController mReplayedInsetsController; private ArrayList<OnControllableInsetsChangedListener> mControllableInsetsChangedListeners = new ArrayList<>(); + private int mCaptionInsetsHeight = 0; @Override public void show(int types) { @@ -80,6 +81,11 @@ public class PendingInsetsController implements WindowInsetsController { } @Override + public void setCaptionInsetsHeight(int height) { + mCaptionInsetsHeight = height; + } + + @Override public void setSystemBarsBehavior(int behavior) { if (mReplayedInsetsController != null) { mReplayedInsetsController.setSystemBarsBehavior(behavior); @@ -102,6 +108,14 @@ public class PendingInsetsController implements WindowInsetsController { } @Override + public boolean isRequestedVisible(int type) { + + // Method is only used once real insets controller is attached, so no need to traverse + // requests here. + return InsetsState.getDefaultVisibility(type); + } + + @Override public void addOnControllableInsetsChangedListener( OnControllableInsetsChangedListener listener) { if (mReplayedInsetsController != null) { @@ -134,6 +148,9 @@ public class PendingInsetsController implements WindowInsetsController { if (mAppearanceMask != 0) { controller.setSystemBarsAppearance(mAppearance, mAppearanceMask); } + if (mCaptionInsetsHeight != 0) { + controller.setCaptionInsetsHeight(mCaptionInsetsHeight); + } int size = mRequests.size(); for (int i = 0; i < size; i++) { mRequests.get(i).replay(controller); diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java index 13d6dd67bb19..d12ca73599f3 100644 --- a/core/java/android/view/Surface.java +++ b/core/java/android/view/Surface.java @@ -871,24 +871,24 @@ public class Surface implements Parcelable { /** * Sets the intended frame rate for this surface. * - * On devices that are capable of running the display at different refresh rates, the - * system may choose a display refresh rate to better match this surface's frame + * <p>On devices that are capable of running the display at different refresh rates, + * the system may choose a display refresh rate to better match this surface's frame * rate. Usage of this API won't introduce frame rate throttling, or affect other * aspects of the application's frame production pipeline. However, because the system * may change the display refresh rate, calls to this function may result in changes * to Choreographer callback timings, and changes to the time interval at which the - * system releases buffers back to the application. + * system releases buffers back to the application.</p> * - * Note that this only has an effect for surfaces presented on the display. If this + * <p>Note that this only has an effect for surfaces presented on the display. If this * surface is consumed by something other than the system compositor, e.g. a media - * codec, this call has no effect. + * codec, this call has no effect.</p> * * @param frameRate The intended frame rate of this surface, in frames per second. 0 * is a special value that indicates the app will accept the system's choice for the * display frame rate, which is the default behavior if this function isn't - * called. The frameRate param does *not* need to be a valid refresh rate for this - * device's display - e.g., it's fine to pass 30fps to a device that can only run the - * display at 60fps. + * called. The frameRate param does <em>not</em> need to be a valid refresh rate for + * this device's display - e.g., it's fine to pass 30fps to a device that can only run + * the display at 60fps. * * @param compatibility The frame rate compatibility of this surface. The * compatibility value may influence the system's choice of display frame rate. See diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index c87808b113f6..a37c1cbc76ad 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -2738,7 +2738,7 @@ public final class SurfaceControl implements Parcelable { /** * Sets the intended frame rate for the surface {@link SurfaceControl}. - * + * <p> * On devices that are capable of running the display at different refresh rates, the system * may choose a display refresh rate to better match this surface's frame rate. Usage of * this API won't directly affect the application's frame production pipeline. However, @@ -2750,9 +2750,9 @@ public final class SurfaceControl implements Parcelable { * @param frameRate The intended frame rate for this surface, in frames per second. 0 is a * special value that indicates the app will accept the system's choice for * the display frame rate, which is the default behavior if this function - * isn't called. The frameRate param does *not* need to be a valid refresh - * rate for this device's display - e.g., it's fine to pass 30fps to a - * device that can only run the display at 60fps. + * isn't called. The frameRate param does <em>not</em> need to be a valid + * refresh rate for this device's display - e.g., it's fine to pass 30fps + * to a device that can only run the display at 60fps. * @param compatibility The frame rate compatibility of this surface. The compatibility * value may influence the system's choice of display frame rate. See * the Surface.FRAME_RATE_COMPATIBILITY_* values for more info. diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index d69357bc503d..da186087a34a 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -3475,7 +3475,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, /** * Flag indicating the field should not have yellow highlight when autofilled. */ - private static final int PFLAG4_AUTOFILL_HIDE_HIGHLIGHT = 0x100; + private static final int PFLAG4_AUTOFILL_HIDE_HIGHLIGHT = 0x200; /* End of masks for mPrivateFlags4 */ @@ -28768,6 +28768,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, publicAlternatives = "Use {@link WindowInsets#getInsets(int)}") final Rect mStableInsets = new Rect(); + /** + * Current caption insets to the display coordinate. + */ + final Rect mCaptionInsets = new Rect(); + final DisplayCutout.ParcelableWrapper mDisplayCutout = new DisplayCutout.ParcelableWrapper(DisplayCutout.NO_CUTOUT); diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java index 04260c47eda3..69d37ab91a1c 100644 --- a/core/java/android/view/ViewConfiguration.java +++ b/core/java/android/view/ViewConfiguration.java @@ -16,18 +16,24 @@ package android.view; +import static android.os.StrictMode.vmIncorrectContextUseEnabled; + import android.annotation.FloatRange; import android.annotation.TestApi; +import android.app.Activity; import android.app.AppGlobals; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; +import android.graphics.Rect; import android.os.Build; +import android.os.Bundle; import android.os.RemoteException; +import android.os.StrictMode; import android.provider.Settings; import android.util.DisplayMetrics; -import android.util.Size; +import android.util.Log; import android.util.SparseArray; import android.util.TypedValue; @@ -35,6 +41,8 @@ import android.util.TypedValue; * Contains methods to standard constants used in the UI for timeouts, sizes, and distances. */ public class ViewConfiguration { + private static final String TAG = "ViewConfiguration"; + /** * Defines the width of the horizontal scrollbar and the height of the vertical scrollbar in * dips @@ -372,11 +380,13 @@ public class ViewConfiguration { } /** - * Creates a new configuration for the specified context. The configuration depends on - * various parameters of the context, like the dimension of the display or the density - * of the display. + * Creates a new configuration for the specified visual {@link Context}. The configuration + * depends on various parameters of the {@link Context}, like the dimension of the display or + * the density of the display. * - * @param context The application context used to initialize this view configuration. + * @param context A visual {@link Context} used to initialize the view configuration. It must + * be {@link Activity} or other {@link Context} created with + * {@link Context#createWindowContext(int, Bundle)}. * * @see #get(android.content.Context) * @see android.util.DisplayMetrics @@ -410,8 +420,8 @@ public class ViewConfiguration { // Size of the screen in bytes, in ARGB_8888 format final WindowManager windowManager = context.getSystemService(WindowManager.class); - final Size maxWindowSize = windowManager.getMaximumWindowMetrics().getSize(); - mMaximumDrawingCacheSize = 4 * maxWindowSize.getWidth() * maxWindowSize.getHeight(); + final Rect maxWindowBounds = windowManager.getMaximumWindowMetrics().getBounds(); + mMaximumDrawingCacheSize = 4 * maxWindowBounds.width() * maxWindowBounds.height(); mOverscrollDistance = (int) (sizeAndDensity * OVERSCROLL_DISTANCE + 0.5f); mOverflingDistance = (int) (sizeAndDensity * OVERFLING_DISTANCE + 0.5f); @@ -480,13 +490,27 @@ public class ViewConfiguration { } /** - * Returns a configuration for the specified context. The configuration depends on - * various parameters of the context, like the dimension of the display or the + * Returns a configuration for the specified visual {@link Context}. The configuration depends + * on various parameters of the {@link Context}, like the dimension of the display or the * density of the display. * - * @param context The application context used to initialize the view configuration. + * @param context A visual {@link Context} used to initialize the view configuration. It must + * be {@link Activity} or other {@link Context} created with + * {@link Context#createWindowContext(int, Bundle)}. */ public static ViewConfiguration get(Context context) { + if (!context.isUiContext() && vmIncorrectContextUseEnabled()) { + final String errorMessage = "Tried to access UI constants from a non-visual Context."; + final String message = "UI constants, such as display metrics or window metrics, " + + "must be accessed from Activity or other visual Context. " + + "Use an Activity or a Context created with " + + "Context#createWindowContext(int, Bundle), which are adjusted to the " + + "configuration and visual bounds of an area on screen."; + final Exception exception = new IllegalArgumentException(errorMessage); + StrictMode.onIncorrectContextUsed(message, exception); + Log.e(TAG, errorMessage + message, exception); + } + final DisplayMetrics metrics = context.getResources().getDisplayMetrics(); final int density = (int) (100.0f * metrics.density); diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 50202aed36d2..51304dcfe8cb 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -158,6 +158,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.IResultReceiver; import com.android.internal.os.SomeArgs; +import com.android.internal.policy.DecorView; import com.android.internal.policy.PhoneFallbackEventHandler; import com.android.internal.util.Preconditions; import com.android.internal.view.BaseSurfaceHolder; @@ -2221,6 +2222,19 @@ public final class ViewRootImpl implements ViewParent, Trace.traceEnd(Trace.TRACE_TAG_VIEW); } + private boolean updateCaptionInsets() { + if (!(mView instanceof DecorView)) return false; + final int captionInsetsHeight = ((DecorView) mView).getCaptionInsetsHeight(); + final Rect captionFrame = new Rect(); + if (captionInsetsHeight != 0) { + captionFrame.set(mWinFrame.left, mWinFrame.top, mWinFrame.right, + mWinFrame.top + captionInsetsHeight); + } + if (mAttachInfo.mCaptionInsets.equals(captionFrame)) return false; + mAttachInfo.mCaptionInsets.set(captionFrame); + return true; + } + private boolean shouldDispatchCutout() { return mWindowAttributes.layoutInDisplayCutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS @@ -2592,6 +2606,9 @@ public final class ViewRootImpl implements ViewParent, mAttachInfo.mAlwaysConsumeSystemBars = mPendingAlwaysConsumeSystemBars; dispatchApplyInsets = true; } + if (updateCaptionInsets()) { + dispatchApplyInsets = true; + } if (dispatchApplyInsets || mLastSystemUiVisibility != mAttachInfo.mSystemUiVisibility || mApplyInsetsRequested) { mLastSystemUiVisibility = mAttachInfo.mSystemUiVisibility; diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java index 0c5c18316e61..ae9afabad533 100644 --- a/core/java/android/view/Window.java +++ b/core/java/android/view/Window.java @@ -49,9 +49,6 @@ import android.transition.Transition; import android.transition.TransitionManager; import android.util.Pair; import android.view.View.OnApplyWindowInsetsListener; -import android.view.ViewGroup.LayoutParams; -import android.view.WindowInsets.Side.InsetsSide; -import android.view.WindowInsets.Type.InsetsType; import android.view.accessibility.AccessibilityEvent; import java.util.Collections; @@ -323,7 +320,7 @@ public abstract class Window { @UnsupportedAppUsage private boolean mDestroyed; - private boolean mOverlayWithDecorCaptionEnabled = false; + private boolean mOverlayWithDecorCaptionEnabled = true; private boolean mCloseOnSwipeEnabled = false; // The current window attributes. diff --git a/core/java/android/view/WindowInsets.java b/core/java/android/view/WindowInsets.java index fde184ccfb0e..9b2a6cbce48f 100644 --- a/core/java/android/view/WindowInsets.java +++ b/core/java/android/view/WindowInsets.java @@ -17,6 +17,7 @@ package android.view; +import static android.view.WindowInsets.Type.CAPTION_BAR; import static android.view.WindowInsets.Type.DISPLAY_CUTOUT; import static android.view.WindowInsets.Type.FIRST; import static android.view.WindowInsets.Type.IME; diff --git a/core/java/android/view/WindowInsetsAnimation.java b/core/java/android/view/WindowInsetsAnimation.java index e32648809f8f..cf5e7e3d3e26 100644 --- a/core/java/android/view/WindowInsetsAnimation.java +++ b/core/java/android/view/WindowInsetsAnimation.java @@ -110,14 +110,13 @@ public final class WindowInsetsAnimation { * and 1. * </p> * @see #getFraction() for raw fraction. - * @return The current interpolated progress of this animation. -1 if interpolator isn't - * specified. + * @return The current interpolated progress of this animation. */ public float getInterpolatedFraction() { if (mInterpolator != null) { return mInterpolator.getInterpolation(mFraction); } - return -1; + return mFraction; } /** diff --git a/core/java/android/view/WindowInsetsController.java b/core/java/android/view/WindowInsetsController.java index 0282ecac8920..3d348efc7f0f 100644 --- a/core/java/android/view/WindowInsetsController.java +++ b/core/java/android/view/WindowInsetsController.java @@ -22,6 +22,7 @@ import android.annotation.Nullable; import android.graphics.Insets; import android.inputmethodservice.InputMethodService; import android.os.CancellationSignal; +import android.view.InsetsState.InternalInsetsType; import android.view.WindowInsets.Type; import android.view.WindowInsets.Type.InsetsType; import android.view.animation.Interpolator; @@ -196,6 +197,15 @@ public interface WindowInsetsController { @Appearance int getSystemBarsAppearance(); /** + * Notify the caption insets height change. The information will be used on the client side to, + * make sure the InsetsState has the correct caption insets. + * + * @param height the height of caption bar insets. + * @hide + */ + void setCaptionInsetsHeight(int height); + + /** * Controls the behavior of system bars. * * @param behavior Determines how the bars behave when being hidden by the application. @@ -217,6 +227,13 @@ public interface WindowInsetsController { InsetsState getState(); /** + * @return Whether the specified insets source is currently requested to be visible by the + * application. + * @hide + */ + boolean isRequestedVisible(@InternalInsetsType int type); + + /** * Adds a {@link OnControllableInsetsChangedListener} to the window insets controller. * * @param listener The listener to add. diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index 77ce5c1b1ddc..cc380f32297e 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -781,8 +781,6 @@ public interface WindowManager extends ViewManager { to = "BOOT_PROGRESS"), @ViewDebug.IntToString(from = TYPE_INPUT_CONSUMER, to = "INPUT_CONSUMER"), - @ViewDebug.IntToString(from = TYPE_DREAM, - to = "DREAM"), @ViewDebug.IntToString(from = TYPE_NAVIGATION_BAR_PANEL, to = "NAVIGATION_BAR_PANEL"), @ViewDebug.IntToString(from = TYPE_DISPLAY_OVERLAY, @@ -1105,13 +1103,6 @@ public interface WindowManager extends ViewManager { public static final int TYPE_INPUT_CONSUMER = FIRST_SYSTEM_WINDOW+22; /** - * Window type: Dreams (screen saver) window, just above keyguard. - * In multiuser systems shows only on the owning user's window. - * @hide - */ - public static final int TYPE_DREAM = FIRST_SYSTEM_WINDOW+23; - - /** * Window type: Navigation bar panel (when navigation bar is distinct from status bar) * In multiuser systems shows on all users' windows. * @hide @@ -1180,8 +1171,9 @@ public interface WindowManager extends ViewManager { public static final int TYPE_QS_DIALOG = FIRST_SYSTEM_WINDOW+35; /** - * Window type: shares similar characteristics with {@link #TYPE_DREAM}. The layer is + * Window type: shows directly above the keyguard. The layer is * reserved for screenshot region selection. These windows must not take input focus. + * In multiuser systems shows only on the owning user's window. * @hide */ public static final int TYPE_SCREENSHOT = FIRST_SYSTEM_WINDOW + 36; diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java index 8bf1ade876ca..561ee604aa7f 100644 --- a/core/java/android/view/WindowManagerImpl.java +++ b/core/java/android/view/WindowManagerImpl.java @@ -35,8 +35,8 @@ import android.graphics.Region; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; -import android.util.Size; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.IResultReceiver; import java.util.List; @@ -70,7 +70,8 @@ import java.util.List; public final class WindowManagerImpl implements WindowManager { @UnsupportedAppUsage private final WindowManagerGlobal mGlobal = WindowManagerGlobal.getInstance(); - private final Context mContext; + @VisibleForTesting + public final Context mContext; private final Window mParentWindow; private IBinder mDefaultToken; @@ -220,7 +221,7 @@ public final class WindowManagerImpl implements WindowManager { final Context context = mParentWindow != null ? mParentWindow.getContext() : mContext; final Rect bounds = getCurrentBounds(context); - return new WindowMetrics(toSize(bounds), computeWindowInsets(bounds)); + return new WindowMetrics(bounds, computeWindowInsets(bounds)); } private static Rect getCurrentBounds(Context context) { @@ -232,11 +233,7 @@ public final class WindowManagerImpl implements WindowManager { @Override public WindowMetrics getMaximumWindowMetrics() { final Rect maxBounds = getMaximumBounds(); - return new WindowMetrics(toSize(maxBounds), computeWindowInsets(maxBounds)); - } - - private Size toSize(Rect frame) { - return new Size(frame.width(), frame.height()); + return new WindowMetrics(maxBounds, computeWindowInsets(maxBounds)); } private Rect getMaximumBounds() { diff --git a/core/java/android/view/WindowMetrics.java b/core/java/android/view/WindowMetrics.java index ab5a06eb99de..86ef87997a07 100644 --- a/core/java/android/view/WindowMetrics.java +++ b/core/java/android/view/WindowMetrics.java @@ -18,10 +18,10 @@ package android.view; import android.annotation.NonNull; import android.graphics.Point; -import android.util.Size; +import android.graphics.Rect; /** - * Metrics about a Window, consisting of the size and {@link WindowInsets}. + * Metrics about a Window, consisting of the bounds and {@link WindowInsets}. * <p> * This is usually obtained from {@link WindowManager#getCurrentWindowMetrics()} and * {@link WindowManager#getMaximumWindowMetrics()}. @@ -31,21 +31,22 @@ import android.util.Size; * @see WindowManager#getMaximumWindowMetrics() */ public final class WindowMetrics { - private final @NonNull Size mSize; + private final @NonNull Rect mBounds; private final @NonNull WindowInsets mWindowInsets; - public WindowMetrics(@NonNull Size size, @NonNull WindowInsets windowInsets) { - mSize = size; + public WindowMetrics(@NonNull Rect bounds, @NonNull WindowInsets windowInsets) { + mBounds = bounds; mWindowInsets = windowInsets; } /** - * Returns the size of the window. + * Returns the bounds of the area associated with this window or visual context. * <p> - * <b>Note that this reports a different size than {@link Display#getSize(Point)}.</b> - * This method reports the window size including all system bars area, while - * {@link Display#getSize(Point)} reports the area excluding navigation bars and display cutout - * areas. The value reported by {@link Display#getSize(Point)} can be obtained by using: + * <b>Note that the size of the reported bounds can have different size than + * {@link Display#getSize(Point)}.</b> This method reports the window size including all system + * bar areas, while {@link Display#getSize(Point)} reports the area excluding navigation bars + * and display cutout areas. The value reported by {@link Display#getSize(Point)} can be + * obtained by using: * <pre class="prettyprint"> * final WindowMetrics metrics = windowManager.getCurrentMetrics(); * // Gets all excluding insets @@ -66,16 +67,16 @@ public final class WindowMetrics { * </pre> * </p> * - * @return window size in pixel. + * @return window bounds in pixels. */ - public @NonNull Size getSize() { - return mSize; + public @NonNull Rect getBounds() { + return mBounds; } /** - * Returns the {@link WindowInsets} of the window. + * Returns the {@link WindowInsets} of the area associated with this window or visual context. * - * @return the {@link WindowInsets} of the window. + * @return the {@link WindowInsets} of the visual area. */ public @NonNull WindowInsets getWindowInsets() { return mWindowInsets; diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java index 39a9ed4a82e7..83a79344917c 100644 --- a/core/java/android/view/autofill/AutofillManager.java +++ b/core/java/android/view/autofill/AutofillManager.java @@ -41,7 +41,9 @@ import android.graphics.Rect; import android.metrics.LogMaker; import android.os.Build; import android.os.Bundle; +import android.os.Handler; import android.os.IBinder; +import android.os.Looper; import android.os.Parcelable; import android.os.RemoteException; import android.os.SystemClock; @@ -63,6 +65,7 @@ import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeProvider; import android.view.accessibility.AccessibilityWindowInfo; +import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.TextView; @@ -1242,9 +1245,10 @@ public final class AutofillManager { if (mLastAutofilledData.containsKey(id)) { value = view.getAutofillValue(); valueWasRead = true; + final boolean hideHighlight = mLastAutofilledData.keySet().size() == 1; if (Objects.equals(mLastAutofilledData.get(id), value)) { - view.setAutofilled(true, false); + view.setAutofilled(true, hideHighlight); } else { view.setAutofilled(false, false); mLastAutofilledData.remove(id); @@ -2443,6 +2447,44 @@ public final class AutofillManager { } } + private void requestShowSoftInput(@NonNull AutofillId id) { + if (sVerbose) Log.v(TAG, "requestShowSoftInput(" + id + ")"); + final AutofillClient client = getClient(); + if (client == null) { + return; + } + final View view = client.autofillClientFindViewByAutofillIdTraversal(id); + if (view == null) { + if (sVerbose) Log.v(TAG, "View is not found"); + return; + } + final Handler handler = view.getHandler(); + if (handler == null) { + if (sVerbose) Log.v(TAG, "Ignoring requestShowSoftInput due to no handler in view"); + return; + } + if (handler.getLooper() != Looper.myLooper()) { + // The view is running on a different thread than our own, so we need to reschedule + // our work for over there. + if (sVerbose) Log.v(TAG, "Scheduling showSoftInput() on the view UI thread"); + handler.post(() -> requestShowSoftInputInViewThread(view)); + } else { + requestShowSoftInputInViewThread(view); + } + } + + // This method must be called from within the View thread. + private static void requestShowSoftInputInViewThread(@NonNull View view) { + if (!view.isFocused()) { + Log.w(TAG, "Ignoring requestShowSoftInput() due to non-focused view"); + return; + } + final InputMethodManager inputMethodManager = view.getContext().getSystemService( + InputMethodManager.class); + boolean ret = inputMethodManager.showSoftInput(view, /*flags=*/ 0); + if (sVerbose) Log.v(TAG, " InputMethodManager.showSoftInput returns " + ret); + } + /** @hide */ public void requestHideFillUi() { requestHideFillUi(mIdShownFillUi, true); @@ -3367,6 +3409,14 @@ public final class AutofillManager { afm.post(() -> afm.getAugmentedAutofillClient(result)); } } + + @Override + public void requestShowSoftInput(@NonNull AutofillId id) { + final AutofillManager afm = mAfm.get(); + if (afm != null) { + afm.post(() -> afm.requestShowSoftInput(id)); + } + } } private static final class AugmentedAutofillManagerClient diff --git a/core/java/android/view/autofill/AutofillPopupWindow.java b/core/java/android/view/autofill/AutofillPopupWindow.java index 8d3dc83bca0c..2ead352fd199 100644 --- a/core/java/android/view/autofill/AutofillPopupWindow.java +++ b/core/java/android/view/autofill/AutofillPopupWindow.java @@ -25,7 +25,6 @@ import android.os.IBinder; import android.os.RemoteException; import android.transition.Transition; import android.util.Log; -import android.util.Size; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewTreeObserver; @@ -129,10 +128,10 @@ public class AutofillPopupWindow extends PopupWindow { // Gravity.BOTTOM because PopupWindow base class does not expose computeGravity(). final WindowManager windowManager = anchor.getContext() .getSystemService(WindowManager.class); - final Size windowSize = windowManager.getCurrentWindowMetrics().getSize(); - width = windowSize.getWidth(); + final Rect windowBounds = windowManager.getCurrentWindowMetrics().getBounds(); + width = windowBounds.width(); if (height != LayoutParams.MATCH_PARENT) { - offsetY = windowSize.getHeight() - height; + offsetY = windowBounds.height() - height; } actualAnchor = anchor; } else if (virtualBounds != null) { diff --git a/core/java/android/view/autofill/IAutoFillManagerClient.aidl b/core/java/android/view/autofill/IAutoFillManagerClient.aidl index 4371b3c54f94..87d65c223c25 100644 --- a/core/java/android/view/autofill/IAutoFillManagerClient.aidl +++ b/core/java/android/view/autofill/IAutoFillManagerClient.aidl @@ -117,4 +117,9 @@ oneway interface IAutoFillManagerClient { * Notifies disables autofill for the app or activity. */ void notifyDisableAutofill(long disableDuration, in ComponentName componentName); + + /** + * Requests to show the soft input method if the focus is on the given id. + */ + void requestShowSoftInput(in AutofillId id); } diff --git a/core/java/android/view/contentcapture/ContentCaptureContext.java b/core/java/android/view/contentcapture/ContentCaptureContext.java index 1692051924f4..b84cb88ccd84 100644 --- a/core/java/android/view/contentcapture/ContentCaptureContext.java +++ b/core/java/android/view/contentcapture/ContentCaptureContext.java @@ -15,7 +15,7 @@ */ package android.view.contentcapture; -import static android.view.contentcapture.ContentCaptureSession.NO_SESSION_ID; +import static android.view.contentcapture.ContentCaptureManager.NO_SESSION_ID; import android.annotation.IntDef; import android.annotation.NonNull; diff --git a/core/java/android/view/contentcapture/ContentCaptureEvent.java b/core/java/android/view/contentcapture/ContentCaptureEvent.java index ea34d948c91a..f49b1beee8ad 100644 --- a/core/java/android/view/contentcapture/ContentCaptureEvent.java +++ b/core/java/android/view/contentcapture/ContentCaptureEvent.java @@ -16,7 +16,7 @@ package android.view.contentcapture; import static android.view.contentcapture.ContentCaptureHelper.getSanitizedString; -import static android.view.contentcapture.ContentCaptureSession.NO_SESSION_ID; +import static android.view.contentcapture.ContentCaptureManager.NO_SESSION_ID; import android.annotation.IntDef; import android.annotation.NonNull; diff --git a/core/java/android/view/contentcapture/ContentCaptureManager.java b/core/java/android/view/contentcapture/ContentCaptureManager.java index b9889276ae0b..edc6b1251f2c 100644 --- a/core/java/android/view/contentcapture/ContentCaptureManager.java +++ b/core/java/android/view/contentcapture/ContentCaptureManager.java @@ -54,6 +54,8 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; import java.util.Set; import java.util.concurrent.Executor; import java.util.function.Consumer; @@ -235,6 +237,13 @@ public final class ContentCaptureManager { public static final int RESULT_CODE_SECURITY_EXCEPTION = -1; /** + * ID used to indicate that a session does not exist + * @hide + */ + @SystemApi + public static final int NO_SESSION_ID = 0; + + /** * Timeout for calls to system_server. */ private static final int SYNC_CALLS_TIMEOUT_MS = 5000; @@ -353,6 +362,9 @@ public final class ContentCaptureManager { @NonNull private final IContentCaptureManager mService; + @GuardedBy("mLock") + private final LocalDataShareAdapterResourceManager mDataShareAdapterResourceManager; + @NonNull final ContentCaptureOptions mOptions; @@ -392,6 +404,8 @@ public final class ContentCaptureManager { // do, then we should optimize it to run the tests after the Choreographer finishes the most // important steps of the frame. mHandler = Handler.createAsync(Looper.getMainLooper()); + + mDataShareAdapterResourceManager = new LocalDataShareAdapterResourceManager(); } /** @@ -674,7 +688,8 @@ public final class ContentCaptureManager { try { mService.shareData(request, - new DataShareAdapterDelegate(executor, dataShareWriteAdapter)); + new DataShareAdapterDelegate(executor, dataShareWriteAdapter, + mDataShareAdapterResourceManager)); } catch (RemoteException e) { e.rethrowFromSystemServer(); } @@ -730,40 +745,53 @@ public final class ContentCaptureManager { private static class DataShareAdapterDelegate extends IDataShareWriteAdapter.Stub { - private final WeakReference<DataShareWriteAdapter> mAdapterReference; - private final WeakReference<Executor> mExecutorReference; + private final WeakReference<LocalDataShareAdapterResourceManager> mResourceManagerReference; - private DataShareAdapterDelegate(Executor executor, DataShareWriteAdapter adapter) { + private DataShareAdapterDelegate(Executor executor, DataShareWriteAdapter adapter, + LocalDataShareAdapterResourceManager resourceManager) { Preconditions.checkNotNull(executor); Preconditions.checkNotNull(adapter); + Preconditions.checkNotNull(resourceManager); - mExecutorReference = new WeakReference<>(executor); - mAdapterReference = new WeakReference<>(adapter); + resourceManager.initializeForDelegate(this, adapter, executor); + mResourceManagerReference = new WeakReference<>(resourceManager); } @Override public void write(ParcelFileDescriptor destination) throws RemoteException { executeAdapterMethodLocked(adapter -> adapter.onWrite(destination), "onWrite"); + + // Client app and Service successfully connected, so this object would be kept alive + // until the session has finished. + clearHardReferences(); } @Override public void error(int errorCode) throws RemoteException { executeAdapterMethodLocked(adapter -> adapter.onError(errorCode), "onError"); + clearHardReferences(); } @Override public void rejected() throws RemoteException { executeAdapterMethodLocked(DataShareWriteAdapter::onRejected, "onRejected"); + clearHardReferences(); } private void executeAdapterMethodLocked(Consumer<DataShareWriteAdapter> adapterFn, String methodName) { - DataShareWriteAdapter adapter = mAdapterReference.get(); - Executor executor = mExecutorReference.get(); + LocalDataShareAdapterResourceManager resourceManager = mResourceManagerReference.get(); + if (resourceManager == null) { + Slog.w(TAG, "Can't execute " + methodName + "(), resource manager has been GC'ed"); + return; + } + + DataShareWriteAdapter adapter = resourceManager.getAdapter(this); + Executor executor = resourceManager.getExecutor(this); if (adapter == null || executor == null) { - Slog.w(TAG, "Can't execute " + methodName + "(), references have been GC'ed"); + Slog.w(TAG, "Can't execute " + methodName + "(), references are null"); return; } @@ -774,5 +802,50 @@ public final class ContentCaptureManager { Binder.restoreCallingIdentity(identity); } } + + private void clearHardReferences() { + LocalDataShareAdapterResourceManager resourceManager = mResourceManagerReference.get(); + if (resourceManager == null) { + Slog.w(TAG, "Can't clear references, resource manager has been GC'ed"); + return; + } + + resourceManager.clearHardReferences(this); + } + } + + /** + * Wrapper class making sure dependencies on the current application stay in the application + * context. + */ + private static class LocalDataShareAdapterResourceManager { + + // Keeping hard references to the remote objects in the current process (static context) + // to prevent them to be gc'ed during the lifetime of the application. This is an + // artifact of only operating with weak references remotely: there has to be at least 1 + // hard reference in order for this to not be killed. + private Map<DataShareAdapterDelegate, DataShareWriteAdapter> mWriteAdapterHardReferences = + new HashMap<>(); + private Map<DataShareAdapterDelegate, Executor> mExecutorHardReferences = + new HashMap<>(); + + void initializeForDelegate(DataShareAdapterDelegate delegate, DataShareWriteAdapter adapter, + Executor executor) { + mWriteAdapterHardReferences.put(delegate, adapter); + mExecutorHardReferences.remove(delegate, executor); + } + + Executor getExecutor(DataShareAdapterDelegate delegate) { + return mExecutorHardReferences.get(delegate); + } + + DataShareWriteAdapter getAdapter(DataShareAdapterDelegate delegate) { + return mWriteAdapterHardReferences.get(delegate); + } + + void clearHardReferences(DataShareAdapterDelegate delegate) { + mWriteAdapterHardReferences.remove(delegate); + mExecutorHardReferences.remove(delegate); + } } } diff --git a/core/java/android/view/contentcapture/ContentCaptureSession.java b/core/java/android/view/contentcapture/ContentCaptureSession.java index 012f5e6d3507..39c7210d8dac 100644 --- a/core/java/android/view/contentcapture/ContentCaptureSession.java +++ b/core/java/android/view/contentcapture/ContentCaptureSession.java @@ -17,12 +17,12 @@ package android.view.contentcapture; import static android.view.contentcapture.ContentCaptureHelper.sDebug; import static android.view.contentcapture.ContentCaptureHelper.sVerbose; +import static android.view.contentcapture.ContentCaptureManager.NO_SESSION_ID; import android.annotation.CallSuper; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; -import android.annotation.SystemApi; import android.graphics.Insets; import android.util.DebugUtils; import android.util.Log; @@ -53,13 +53,6 @@ public abstract class ContentCaptureSession implements AutoCloseable { private static final Random sIdGenerator = new Random(); /** - * ID used to indicate that a session does not exist - * @hide - */ - @SystemApi - public static final int NO_SESSION_ID = 0; - - /** * Initial state, when there is no session. * * @hide diff --git a/core/java/android/view/inline/InlineContentView.java b/core/java/android/view/inline/InlineContentView.java index df5bc2fb0cb4..3df201c9145d 100644 --- a/core/java/android/view/inline/InlineContentView.java +++ b/core/java/android/view/inline/InlineContentView.java @@ -45,6 +45,9 @@ import android.view.ViewGroup; * under the hosting window which could be useful in some cases, e.g. animating transitions. * At this point the inlined content will not be interactive and the touch events would * be delivered to your app. + * + * @hide + * @removed */ public class InlineContentView extends ViewGroup { @@ -157,7 +160,7 @@ public class InlineContentView extends ViewGroup { @Override public void onLayout(boolean changed, int l, int t, int r, int b) { - mSurfaceView.layout(l, t, r, b); + mSurfaceView.layout(0, 0, getMeasuredWidth(), getMeasuredHeight()); } /** diff --git a/core/java/android/view/inline/InlinePresentationSpec.aidl b/core/java/android/view/inline/InlinePresentationSpec.aidl index efa46c8932b9..680ee4e14b54 100644 --- a/core/java/android/view/inline/InlinePresentationSpec.aidl +++ b/core/java/android/view/inline/InlinePresentationSpec.aidl @@ -16,4 +16,8 @@ package android.view.inline; +/** + * @hide + * @removed + */ parcelable InlinePresentationSpec; diff --git a/core/java/android/view/inline/InlinePresentationSpec.java b/core/java/android/view/inline/InlinePresentationSpec.java index 3788e2b2a883..60687fbe5553 100644 --- a/core/java/android/view/inline/InlinePresentationSpec.java +++ b/core/java/android/view/inline/InlinePresentationSpec.java @@ -29,6 +29,9 @@ import com.android.internal.util.DataClass; * should abide when constructing its UI. Since suggestions are inlined in a * host application while provided by another source, they need to be consistent * with the host's look at feel to allow building smooth and integrated UIs. + * + * @hide + * @removed */ @DataClass(genEqualsHashCode = true, genToString = true, genBuilder = true) public final class InlinePresentationSpec implements Parcelable { @@ -279,7 +282,7 @@ public final class InlinePresentationSpec implements Parcelable { } @DataClass.Generated( - time = 1584067238741L, + time = 1585177087499L, codegenVersion = "1.0.15", sourceFile = "frameworks/base/core/java/android/view/inline/InlinePresentationSpec.java", inputSignatures = "private final @android.annotation.NonNull android.util.Size mMinSize\nprivate final @android.annotation.NonNull android.util.Size mMaxSize\nprivate final @android.annotation.Nullable android.os.Bundle mStyle\nprivate static android.os.Bundle defaultStyle()\nclass InlinePresentationSpec extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genBuilder=true)\nclass BaseBuilder extends java.lang.Object implements []") diff --git a/core/java/android/view/inputmethod/InlineSuggestion.java b/core/java/android/view/inputmethod/InlineSuggestion.java index ab8f36d85400..f50f0dea0466 100644 --- a/core/java/android/view/inputmethod/InlineSuggestion.java +++ b/core/java/android/view/inputmethod/InlineSuggestion.java @@ -29,8 +29,7 @@ import android.os.RemoteException; import android.util.Size; import android.util.Slog; import android.view.SurfaceControlViewHost; -import android.view.inline.InlineContentView; -import android.view.inline.InlinePresentationSpec; +import android.widget.inline.InlineContentView; import com.android.internal.util.DataClass; import com.android.internal.util.Parcelling; @@ -95,9 +94,10 @@ public final class InlineSuggestion implements Parcelable { /** * Inflates a view with the content of this suggestion at a specific size. - * The size must be between the {@link InlinePresentationSpec#getMinSize() min size} - * and the {@link InlinePresentationSpec#getMaxSize() max size} of the presentation - * spec returned by {@link InlineSuggestionInfo#getPresentationSpec()}. + * The size must be between the + * {@link android.widget.inline.InlinePresentationSpec#getMinSize() min size} and the + * {@link android.widget.inline.InlinePresentationSpec#getMaxSize() max size} of the + * presentation spec returned by {@link InlineSuggestionInfo#getInlinePresentationSpec()}. * * <p> The caller can attach an {@link android.view.View.OnClickListener} and/or an * {@link android.view.View.OnLongClickListener} to the view in the @@ -113,8 +113,8 @@ public final class InlineSuggestion implements Parcelable { public void inflate(@NonNull Context context, @NonNull Size size, @NonNull @CallbackExecutor Executor callbackExecutor, @NonNull Consumer<InlineContentView> callback) { - final Size minSize = mInfo.getPresentationSpec().getMinSize(); - final Size maxSize = mInfo.getPresentationSpec().getMaxSize(); + final Size minSize = mInfo.getInlinePresentationSpec().getMinSize(); + final Size maxSize = mInfo.getInlinePresentationSpec().getMaxSize(); if (size.getHeight() < minSize.getHeight() || size.getHeight() > maxSize.getHeight() || size.getWidth() < minSize.getWidth() || size.getWidth() > maxSize.getWidth()) { throw new IllegalArgumentException("size not between min:" @@ -398,10 +398,10 @@ public final class InlineSuggestion implements Parcelable { }; @DataClass.Generated( - time = 1584679775946L, + time = 1585180783541L, codegenVersion = "1.0.15", sourceFile = "frameworks/base/core/java/android/view/inputmethod/InlineSuggestion.java", - inputSignatures = "private static final java.lang.String TAG\nprivate final @android.annotation.NonNull android.view.inputmethod.InlineSuggestionInfo mInfo\nprivate final @android.annotation.Nullable com.android.internal.view.inline.IInlineContentProvider mContentProvider\nprivate @com.android.internal.util.DataClass.ParcelWith(android.view.inputmethod.InlineSuggestion.InlineContentCallbackImplParceling.class) @android.annotation.Nullable android.view.inputmethod.InlineSuggestion.InlineContentCallbackImpl mInlineContentCallback\npublic static @android.annotation.TestApi @android.annotation.NonNull android.view.inputmethod.InlineSuggestion newInlineSuggestion(android.view.inputmethod.InlineSuggestionInfo)\npublic void inflate(android.content.Context,android.util.Size,java.util.concurrent.Executor,java.util.function.Consumer<android.view.inline.InlineContentView>)\nprivate synchronized android.view.inputmethod.InlineSuggestion.InlineContentCallbackImpl getInlineContentCallback(android.content.Context,java.util.concurrent.Executor,java.util.function.Consumer<android.view.inline.InlineContentView>)\nclass InlineSuggestion extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genHiddenConstDefs=true, genHiddenConstructor=true)") + inputSignatures = "private static final java.lang.String TAG\nprivate final @android.annotation.NonNull android.view.inputmethod.InlineSuggestionInfo mInfo\nprivate final @android.annotation.Nullable com.android.internal.view.inline.IInlineContentProvider mContentProvider\nprivate @com.android.internal.util.DataClass.ParcelWith(android.view.inputmethod.InlineSuggestion.InlineContentCallbackImplParceling.class) @android.annotation.Nullable android.view.inputmethod.InlineSuggestion.InlineContentCallbackImpl mInlineContentCallback\npublic static @android.annotation.TestApi @android.annotation.NonNull android.view.inputmethod.InlineSuggestion newInlineSuggestion(android.view.inputmethod.InlineSuggestionInfo)\npublic void inflate(android.content.Context,android.util.Size,java.util.concurrent.Executor,java.util.function.Consumer<android.widget.inline.InlineContentView>)\nprivate synchronized android.view.inputmethod.InlineSuggestion.InlineContentCallbackImpl getInlineContentCallback(android.content.Context,java.util.concurrent.Executor,java.util.function.Consumer<android.widget.inline.InlineContentView>)\nclass InlineSuggestion extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genHiddenConstDefs=true, genHiddenConstructor=true)") @Deprecated private void __metadata() {} diff --git a/core/java/android/view/inputmethod/InlineSuggestionInfo.java b/core/java/android/view/inputmethod/InlineSuggestionInfo.java index cb0320e966d1..fe2ce25da288 100644 --- a/core/java/android/view/inputmethod/InlineSuggestionInfo.java +++ b/core/java/android/view/inputmethod/InlineSuggestionInfo.java @@ -20,8 +20,9 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; import android.annotation.TestApi; +import android.os.Bundle; import android.os.Parcelable; -import android.view.inline.InlinePresentationSpec; +import android.widget.inline.InlinePresentationSpec; import com.android.internal.util.DataClass; @@ -58,7 +59,7 @@ public final class InlineSuggestionInfo implements Parcelable { public static final @Type String TYPE_ACTION = "android:autofill:action"; /** The presentation spec to which the inflated suggestion view abides. */ - private final @NonNull InlinePresentationSpec mPresentationSpec; + private final @NonNull InlinePresentationSpec mInlinePresentationSpec; /** The source from which the suggestion is provided. */ private final @NonNull @Source String mSource; @@ -86,9 +87,26 @@ public final class InlineSuggestionInfo implements Parcelable { return new InlineSuggestionInfo(presentationSpec, source, autofillHints, type, isPinned); } + /** + * The presentation spec to which the inflated suggestion view abides. + * + * @hide + * @removed + */ + public @NonNull android.view.inline.InlinePresentationSpec getPresentationSpec() { + final android.view.inline.InlinePresentationSpec.Builder builder = + new android.view.inline.InlinePresentationSpec.Builder( + mInlinePresentationSpec.getMinSize(), mInlinePresentationSpec.getMaxSize()); + final Bundle style = mInlinePresentationSpec.getStyle(); + if (style != null) { + builder.setStyle(style); + } + return builder.build(); + } - // Code below generated by codegen v1.0.14. + + // Code below generated by codegen v1.0.15. // // DO NOT MODIFY! // CHECKSTYLE:OFF Generated code @@ -122,7 +140,7 @@ public final class InlineSuggestionInfo implements Parcelable { /** * Creates a new InlineSuggestionInfo. * - * @param presentationSpec + * @param inlinePresentationSpec * The presentation spec to which the inflated suggestion view abides. * @param source * The source from which the suggestion is provided. @@ -136,14 +154,14 @@ public final class InlineSuggestionInfo implements Parcelable { */ @DataClass.Generated.Member public InlineSuggestionInfo( - @NonNull InlinePresentationSpec presentationSpec, + @NonNull InlinePresentationSpec inlinePresentationSpec, @NonNull @Source String source, @Nullable String[] autofillHints, @NonNull @Type String type, boolean pinned) { - this.mPresentationSpec = presentationSpec; + this.mInlinePresentationSpec = inlinePresentationSpec; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, mPresentationSpec); + NonNull.class, null, mInlinePresentationSpec); this.mSource = source; if (!(java.util.Objects.equals(mSource, SOURCE_AUTOFILL)) @@ -178,8 +196,8 @@ public final class InlineSuggestionInfo implements Parcelable { * The presentation spec to which the inflated suggestion view abides. */ @DataClass.Generated.Member - public @NonNull InlinePresentationSpec getPresentationSpec() { - return mPresentationSpec; + public @NonNull InlinePresentationSpec getInlinePresentationSpec() { + return mInlinePresentationSpec; } /** @@ -221,7 +239,7 @@ public final class InlineSuggestionInfo implements Parcelable { // String fieldNameToString() { ... } return "InlineSuggestionInfo { " + - "presentationSpec = " + mPresentationSpec + ", " + + "inlinePresentationSpec = " + mInlinePresentationSpec + ", " + "source = " + mSource + ", " + "autofillHints = " + java.util.Arrays.toString(mAutofillHints) + ", " + "type = " + mType + ", " + @@ -242,7 +260,7 @@ public final class InlineSuggestionInfo implements Parcelable { InlineSuggestionInfo that = (InlineSuggestionInfo) o; //noinspection PointlessBooleanExpression return true - && java.util.Objects.equals(mPresentationSpec, that.mPresentationSpec) + && java.util.Objects.equals(mInlinePresentationSpec, that.mInlinePresentationSpec) && java.util.Objects.equals(mSource, that.mSource) && java.util.Arrays.equals(mAutofillHints, that.mAutofillHints) && java.util.Objects.equals(mType, that.mType) @@ -256,7 +274,7 @@ public final class InlineSuggestionInfo implements Parcelable { // int fieldNameHashCode() { ... } int _hash = 1; - _hash = 31 * _hash + java.util.Objects.hashCode(mPresentationSpec); + _hash = 31 * _hash + java.util.Objects.hashCode(mInlinePresentationSpec); _hash = 31 * _hash + java.util.Objects.hashCode(mSource); _hash = 31 * _hash + java.util.Arrays.hashCode(mAutofillHints); _hash = 31 * _hash + java.util.Objects.hashCode(mType); @@ -274,7 +292,7 @@ public final class InlineSuggestionInfo implements Parcelable { if (mPinned) flg |= 0x10; if (mAutofillHints != null) flg |= 0x4; dest.writeByte(flg); - dest.writeTypedObject(mPresentationSpec, flags); + dest.writeTypedObject(mInlinePresentationSpec, flags); dest.writeString(mSource); if (mAutofillHints != null) dest.writeStringArray(mAutofillHints); dest.writeString(mType); @@ -293,14 +311,14 @@ public final class InlineSuggestionInfo implements Parcelable { byte flg = in.readByte(); boolean pinned = (flg & 0x10) != 0; - InlinePresentationSpec presentationSpec = (InlinePresentationSpec) in.readTypedObject(InlinePresentationSpec.CREATOR); + InlinePresentationSpec inlinePresentationSpec = (InlinePresentationSpec) in.readTypedObject(InlinePresentationSpec.CREATOR); String source = in.readString(); String[] autofillHints = (flg & 0x4) == 0 ? null : in.createStringArray(); String type = in.readString(); - this.mPresentationSpec = presentationSpec; + this.mInlinePresentationSpec = inlinePresentationSpec; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, mPresentationSpec); + NonNull.class, null, mInlinePresentationSpec); this.mSource = source; if (!(java.util.Objects.equals(mSource, SOURCE_AUTOFILL)) @@ -346,10 +364,10 @@ public final class InlineSuggestionInfo implements Parcelable { }; @DataClass.Generated( - time = 1582753084046L, - codegenVersion = "1.0.14", + time = 1585528157244L, + codegenVersion = "1.0.15", sourceFile = "frameworks/base/core/java/android/view/inputmethod/InlineSuggestionInfo.java", - inputSignatures = "public static final @android.view.inputmethod.InlineSuggestionInfo.Source java.lang.String SOURCE_AUTOFILL\npublic static final @android.view.inputmethod.InlineSuggestionInfo.Source java.lang.String SOURCE_PLATFORM\npublic static final @android.view.inputmethod.InlineSuggestionInfo.Type java.lang.String TYPE_SUGGESTION\npublic static final @android.annotation.SuppressLint({\"IntentName\"}) @android.view.inputmethod.InlineSuggestionInfo.Type java.lang.String TYPE_ACTION\nprivate final @android.annotation.NonNull android.view.inline.InlinePresentationSpec mPresentationSpec\nprivate final @android.annotation.NonNull @android.view.inputmethod.InlineSuggestionInfo.Source java.lang.String mSource\nprivate final @android.annotation.Nullable java.lang.String[] mAutofillHints\nprivate final @android.annotation.NonNull @android.view.inputmethod.InlineSuggestionInfo.Type java.lang.String mType\nprivate final boolean mPinned\npublic static @android.annotation.TestApi @android.annotation.NonNull android.view.inputmethod.InlineSuggestionInfo newInlineSuggestionInfo(android.view.inline.InlinePresentationSpec,java.lang.String,java.lang.String[],java.lang.String,boolean)\nclass InlineSuggestionInfo extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genHiddenConstDefs=true, genHiddenConstructor=true)") + inputSignatures = "public static final @android.view.inputmethod.InlineSuggestionInfo.Source java.lang.String SOURCE_AUTOFILL\npublic static final @android.view.inputmethod.InlineSuggestionInfo.Source java.lang.String SOURCE_PLATFORM\npublic static final @android.view.inputmethod.InlineSuggestionInfo.Type java.lang.String TYPE_SUGGESTION\npublic static final @android.annotation.SuppressLint({\"IntentName\"}) @android.view.inputmethod.InlineSuggestionInfo.Type java.lang.String TYPE_ACTION\nprivate final @android.annotation.NonNull android.widget.inline.InlinePresentationSpec mInlinePresentationSpec\nprivate final @android.annotation.NonNull @android.view.inputmethod.InlineSuggestionInfo.Source java.lang.String mSource\nprivate final @android.annotation.Nullable java.lang.String[] mAutofillHints\nprivate final @android.annotation.NonNull @android.view.inputmethod.InlineSuggestionInfo.Type java.lang.String mType\nprivate final boolean mPinned\npublic static @android.annotation.TestApi @android.annotation.NonNull android.view.inputmethod.InlineSuggestionInfo newInlineSuggestionInfo(android.widget.inline.InlinePresentationSpec,java.lang.String,java.lang.String[],java.lang.String,boolean)\npublic @android.annotation.NonNull android.view.inline.InlinePresentationSpec getPresentationSpec()\nclass InlineSuggestionInfo extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genHiddenConstDefs=true, genHiddenConstructor=true)") @Deprecated private void __metadata() {} diff --git a/core/java/android/view/inputmethod/InlineSuggestionsRequest.java b/core/java/android/view/inputmethod/InlineSuggestionsRequest.java index 2945a8613bb7..61997c160b57 100644 --- a/core/java/android/view/inputmethod/InlineSuggestionsRequest.java +++ b/core/java/android/view/inputmethod/InlineSuggestionsRequest.java @@ -25,7 +25,7 @@ import android.os.LocaleList; import android.os.Parcel; import android.os.Parcelable; import android.view.Display; -import android.view.inline.InlinePresentationSpec; +import android.widget.inline.InlinePresentationSpec; import com.android.internal.util.DataClass; import com.android.internal.util.Preconditions; @@ -54,7 +54,7 @@ public final class InlineSuggestionsRequest implements Parcelable { * count is larger than the number of specs in the list, then the last spec is used for the * remainder of the suggestions. The list should not be empty. */ - private final @NonNull List<InlinePresentationSpec> mPresentationSpecs; + private final @NonNull List<InlinePresentationSpec> mInlinePresentationSpecs; /** * The package name of the app that requests for the inline suggestions and will host the @@ -91,6 +91,32 @@ public final class InlineSuggestionsRequest implements Parcelable { private int mHostDisplayId; /** + * The {@link InlinePresentationSpec} for each suggestion in the response. If the max suggestion + * count is larger than the number of specs in the list, then the last spec is used for the + * remainder of the suggestions. The list should not be empty. + * + * @hide + * @removed + */ + public @NonNull List<android.view.inline.InlinePresentationSpec> getPresentationSpecs() { + final ArrayList<android.view.inline.InlinePresentationSpec> convertedSpecs = + new ArrayList<>(); + for (int i = 0; i < mInlinePresentationSpecs.size(); i++) { + final android.widget.inline.InlinePresentationSpec currSpec = + mInlinePresentationSpecs.get(i); + final android.view.inline.InlinePresentationSpec.Builder builder = + new android.view.inline.InlinePresentationSpec.Builder( + currSpec.getMinSize(), currSpec.getMaxSize()); + final Bundle style = currSpec.getStyle(); + if (style != null) { + builder.setStyle(style); + } + convertedSpecs.add(builder.build()); + } + return convertedSpecs; + } + + /** * @hide * @see {@link #mHostInputToken}. */ @@ -117,8 +143,8 @@ public final class InlineSuggestionsRequest implements Parcelable { } private void onConstructed() { - Preconditions.checkState(!mPresentationSpecs.isEmpty()); - Preconditions.checkState(mMaxSuggestionCount >= mPresentationSpecs.size()); + Preconditions.checkState(!mInlinePresentationSpecs.isEmpty()); + Preconditions.checkState(mMaxSuggestionCount >= mInlinePresentationSpecs.size()); } private static int defaultMaxSuggestionCount() { @@ -148,11 +174,64 @@ public final class InlineSuggestionsRequest implements Parcelable { return null; } - - /** @hide */ abstract static class BaseBuilder { - abstract Builder setPresentationSpecs(@NonNull List<InlinePresentationSpec> value); + /** + * The {@link android.view.inline.InlinePresentationSpec} for each suggestion in the + * response. If the max suggestion count is larger than the number of specs in the list, + * then the last spec is used for the remainder of the suggestions. + * The list should not be empty. + * + * @hide + * @removed + */ + @NonNull Builder setPresentationSpecs( + @NonNull List<android.view.inline.InlinePresentationSpec> specs) { + ((Builder) this).checkNotUsed(); + ((Builder) this).mBuilderFieldsSet |= 0x2; + final ArrayList<android.widget.inline.InlinePresentationSpec> convertedSpecs = + new ArrayList<>(); + for (int i = 0; i < specs.size(); i++) { + final android.view.inline.InlinePresentationSpec currSpec = specs.get(i); + final android.widget.inline.InlinePresentationSpec.Builder builder = + new android.widget.inline.InlinePresentationSpec.Builder( + currSpec.getMinSize(), currSpec.getMaxSize()); + final Bundle style = currSpec.getStyle(); + if (style != null) { + builder.setStyle(style); + } + convertedSpecs.add(builder.build()); + } + ((Builder) this).mInlinePresentationSpecs = convertedSpecs; + return ((Builder) this); + } + + /** + * @see #setPresentationSpecs + * + * @hide + * @removed + */ + public @NonNull Builder addPresentationSpecs( + @NonNull android.view.inline.InlinePresentationSpec value) { + if (((Builder) this).mInlinePresentationSpecs == null) { + setPresentationSpecs(new ArrayList<>()); + } + + final android.widget.inline.InlinePresentationSpec.Builder builder = + new android.widget.inline.InlinePresentationSpec.Builder( + value.getMinSize(), value.getMaxSize()); + final Bundle style = value.getStyle(); + if (style != null) { + builder.setStyle(style); + } + + ((Builder) this).mInlinePresentationSpecs.add(builder.build()); + return ((Builder) this); + } + + abstract Builder setInlinePresentationSpecs( + @NonNull List<android.widget.inline.InlinePresentationSpec> specs); abstract Builder setHostPackageName(@Nullable String value); @@ -179,16 +258,16 @@ public final class InlineSuggestionsRequest implements Parcelable { @DataClass.Generated.Member /* package-private */ InlineSuggestionsRequest( int maxSuggestionCount, - @NonNull List<InlinePresentationSpec> presentationSpecs, + @NonNull List<InlinePresentationSpec> inlinePresentationSpecs, @NonNull String hostPackageName, @NonNull LocaleList supportedLocales, @Nullable Bundle extras, @Nullable IBinder hostInputToken, int hostDisplayId) { this.mMaxSuggestionCount = maxSuggestionCount; - this.mPresentationSpecs = presentationSpecs; + this.mInlinePresentationSpecs = inlinePresentationSpecs; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, mPresentationSpecs); + NonNull.class, null, mInlinePresentationSpecs); this.mHostPackageName = hostPackageName; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mHostPackageName); @@ -217,8 +296,8 @@ public final class InlineSuggestionsRequest implements Parcelable { * remainder of the suggestions. The list should not be empty. */ @DataClass.Generated.Member - public @NonNull List<InlinePresentationSpec> getPresentationSpecs() { - return mPresentationSpecs; + public @NonNull List<InlinePresentationSpec> getInlinePresentationSpecs() { + return mInlinePresentationSpecs; } /** @@ -278,7 +357,7 @@ public final class InlineSuggestionsRequest implements Parcelable { return "InlineSuggestionsRequest { " + "maxSuggestionCount = " + mMaxSuggestionCount + ", " + - "presentationSpecs = " + mPresentationSpecs + ", " + + "inlinePresentationSpecs = " + mInlinePresentationSpecs + ", " + "hostPackageName = " + mHostPackageName + ", " + "supportedLocales = " + mSupportedLocales + ", " + "extras = " + mExtras + ", " + @@ -301,7 +380,7 @@ public final class InlineSuggestionsRequest implements Parcelable { //noinspection PointlessBooleanExpression return true && mMaxSuggestionCount == that.mMaxSuggestionCount - && java.util.Objects.equals(mPresentationSpecs, that.mPresentationSpecs) + && java.util.Objects.equals(mInlinePresentationSpecs, that.mInlinePresentationSpecs) && java.util.Objects.equals(mHostPackageName, that.mHostPackageName) && java.util.Objects.equals(mSupportedLocales, that.mSupportedLocales) && java.util.Objects.equals(mExtras, that.mExtras) @@ -317,7 +396,7 @@ public final class InlineSuggestionsRequest implements Parcelable { int _hash = 1; _hash = 31 * _hash + mMaxSuggestionCount; - _hash = 31 * _hash + java.util.Objects.hashCode(mPresentationSpecs); + _hash = 31 * _hash + java.util.Objects.hashCode(mInlinePresentationSpecs); _hash = 31 * _hash + java.util.Objects.hashCode(mHostPackageName); _hash = 31 * _hash + java.util.Objects.hashCode(mSupportedLocales); _hash = 31 * _hash + java.util.Objects.hashCode(mExtras); @@ -337,7 +416,7 @@ public final class InlineSuggestionsRequest implements Parcelable { if (mHostInputToken != null) flg |= 0x20; dest.writeByte(flg); dest.writeInt(mMaxSuggestionCount); - dest.writeParcelableList(mPresentationSpecs, flags); + dest.writeParcelableList(mInlinePresentationSpecs, flags); dest.writeString(mHostPackageName); dest.writeTypedObject(mSupportedLocales, flags); if (mExtras != null) dest.writeBundle(mExtras); @@ -358,8 +437,8 @@ public final class InlineSuggestionsRequest implements Parcelable { byte flg = in.readByte(); int maxSuggestionCount = in.readInt(); - List<InlinePresentationSpec> presentationSpecs = new ArrayList<>(); - in.readParcelableList(presentationSpecs, InlinePresentationSpec.class.getClassLoader()); + List<InlinePresentationSpec> inlinePresentationSpecs = new ArrayList<>(); + in.readParcelableList(inlinePresentationSpecs, InlinePresentationSpec.class.getClassLoader()); String hostPackageName = in.readString(); LocaleList supportedLocales = (LocaleList) in.readTypedObject(LocaleList.CREATOR); Bundle extras = (flg & 0x10) == 0 ? null : in.readBundle(); @@ -367,9 +446,9 @@ public final class InlineSuggestionsRequest implements Parcelable { int hostDisplayId = in.readInt(); this.mMaxSuggestionCount = maxSuggestionCount; - this.mPresentationSpecs = presentationSpecs; + this.mInlinePresentationSpecs = inlinePresentationSpecs; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, mPresentationSpecs); + NonNull.class, null, mInlinePresentationSpecs); this.mHostPackageName = hostPackageName; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mHostPackageName); @@ -405,7 +484,7 @@ public final class InlineSuggestionsRequest implements Parcelable { public static final class Builder extends BaseBuilder { private int mMaxSuggestionCount; - private @NonNull List<InlinePresentationSpec> mPresentationSpecs; + private @NonNull List<InlinePresentationSpec> mInlinePresentationSpecs; private @NonNull String mHostPackageName; private @NonNull LocaleList mSupportedLocales; private @Nullable Bundle mExtras; @@ -417,16 +496,16 @@ public final class InlineSuggestionsRequest implements Parcelable { /** * Creates a new Builder. * - * @param presentationSpecs + * @param inlinePresentationSpecs * The {@link InlinePresentationSpec} for each suggestion in the response. If the max suggestion * count is larger than the number of specs in the list, then the last spec is used for the * remainder of the suggestions. The list should not be empty. */ public Builder( - @NonNull List<InlinePresentationSpec> presentationSpecs) { - mPresentationSpecs = presentationSpecs; + @NonNull List<InlinePresentationSpec> inlinePresentationSpecs) { + mInlinePresentationSpecs = inlinePresentationSpecs; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, mPresentationSpecs); + NonNull.class, null, mInlinePresentationSpecs); } /** @@ -447,22 +526,21 @@ public final class InlineSuggestionsRequest implements Parcelable { * remainder of the suggestions. The list should not be empty. */ @DataClass.Generated.Member - @Override - @NonNull Builder setPresentationSpecs(@NonNull List<InlinePresentationSpec> value) { + public @NonNull Builder setInlinePresentationSpecs(@NonNull List<InlinePresentationSpec> value) { checkNotUsed(); mBuilderFieldsSet |= 0x2; - mPresentationSpecs = value; + mInlinePresentationSpecs = value; return this; } - /** @see #setPresentationSpecs */ + /** @see #setInlinePresentationSpecs */ @DataClass.Generated.Member - public @NonNull Builder addPresentationSpecs(@NonNull InlinePresentationSpec value) { + public @NonNull Builder addInlinePresentationSpecs(@NonNull InlinePresentationSpec value) { // You can refine this method's name by providing item's singular name, e.g.: // @DataClass.PluralOf("item")) mItems = ... - if (mPresentationSpecs == null) setPresentationSpecs(new ArrayList<>()); - mPresentationSpecs.add(value); + if (mInlinePresentationSpecs == null) setInlinePresentationSpecs(new ArrayList<>()); + mInlinePresentationSpecs.add(value); return this; } @@ -558,7 +636,7 @@ public final class InlineSuggestionsRequest implements Parcelable { } InlineSuggestionsRequest o = new InlineSuggestionsRequest( mMaxSuggestionCount, - mPresentationSpecs, + mInlinePresentationSpecs, mHostPackageName, mSupportedLocales, mExtras, @@ -576,10 +654,10 @@ public final class InlineSuggestionsRequest implements Parcelable { } @DataClass.Generated( - time = 1584067152935L, + time = 1585528160885L, codegenVersion = "1.0.15", sourceFile = "frameworks/base/core/java/android/view/inputmethod/InlineSuggestionsRequest.java", - inputSignatures = "public static final int SUGGESTION_COUNT_UNLIMITED\nprivate final int mMaxSuggestionCount\nprivate final @android.annotation.NonNull java.util.List<android.view.inline.InlinePresentationSpec> mPresentationSpecs\nprivate @android.annotation.NonNull java.lang.String mHostPackageName\nprivate @android.annotation.NonNull android.os.LocaleList mSupportedLocales\nprivate @android.annotation.Nullable android.os.Bundle mExtras\nprivate @android.annotation.Nullable android.os.IBinder mHostInputToken\nprivate int mHostDisplayId\npublic void setHostInputToken(android.os.IBinder)\nprivate void parcelHostInputToken(android.os.Parcel,int)\nprivate @android.annotation.Nullable android.os.IBinder unparcelHostInputToken(android.os.Parcel)\npublic void setHostDisplayId(int)\nprivate void onConstructed()\nprivate static int defaultMaxSuggestionCount()\nprivate static java.lang.String defaultHostPackageName()\nprivate static android.os.LocaleList defaultSupportedLocales()\nprivate static @android.annotation.Nullable android.os.IBinder defaultHostInputToken()\nprivate static @android.annotation.Nullable int defaultHostDisplayId()\nprivate static @android.annotation.Nullable android.os.Bundle defaultExtras()\nclass InlineSuggestionsRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genBuilder=true)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setPresentationSpecs(java.util.List<android.view.inline.InlinePresentationSpec>)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setHostPackageName(java.lang.String)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setHostInputToken(android.os.IBinder)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setHostDisplayId(int)\nclass BaseBuilder extends java.lang.Object implements []") + inputSignatures = "public static final int SUGGESTION_COUNT_UNLIMITED\nprivate final int mMaxSuggestionCount\nprivate final @android.annotation.NonNull java.util.List<android.widget.inline.InlinePresentationSpec> mInlinePresentationSpecs\nprivate @android.annotation.NonNull java.lang.String mHostPackageName\nprivate @android.annotation.NonNull android.os.LocaleList mSupportedLocales\nprivate @android.annotation.Nullable android.os.Bundle mExtras\nprivate @android.annotation.Nullable android.os.IBinder mHostInputToken\nprivate int mHostDisplayId\npublic @android.annotation.NonNull java.util.List<android.view.inline.InlinePresentationSpec> getPresentationSpecs()\npublic void setHostInputToken(android.os.IBinder)\nprivate void parcelHostInputToken(android.os.Parcel,int)\nprivate @android.annotation.Nullable android.os.IBinder unparcelHostInputToken(android.os.Parcel)\npublic void setHostDisplayId(int)\nprivate void onConstructed()\nprivate static int defaultMaxSuggestionCount()\nprivate static java.lang.String defaultHostPackageName()\nprivate static android.os.LocaleList defaultSupportedLocales()\nprivate static @android.annotation.Nullable android.os.IBinder defaultHostInputToken()\nprivate static @android.annotation.Nullable int defaultHostDisplayId()\nprivate static @android.annotation.Nullable android.os.Bundle defaultExtras()\nclass InlineSuggestionsRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genBuilder=true)\n @android.annotation.NonNull android.view.inputmethod.InlineSuggestionsRequest.Builder setPresentationSpecs(java.util.List<android.view.inline.InlinePresentationSpec>)\npublic @android.annotation.NonNull android.view.inputmethod.InlineSuggestionsRequest.Builder addPresentationSpecs(android.view.inline.InlinePresentationSpec)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setInlinePresentationSpecs(java.util.List<android.widget.inline.InlinePresentationSpec>)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setHostPackageName(java.lang.String)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setHostInputToken(android.os.IBinder)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setHostDisplayId(int)\nclass BaseBuilder extends java.lang.Object implements []") @Deprecated private void __metadata() {} diff --git a/core/java/android/widget/inline/InlineContentView.java b/core/java/android/widget/inline/InlineContentView.java new file mode 100644 index 000000000000..4f2af63626cf --- /dev/null +++ b/core/java/android/widget/inline/InlineContentView.java @@ -0,0 +1,209 @@ +/* + * 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.widget.inline; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.content.Context; +import android.graphics.PixelFormat; +import android.util.AttributeSet; +import android.view.SurfaceControl; +import android.view.SurfaceControlViewHost; +import android.view.SurfaceHolder; +import android.view.SurfaceView; +import android.view.ViewGroup; + +/** + * This class represents a view that holds opaque content from another app that + * you can inline in your UI. + * + * <p>Since the content presented by this view is from another security domain,it is + * shown on a remote surface preventing the host application from accessing that content. + * Also the host application cannot interact with the inlined content by injecting touch + * events or clicking programmatically. + * + * <p>This view can be overlaid by other windows, i.e. redressed, but if this is the case + * the inined UI would not be interactive. Sometimes this is desirable, e.g. animating + * transitions. + * + * <p>By default the surface backing this view is shown on top of the hosting window such + * that the inlined content is interactive. However, you can temporarily move the surface + * under the hosting window which could be useful in some cases, e.g. animating transitions. + * At this point the inlined content will not be interactive and the touch events would + * be delivered to your app. + * <p> + * Instances of this class are created by the platform and can be programmatically attached + * to your UI. Once you attach and detach this view it can not longer be reused and you + * should obtain a new view from the platform via the dedicated APIs. + */ +public class InlineContentView extends ViewGroup { + + /** + * Callback for observing the lifecycle of the surface control + * that manipulates the backing secure embedded UI surface. + */ + public interface SurfaceControlCallback { + /** + * Called when the backing surface is being created. + * + * @param surfaceControl The surface control to manipulate the surface. + */ + void onCreated(@NonNull SurfaceControl surfaceControl); + + /** + * Called when the backing surface is being destroyed. + * + * @param surfaceControl The surface control to manipulate the surface. + */ + void onDestroyed(@NonNull SurfaceControl surfaceControl); + } + + private final @NonNull SurfaceHolder.Callback mSurfaceCallback = new SurfaceHolder.Callback() { + @Override + public void surfaceCreated(@NonNull SurfaceHolder holder) { + mSurfaceControlCallback.onCreated(mSurfaceView.getSurfaceControl()); + } + + @Override + public void surfaceChanged(@NonNull SurfaceHolder holder, + int format, int width, int height) { + /* do nothing */ + } + + @Override + public void surfaceDestroyed(@NonNull SurfaceHolder holder) { + mSurfaceControlCallback.onDestroyed(mSurfaceView.getSurfaceControl()); + } + }; + + private final @NonNull SurfaceView mSurfaceView; + + private @Nullable SurfaceControlCallback mSurfaceControlCallback; + + /** + * @inheritDoc + * + * @hide + */ + public InlineContentView(@NonNull Context context) { + this(context, null); + } + + /** + * @inheritDoc + * + * @hide + */ + public InlineContentView(@NonNull Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + /** + * @inheritDoc + * + * @hide + */ + public InlineContentView(@NonNull Context context, @Nullable AttributeSet attrs, + int defStyleAttr) { + this(context, attrs, defStyleAttr, 0); + } + + /** + * Gets the surface control. If the surface is not created this method + * returns {@code null}. + * + * @return The surface control. + * + * @see #setSurfaceControlCallback(SurfaceControlCallback) + */ + public @Nullable SurfaceControl getSurfaceControl() { + return mSurfaceView.getSurfaceControl(); + } + + /** + * @inheritDoc + * + * @hide + */ + public InlineContentView(@NonNull Context context, @Nullable AttributeSet attrs, + int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + mSurfaceView = new SurfaceView(context, attrs, defStyleAttr, defStyleRes); + mSurfaceView.setZOrderOnTop(true); + mSurfaceView.getHolder().setFormat(PixelFormat.TRANSPARENT); + addView(mSurfaceView); + } + + /** + * Sets the embedded UI. + * @param surfacePackage The embedded UI. + * + * @hide + */ + public void setChildSurfacePackage( + @Nullable SurfaceControlViewHost.SurfacePackage surfacePackage) { + mSurfaceView.setChildSurfacePackage(surfacePackage); + } + + @Override + public void onLayout(boolean changed, int l, int t, int r, int b) { + mSurfaceView.layout(0, 0, getMeasuredWidth(), getMeasuredHeight()); + } + + /** + * Sets a callback to observe the lifecycle of the surface control for + * managing the backing surface. + * + * @param callback The callback to set or {@code null} to clear. + */ + public void setSurfaceControlCallback(@Nullable SurfaceControlCallback callback) { + if (mSurfaceControlCallback != null) { + mSurfaceView.getHolder().removeCallback(mSurfaceCallback); + } + mSurfaceControlCallback = callback; + if (mSurfaceControlCallback != null) { + mSurfaceView.getHolder().addCallback(mSurfaceCallback); + } + } + + /** + * @return Whether the surface backing this view appears on top of its parent. + * + * @see #setZOrderedOnTop(boolean) + */ + public boolean isZOrderedOnTop() { + return mSurfaceView.isZOrderedOnTop(); + } + + /** + * Controls whether the backing surface is placed on top of this view's window. + * Normally, it is placed on top of the window, to allow interaction + * with the inlined UI. Via this method, you can place the surface below the + * window. This means that all of the contents of the window this view is in + * will be visible on top of its surface. + * + * <p> The Z ordering can be changed dynamically if the backing surface is + * created, otherwise the ordering would be applied at surface construction time. + * + * @param onTop Whether to show the surface on top of this view's window. + * + * @see #isZOrderedOnTop() + */ + public boolean setZOrderedOnTop(boolean onTop) { + return mSurfaceView.setZOrderedOnTop(onTop, /*allowDynamicChange*/ true); + } +} diff --git a/core/java/android/content/pm/NamedParcelFileDescriptor.aidl b/core/java/android/widget/inline/InlinePresentationSpec.aidl index 68dd5f54654b..c76ffe0b7fe2 100644 --- a/core/java/android/content/pm/NamedParcelFileDescriptor.aidl +++ b/core/java/android/widget/inline/InlinePresentationSpec.aidl @@ -14,15 +14,6 @@ * limitations under the License. */ -package android.content.pm; +package android.widget.inline; -import android.os.ParcelFileDescriptor; - -/** - * A named ParcelFileDescriptor. - * @hide - */ -parcelable NamedParcelFileDescriptor { - @utf8InCpp String name; - ParcelFileDescriptor fd; -} +parcelable InlinePresentationSpec; diff --git a/core/java/android/widget/inline/InlinePresentationSpec.java b/core/java/android/widget/inline/InlinePresentationSpec.java new file mode 100644 index 000000000000..886790268737 --- /dev/null +++ b/core/java/android/widget/inline/InlinePresentationSpec.java @@ -0,0 +1,293 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.widget.inline; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.os.Bundle; +import android.os.Parcelable; +import android.util.Size; + +import com.android.internal.util.DataClass; + +/** + * This class represents the presentation specification by which an inline suggestion + * should abide when constructing its UI. Since suggestions are inlined in a + * host application while provided by another source, they need to be consistent + * with the host's look at feel to allow building smooth and integrated UIs. + */ +@DataClass(genEqualsHashCode = true, genToString = true, genBuilder = true) +public final class InlinePresentationSpec implements Parcelable { + + /** The minimal size of the suggestion. */ + @NonNull + private final Size mMinSize; + /** The maximal size of the suggestion. */ + @NonNull + private final Size mMaxSize; + + /** + * The extras encoding the UI style information. Defaults to {@code null} in which case the + * default system UI style will be used. + */ + @Nullable + private final Bundle mStyle; + + private static Bundle defaultStyle() { + return null; + } + + /** @hide */ + @DataClass.Suppress({"setMaxSize", "setMinSize"}) + abstract static class BaseBuilder { + } + + + + // Code below generated by codegen v1.0.15. + // + // DO NOT MODIFY! + // CHECKSTYLE:OFF Generated code + // + // To regenerate run: + // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/widget/inline/InlinePresentationSpec.java + // + // To exclude the generated code from IntelliJ auto-formatting enable (one-time): + // Settings > Editor > Code Style > Formatter Control + //@formatter:off + + + @DataClass.Generated.Member + /* package-private */ InlinePresentationSpec( + @NonNull Size minSize, + @NonNull Size maxSize, + @Nullable Bundle style) { + this.mMinSize = minSize; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mMinSize); + this.mMaxSize = maxSize; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mMaxSize); + this.mStyle = style; + + // onConstructed(); // You can define this method to get a callback + } + + /** + * The minimal size of the suggestion. + */ + @DataClass.Generated.Member + public @NonNull Size getMinSize() { + return mMinSize; + } + + /** + * The maximal size of the suggestion. + */ + @DataClass.Generated.Member + public @NonNull Size getMaxSize() { + return mMaxSize; + } + + /** + * The extras encoding the UI style information. Defaults to {@code null} in which case the + * default system UI style will be used. + */ + @DataClass.Generated.Member + public @Nullable Bundle getStyle() { + return mStyle; + } + + @Override + @DataClass.Generated.Member + public String toString() { + // You can override field toString logic by defining methods like: + // String fieldNameToString() { ... } + + return "InlinePresentationSpec { " + + "minSize = " + mMinSize + ", " + + "maxSize = " + mMaxSize + ", " + + "style = " + mStyle + + " }"; + } + + @Override + @DataClass.Generated.Member + public boolean equals(@Nullable Object o) { + // You can override field equality logic by defining either of the methods like: + // boolean fieldNameEquals(InlinePresentationSpec other) { ... } + // boolean fieldNameEquals(FieldType otherValue) { ... } + + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + @SuppressWarnings("unchecked") + InlinePresentationSpec that = (InlinePresentationSpec) o; + //noinspection PointlessBooleanExpression + return true + && java.util.Objects.equals(mMinSize, that.mMinSize) + && java.util.Objects.equals(mMaxSize, that.mMaxSize) + && java.util.Objects.equals(mStyle, that.mStyle); + } + + @Override + @DataClass.Generated.Member + public int hashCode() { + // You can override field hashCode logic by defining methods like: + // int fieldNameHashCode() { ... } + + int _hash = 1; + _hash = 31 * _hash + java.util.Objects.hashCode(mMinSize); + _hash = 31 * _hash + java.util.Objects.hashCode(mMaxSize); + _hash = 31 * _hash + java.util.Objects.hashCode(mStyle); + return _hash; + } + + @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 (mStyle != null) flg |= 0x4; + dest.writeByte(flg); + dest.writeSize(mMinSize); + dest.writeSize(mMaxSize); + if (mStyle != null) dest.writeBundle(mStyle); + } + + @Override + @DataClass.Generated.Member + public int describeContents() { return 0; } + + /** @hide */ + @SuppressWarnings({"unchecked", "RedundantCast"}) + @DataClass.Generated.Member + /* package-private */ InlinePresentationSpec(@NonNull android.os.Parcel in) { + // You can override field unparcelling by defining methods like: + // static FieldType unparcelFieldName(Parcel in) { ... } + + byte flg = in.readByte(); + Size minSize = (Size) in.readSize(); + Size maxSize = (Size) in.readSize(); + Bundle style = (flg & 0x4) == 0 ? null : in.readBundle(); + + this.mMinSize = minSize; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mMinSize); + this.mMaxSize = maxSize; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mMaxSize); + this.mStyle = style; + + // onConstructed(); // You can define this method to get a callback + } + + @DataClass.Generated.Member + public static final @NonNull Parcelable.Creator<InlinePresentationSpec> CREATOR + = new Parcelable.Creator<InlinePresentationSpec>() { + @Override + public InlinePresentationSpec[] newArray(int size) { + return new InlinePresentationSpec[size]; + } + + @Override + public InlinePresentationSpec createFromParcel(@NonNull android.os.Parcel in) { + return new InlinePresentationSpec(in); + } + }; + + /** + * A builder for {@link InlinePresentationSpec} + */ + @SuppressWarnings("WeakerAccess") + @DataClass.Generated.Member + public static final class Builder extends BaseBuilder { + + private @NonNull Size mMinSize; + private @NonNull Size mMaxSize; + private @Nullable Bundle mStyle; + + private long mBuilderFieldsSet = 0L; + + /** + * Creates a new Builder. + * + * @param minSize + * The minimal size of the suggestion. + * @param maxSize + * The maximal size of the suggestion. + */ + public Builder( + @NonNull Size minSize, + @NonNull Size maxSize) { + mMinSize = minSize; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mMinSize); + mMaxSize = maxSize; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mMaxSize); + } + + /** + * The extras encoding the UI style information. Defaults to {@code null} in which case the + * default system UI style will be used. + */ + @DataClass.Generated.Member + public @NonNull Builder setStyle(@NonNull Bundle value) { + checkNotUsed(); + mBuilderFieldsSet |= 0x4; + mStyle = value; + return this; + } + + /** Builds the instance. This builder should not be touched after calling this! */ + public @NonNull InlinePresentationSpec build() { + checkNotUsed(); + mBuilderFieldsSet |= 0x8; // Mark builder used + + if ((mBuilderFieldsSet & 0x4) == 0) { + mStyle = defaultStyle(); + } + InlinePresentationSpec o = new InlinePresentationSpec( + mMinSize, + mMaxSize, + mStyle); + return o; + } + + private void checkNotUsed() { + if ((mBuilderFieldsSet & 0x8) != 0) { + throw new IllegalStateException( + "This Builder should not be reused. Use a new Builder instance instead"); + } + } + } + + @DataClass.Generated( + time = 1585174247896L, + codegenVersion = "1.0.15", + sourceFile = "frameworks/base/core/java/android/widget/inline/InlinePresentationSpec.java", + inputSignatures = "private final @android.annotation.NonNull android.util.Size mMinSize\nprivate final @android.annotation.NonNull android.util.Size mMaxSize\nprivate final @android.annotation.Nullable android.os.Bundle mStyle\nprivate static android.os.Bundle defaultStyle()\nclass InlinePresentationSpec extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genBuilder=true)\nclass BaseBuilder extends java.lang.Object implements []") + @Deprecated + private void __metadata() {} + + + //@formatter:on + // End of generated code + +} diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java index ae9ce655ff3a..9fc0da83c504 100644 --- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java @@ -300,21 +300,7 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { private boolean rebuildTab(ResolverListAdapter activeListAdapter, boolean doPostProcessing) { UserHandle listUserHandle = activeListAdapter.getUserHandle(); - if (listUserHandle.equals(mWorkProfileUserHandle) - && mInjector.isQuietModeEnabled(mWorkProfileUserHandle)) { - DevicePolicyEventLogger - .createEvent(DevicePolicyEnums.RESOLVER_EMPTY_STATE_WORK_APPS_DISABLED) - .setStrings(getMetricsCategory()) - .write(); - showWorkProfileOffEmptyState(activeListAdapter, - v -> { - ProfileDescriptor descriptor = getItem( - userHandleToPageIndex(activeListAdapter.getUserHandle())); - showSpinner(descriptor.getEmptyStateView()); - mInjector.requestQuietModeEnabled(false, mWorkProfileUserHandle); - }); - return false; - } + if (UserHandle.myUserId() != listUserHandle.getIdentifier()) { if (!mInjector.hasCrossProfileIntents(activeListAdapter.getIntents(), UserHandle.myUserId(), listUserHandle.getIdentifier())) { @@ -352,7 +338,65 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { protected abstract void showNoWorkToPersonalIntentsEmptyState( ResolverListAdapter activeListAdapter); - void showNoAppsAvailableEmptyState(ResolverListAdapter listAdapter) { + /** + * The empty state screens are shown according to their priority: + * <ol> + * <li>(highest priority) cross-profile disabled by policy (handled in + * {@link #rebuildTab(ResolverListAdapter, boolean)})</li> + * <li>no apps available</li> + * <li>(least priority) work is off</li> + * </ol> + * + * The intention is to prevent the user from having to turn + * the work profile on if there will not be any apps resolved + * anyway. + */ + void showEmptyResolverListEmptyState(ResolverListAdapter listAdapter) { + if (maybeShowWorkProfileOffEmptyState(listAdapter)) { + return; + } + maybeShowNoAppsAvailableEmptyState(listAdapter); + } + + /** + * Returns {@code true} if the work profile off empty state screen is shown. + */ + private boolean maybeShowWorkProfileOffEmptyState(ResolverListAdapter listAdapter) { + UserHandle listUserHandle = listAdapter.getUserHandle(); + if (!listUserHandle.equals(mWorkProfileUserHandle) + || !mInjector.isQuietModeEnabled(mWorkProfileUserHandle) + || !hasResolvedAppsInWorkProfile(listAdapter)) { + return false; + } + DevicePolicyEventLogger + .createEvent(DevicePolicyEnums.RESOLVER_EMPTY_STATE_WORK_APPS_DISABLED) + .setStrings(getMetricsCategory()) + .write(); + showWorkProfileOffEmptyState(listAdapter, + v -> { + ProfileDescriptor descriptor = getItem( + userHandleToPageIndex(listAdapter.getUserHandle())); + showSpinner(descriptor.getEmptyStateView()); + mInjector.requestQuietModeEnabled(false, mWorkProfileUserHandle); + }); + return true; + } + + /** + * Returns {@code true} if there is at least one app resolved in the work profile, + * regardless of whether the work profile is enabled or not. + */ + private boolean hasResolvedAppsInWorkProfile(ResolverListAdapter listAdapter) { + List<ResolverActivity.ResolvedComponentInfo> userStateIndependentWorkResolvers = + listAdapter.mResolverListController.getUserStateIndependentResolversAsUser( + listAdapter.getIntents(), mWorkProfileUserHandle); + return userStateIndependentWorkResolvers.stream() + .anyMatch(resolvedComponentInfo -> + resolvedComponentInfo.getResolveInfoAt(0).targetUserId + == UserHandle.USER_CURRENT); + } + + private void maybeShowNoAppsAvailableEmptyState(ResolverListAdapter listAdapter) { UserHandle listUserHandle = listAdapter.getUserHandle(); if (mWorkProfileUserHandle != null && (UserHandle.myUserId() == listUserHandle.getIdentifier() @@ -387,9 +431,6 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { resetViewVisibilitiesForWorkProfileEmptyState(emptyStateView); emptyStateView.setVisibility(View.VISIBLE); - ImageView icon = emptyStateView.findViewById(R.id.resolver_empty_state_icon); - icon.setImageResource(iconRes); - TextView title = emptyStateView.findViewById(R.id.resolver_empty_state_title); title.setText(titleRes); @@ -401,9 +442,17 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { subtitle.setVisibility(View.GONE); } + ImageView icon = emptyStateView.findViewById(R.id.resolver_empty_state_icon); Button button = emptyStateView.findViewById(R.id.resolver_empty_state_button); - button.setVisibility(buttonOnClick != null ? View.VISIBLE : View.GONE); - button.setOnClickListener(buttonOnClick); + if (!getContext().getResources().getBoolean(R.bool.resolver_landscape_phone)) { + icon.setVisibility(View.VISIBLE); + icon.setImageResource(iconRes); + button.setVisibility(buttonOnClick != null ? View.VISIBLE : View.GONE); + button.setOnClickListener(buttonOnClick); + } else { + icon.setVisibility(View.GONE); + button.setVisibility(View.GONE); + } activeListAdapter.markTabLoaded(); } diff --git a/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java b/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java index c40864131a2e..51b13345a6c3 100644 --- a/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java +++ b/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java @@ -169,13 +169,41 @@ public class AccessibilityButtonChooserActivity extends Activity { private static List<AccessibilityButtonTarget> getInstalledServiceTargets( @NonNull Context context) { final List<AccessibilityButtonTarget> targets = new ArrayList<>(); - targets.addAll(getAccessibilityServiceTargets(context)); - targets.addAll(getAccessibilityActivityTargets(context)); + targets.addAll(getAccessibilityFilteredTargets(context)); targets.addAll(getWhiteListingServiceTargets(context)); return targets; } + private static List<AccessibilityButtonTarget> getAccessibilityFilteredTargets( + @NonNull Context context) { + final List<AccessibilityButtonTarget> serviceTargets = + getAccessibilityServiceTargets(context); + final List<AccessibilityButtonTarget> activityTargets = + getAccessibilityActivityTargets(context); + + for (AccessibilityButtonTarget activityTarget : activityTargets) { + serviceTargets.removeIf(serviceTarget -> { + final ComponentName serviceComponentName = + ComponentName.unflattenFromString(serviceTarget.getId()); + final ComponentName activityComponentName = + ComponentName.unflattenFromString(activityTarget.getId()); + final boolean isSamePackageName = activityComponentName.getPackageName().equals( + serviceComponentName.getPackageName()); + final boolean isSameLabel = activityTarget.getLabel().equals( + serviceTarget.getLabel()); + + return isSamePackageName && isSameLabel; + }); + } + + final List<AccessibilityButtonTarget> targets = new ArrayList<>(); + targets.addAll(serviceTargets); + targets.addAll(activityTargets); + + return targets; + } + private static List<AccessibilityButtonTarget> getAccessibilityServiceTargets( @NonNull Context context) { final AccessibilityManager ams = context.getSystemService(AccessibilityManager.class); diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index a1a434d3bc64..dca682e4ee29 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -2674,7 +2674,7 @@ public class ChooserActivity extends ResolverActivity implements */ private boolean shouldShowStickyContentPreview() { return shouldShowStickyContentPreviewNoOrientationCheck() - && getResources().getBoolean(R.bool.sharesheet_show_content_preview); + && !getResources().getBoolean(R.bool.resolver_landscape_phone); } private boolean shouldShowStickyContentPreviewNoOrientationCheck() { diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 2352180bcba3..f088ab38658c 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -994,8 +994,8 @@ public class ResolverActivity extends Activity implements if (isAutolaunching() || maybeAutolaunchActivity()) { return; } - if (shouldShowEmptyState(listAdapter)) { - mMultiProfilePagerAdapter.showNoAppsAvailableEmptyState(listAdapter); + if (isResolverListEmpty(listAdapter)) { + mMultiProfilePagerAdapter.showEmptyResolverListEmptyState(listAdapter); } else { mMultiProfilePagerAdapter.showListView(listAdapter); } @@ -1640,12 +1640,12 @@ public class ResolverActivity extends Activity implements private void setupViewVisibilities() { ResolverListAdapter activeListAdapter = mMultiProfilePagerAdapter.getActiveListAdapter(); - if (!shouldShowEmptyState(activeListAdapter)) { + if (!isResolverListEmpty(activeListAdapter)) { addUseDifferentAppLabelIfNecessary(activeListAdapter); } } - private boolean shouldShowEmptyState(ResolverListAdapter listAdapter) { + private boolean isResolverListEmpty(ResolverListAdapter listAdapter) { int count = listAdapter.getUnfilteredCount(); return count == 0 && listAdapter.getPlaceholderCount() == 0; } diff --git a/core/java/com/android/internal/app/ResolverListController.java b/core/java/com/android/internal/app/ResolverListController.java index 51dce5547890..3f897a5f26bf 100644 --- a/core/java/com/android/internal/app/ResolverListController.java +++ b/core/java/com/android/internal/app/ResolverListController.java @@ -120,12 +120,32 @@ public class ResolverListController { boolean shouldGetActivityMetadata, List<Intent> intents, UserHandle userHandle) { + int baseFlags = PackageManager.MATCH_DEFAULT_ONLY + | (shouldGetResolvedFilter ? PackageManager.GET_RESOLVED_FILTER : 0) + | (shouldGetActivityMetadata ? PackageManager.GET_META_DATA : 0); + return getResolversForIntentAsUserInternal(intents, userHandle, baseFlags); + } + + /** + * Returns a list of resolved intents which is user state-independent. This means it will + * return the same results regardless of whether the {@code userHandle} user is disabled or not. + */ + public List<ResolverActivity.ResolvedComponentInfo> getUserStateIndependentResolversAsUser( + List<Intent> intents, + UserHandle userHandle) { + int baseFlags = PackageManager.MATCH_DIRECT_BOOT_AWARE + | PackageManager.MATCH_DIRECT_BOOT_UNAWARE; + return getResolversForIntentAsUserInternal(intents, userHandle, baseFlags); + } + + private List<ResolverActivity.ResolvedComponentInfo> getResolversForIntentAsUserInternal( + List<Intent> intents, + UserHandle userHandle, + int baseFlags) { List<ResolverActivity.ResolvedComponentInfo> resolvedComponents = null; for (int i = 0, N = intents.size(); i < N; i++) { final Intent intent = intents.get(i); - int flags = PackageManager.MATCH_DEFAULT_ONLY - | (shouldGetResolvedFilter ? PackageManager.GET_RESOLVED_FILTER : 0) - | (shouldGetActivityMetadata ? PackageManager.GET_META_DATA : 0); + int flags = baseFlags; if (intent.isWebIntent() || (intent.getFlags() & Intent.FLAG_ACTIVITY_MATCH_EXTERNAL) != 0) { flags |= PackageManager.MATCH_INSTANT; diff --git a/core/java/com/android/internal/net/VpnProfile.java b/core/java/com/android/internal/net/VpnProfile.java index 23b1ab52cb21..829bd8a5a2a7 100644 --- a/core/java/com/android/internal/net/VpnProfile.java +++ b/core/java/com/android/internal/net/VpnProfile.java @@ -19,6 +19,7 @@ package com.android.internal.net; import android.annotation.NonNull; import android.compat.annotation.UnsupportedAppUsage; import android.net.Ikev2VpnProfile; +import android.net.PlatformVpnProfile; import android.net.ProxyInfo; import android.os.Build; import android.os.Parcel; @@ -131,10 +132,10 @@ public final class VpnProfile implements Cloneable, Parcelable { * delimiters) are not present in the algorithm names. See {@link #validateAllowedAlgorithms()} */ private List<String> mAllowedAlgorithms = new ArrayList<>(); // 19 - public boolean isBypassable = false; // 20 - public boolean isMetered = false; // 21 - public int maxMtu = 1400; // 22 - public boolean areAuthParamsInline = false; // 23 + public boolean isBypassable = false; // 20 + public boolean isMetered = false; // 21 + public int maxMtu = PlatformVpnProfile.MAX_MTU_DEFAULT; // 22 + public boolean areAuthParamsInline = false; // 23 // Helper fields. @UnsupportedAppUsage diff --git a/core/java/com/android/internal/policy/DecorContext.java b/core/java/com/android/internal/policy/DecorContext.java index 99b4b5fb7707..f00776897f2c 100644 --- a/core/java/com/android/internal/policy/DecorContext.java +++ b/core/java/com/android/internal/policy/DecorContext.java @@ -41,17 +41,17 @@ import java.lang.ref.WeakReference; public class DecorContext extends ContextThemeWrapper { private PhoneWindow mPhoneWindow; private WindowManager mWindowManager; - private Resources mActivityResources; + private Resources mResources; private ContentCaptureManager mContentCaptureManager; - private WeakReference<Context> mActivityContext; + private WeakReference<Context> mContext; // TODO(b/149928768): Non-activity context can be passed. @VisibleForTesting - public DecorContext(Context context, Context activityContext) { - super(context.createDisplayContext(activityContext.getDisplayNoVerify()), null); - mActivityContext = new WeakReference<>(activityContext); - mActivityResources = activityContext.getResources(); + public DecorContext(Context baseContext, Context context) { + super(baseContext.createDisplayContext(context.getDisplayNoVerify()), null); + mContext = new WeakReference<>(context); + mResources = context.getResources(); } void setPhoneWindow(PhoneWindow phoneWindow) { @@ -61,58 +61,56 @@ public class DecorContext extends ContextThemeWrapper { @Override public Object getSystemService(String name) { + final Context context = mContext.get(); if (Context.WINDOW_SERVICE.equals(name)) { - if (mWindowManager == null) { - WindowManagerImpl wm = - (WindowManagerImpl) super.getSystemService(Context.WINDOW_SERVICE); + if (context != null && mWindowManager == null) { + WindowManagerImpl wm = (WindowManagerImpl) context.getSystemService(name); mWindowManager = wm.createLocalWindowManager(mPhoneWindow); } return mWindowManager; } if (Context.CONTENT_CAPTURE_MANAGER_SERVICE.equals(name)) { - if (mContentCaptureManager == null) { - Context activityContext = mActivityContext.get(); - if (activityContext != null) { - mContentCaptureManager = (ContentCaptureManager) activityContext - .getSystemService(name); - } + if (context != null && mContentCaptureManager == null) { + mContentCaptureManager = (ContentCaptureManager) context.getSystemService(name); } return mContentCaptureManager; } - return super.getSystemService(name); + // LayoutInflater and WallpaperManagerService should also be obtained from context + // instead of application context. + return (context != null) ? context.getSystemService(name) : super.getSystemService(name); } @Override public Resources getResources() { - Context activityContext = mActivityContext.get(); + Context context = mContext.get(); // Attempt to update the local cached Resources from the activity context. If the activity // is no longer around, return the old cached values. - if (activityContext != null) { - mActivityResources = activityContext.getResources(); + if (context != null) { + mResources = context.getResources(); } - return mActivityResources; + return mResources; } @Override public AssetManager getAssets() { - return mActivityResources.getAssets(); + return mResources.getAssets(); } @Override public AutofillOptions getAutofillOptions() { - Context activityContext = mActivityContext.get(); - if (activityContext != null) { - return activityContext.getAutofillOptions(); + Context context = mContext.get(); + if (context != null) { + return context.getAutofillOptions(); } return null; } @Override public ContentCaptureOptions getContentCaptureOptions() { - Context activityContext = mActivityContext.get(); - if (activityContext != null) { - return activityContext.getContentCaptureOptions(); + Context context = mContext.get(); + if (context != null) { + return context.getContentCaptureOptions(); } return null; } diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java index 51b73fc674e7..71cf5cad316e 100644 --- a/core/java/com/android/internal/policy/DecorView.java +++ b/core/java/com/android/internal/policy/DecorView.java @@ -78,7 +78,6 @@ import android.view.ContextThemeWrapper; import android.view.Gravity; import android.view.InputQueue; import android.view.InsetsState; -import android.view.InsetsController; import android.view.InsetsState.InternalInsetsType; import android.view.KeyEvent; import android.view.KeyboardShortcutGroup; @@ -121,6 +120,7 @@ import com.android.internal.widget.DecorCaptionView; import com.android.internal.widget.FloatingToolbar; import java.util.List; +import java.util.function.Function; /** @hide */ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, WindowCallbacks { @@ -1102,7 +1102,6 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind int sysUiVisibility = attrs.systemUiVisibility | getWindowSystemUiVisibility(); final WindowInsetsController controller = getWindowInsetsController(); - final InsetsState state = controller != null ? controller.getState() : null; // IME is an exceptional floating window that requires color view. final boolean isImeWindow = @@ -1152,7 +1151,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind calculateNavigationBarColor(), mWindow.mNavigationBarDividerColor, navBarSize, navBarToRightEdge || navBarToLeftEdge, navBarToLeftEdge, 0 /* sideInset */, animate && !disallowAnimate, - mForceWindowDrawsBarBackgrounds, state); + mForceWindowDrawsBarBackgrounds, controller); boolean oldDrawLegacy = mDrawLegacyNavigationBarBackground; mDrawLegacyNavigationBarBackground = mNavigationColorViewState.visible && (mWindow.getAttributes().flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) == 0; @@ -1173,7 +1172,13 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind calculateStatusBarColor(), 0, mLastTopInset, false /* matchVertical */, statusBarNeedsLeftInset, statusBarSideInset, animate && !disallowAnimate, - mForceWindowDrawsBarBackgrounds, state); + mForceWindowDrawsBarBackgrounds, controller); + + if (mHasCaption) { + final int captionColor = calculateStatusBarColor(); + mDecorCaptionView.getCaption().setBackgroundColor(captionColor); + updateDecorCaptionShade(); + } } // When we expand the window with FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS or @@ -1188,7 +1193,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind // SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION to indicate whether the app wants to handle it by // themselves. boolean hideNavigation = (sysUiVisibility & SYSTEM_UI_FLAG_HIDE_NAVIGATION) != 0 - || !(state == null || state.getSource(ITYPE_NAVIGATION_BAR).isVisible()); + || !(controller == null || controller.isRequestedVisible(ITYPE_NAVIGATION_BAR)); boolean forceConsumingNavBar = (mForceWindowDrawsBarBackgrounds && (attrs.flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) == 0 && (sysUiVisibility & SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) == 0 @@ -1209,7 +1214,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind // fullscreen, as othrewise we can expect the app to handle it. boolean fullscreen = (sysUiVisibility & SYSTEM_UI_FLAG_FULLSCREEN) != 0 || (attrs.flags & FLAG_FULLSCREEN) != 0 - || !(state == null || state.getSource(ITYPE_STATUS_BAR).isVisible()); + || !(controller == null || controller.isRequestedVisible(ITYPE_STATUS_BAR)); boolean consumingStatusBar = (sysUiVisibility & SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN) == 0 && (attrs.flags & FLAG_LAYOUT_IN_SCREEN) == 0 && (attrs.flags & FLAG_LAYOUT_INSET_DECOR) == 0 @@ -1349,13 +1354,15 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind */ private void updateColorViewInt(final ColorViewState state, int sysUiVis, int color, int dividerColor, int size, boolean verticalBar, boolean seascape, int sideMargin, - boolean animate, boolean force, InsetsState insetsState) { + boolean animate, boolean force, WindowInsetsController controller) { state.present = ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL ? state.attributes.isPresent(sysUiVis, mWindow.getAttributes().flags, force) - : state.attributes.isPresent(insetsState, mWindow.getAttributes().flags, force); + : state.attributes.isPresent( + controller.isRequestedVisible(state.attributes.insetsType), + mWindow.getAttributes().flags, force); boolean show = state.attributes.isVisible(state.present, color, mWindow.getAttributes().flags, force); - boolean showView = show && !isResizing() && size > 0; + boolean showView = show && !isResizing() && !mHasCaption && size > 0; boolean visibilityChanged = false; View view = state.view; @@ -2021,6 +2028,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind if (getForeground() != null) { drawableChanged(); } + getWindowInsetsController().setCaptionInsetsHeight(getCaptionInsetsHeight()); } } @@ -2094,6 +2102,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind mDecorCaptionView.onConfigurationChanged(displayWindowDecor); enableCaption(displayWindowDecor); } + getWindowInsetsController().setCaptionInsetsHeight(getCaptionInsetsHeight()); } void onResourcesLoaded(LayoutInflater inflater, int layoutResource) { @@ -2182,11 +2191,11 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind inflater = inflater.from(context); final DecorCaptionView view = (DecorCaptionView) inflater.inflate(R.layout.decor_caption, null); - setDecorCaptionShade(context, view); + setDecorCaptionShade(view); return view; } - private void setDecorCaptionShade(Context context, DecorCaptionView view) { + private void setDecorCaptionShade(DecorCaptionView view) { final int shade = mWindow.getDecorCaptionShade(); switch (shade) { case DECOR_CAPTION_SHADE_LIGHT: @@ -2196,15 +2205,10 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind setDarkDecorCaptionShade(view); break; default: { - TypedValue value = new TypedValue(); - context.getTheme().resolveAttribute(R.attr.colorPrimary, value, true); - // We invert the shade depending on brightness of the theme. Dark shade for light - // theme and vice versa. Thanks to this the buttons should be visible on the - // background. - if (Color.luminance(value.data) < 0.5) { - setLightDecorCaptionShade(view); - } else { + if ((getWindowSystemUiVisibility() & SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) != 0) { setDarkDecorCaptionShade(view); + } else { + setLightDecorCaptionShade(view); } break; } @@ -2213,7 +2217,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind void updateDecorCaptionShade() { if (mDecorCaptionView != null) { - setDecorCaptionShade(getContext(), mDecorCaptionView); + setDecorCaptionShade(mDecorCaptionView); } } @@ -2484,6 +2488,15 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind } /** + * @hide + * @return the height of insets covering the top of window content area. + */ + public int getCaptionInsetsHeight() { + if (!mWindow.isOverlayWithDecorCaptionEnabled()) return 0; + return getCaptionHeight(); + } + + /** * Converts a DIP measure into physical pixels. * @param dip The dip value. * @return Returns the number of pixels. @@ -2613,8 +2626,8 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind || force); } - public boolean isPresent(InsetsState state, int windowFlags, boolean force) { - return (state == null || state.getSource(insetsType).isVisible()) + public boolean isPresent(boolean requestedVisible, int windowFlags, boolean force) { + return requestedVisible && ((windowFlags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0 || force); } @@ -2631,7 +2644,8 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind } public boolean isVisible(InsetsState state, int color, int windowFlags, boolean force) { - final boolean present = isPresent(state, windowFlags, force); + final boolean present = isPresent(state.getSource(insetsType).isVisible(), windowFlags, + force); return isVisible(present, color, windowFlags, force); } } diff --git a/core/java/com/android/internal/view/menu/MenuPopupHelper.java b/core/java/com/android/internal/view/menu/MenuPopupHelper.java index 0aeaa47ba3d8..980943ebea5a 100644 --- a/core/java/com/android/internal/view/menu/MenuPopupHelper.java +++ b/core/java/com/android/internal/view/menu/MenuPopupHelper.java @@ -22,14 +22,10 @@ import android.annotation.Nullable; import android.annotation.StyleRes; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; -import android.graphics.Point; import android.graphics.Rect; -import android.util.Size; -import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.WindowManager; -import android.view.WindowMetrics; import android.widget.PopupWindow.OnDismissListener; import com.android.internal.view.menu.MenuPresenter.Callback; @@ -227,9 +223,9 @@ public class MenuPopupHelper implements MenuHelper { @NonNull private MenuPopup createPopup() { final WindowManager windowManager = mContext.getSystemService(WindowManager.class); - final Size maxWindowSize = windowManager.getMaximumWindowMetrics().getSize(); + final Rect maxWindowBounds = windowManager.getMaximumWindowMetrics().getBounds(); - final int smallestWidth = Math.min(maxWindowSize.getWidth(), maxWindowSize.getHeight()); + final int smallestWidth = Math.min(maxWindowBounds.width(), maxWindowBounds.height()); final int minSmallestWidthCascading = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.cascading_menus_min_smallest_width); final boolean enableCascadingSubmenus = smallestWidth >= minSmallestWidthCascading; diff --git a/core/java/com/android/internal/widget/DecorCaptionView.java b/core/java/com/android/internal/widget/DecorCaptionView.java index b5d787c24fbd..7a01024ffc36 100644 --- a/core/java/com/android/internal/widget/DecorCaptionView.java +++ b/core/java/com/android/internal/widget/DecorCaptionView.java @@ -17,7 +17,6 @@ package com.android.internal.widget; import android.content.Context; -import android.graphics.Color; import android.graphics.Rect; import android.os.RemoteException; import android.util.AttributeSet; @@ -53,8 +52,7 @@ import java.util.ArrayList; * <li>..</li> * </ul> * - * Although this ViewGroup has only two direct sub-Views, its behavior is more complex due to - * overlaying caption on the content and drawing. + * Here describe the behavior of overlaying caption on the content and drawing. * * First, no matter where the content View gets added, it will always be the first child and the * caption will be the second. This way the caption will always be drawn on top of the content when @@ -66,11 +64,9 @@ import java.util.ArrayList; * <li>DecorCaptionView.onInterceptTouchEvent() will try intercepting the touch events if the * down action is performed on top close or maximize buttons; the reason for that is we want these * buttons to always work.</li> - * <li>The content View will receive the touch event. Mind that content is actually underneath the - * caption, so we need to introduce our own dispatch ordering. We achieve this by overriding - * {@link #buildTouchDispatchChildList()}.</li> - * <li>If the touch event is not consumed by the content View, it will go to the caption View - * and the dragging logic will be executed.</li> + * <li>The caption view will try to consume the event to apply the dragging logic.</li> + * <li>If the touch event is not consumed by the caption, the content View will receive the touch + * event</li> * </ul> */ public class DecorCaptionView extends ViewGroup implements View.OnTouchListener, @@ -137,11 +133,6 @@ public class DecorCaptionView extends ViewGroup implements View.OnTouchListener, mOwner = owner; mShow = show; mOverlayWithAppContent = owner.isOverlayWithDecorCaptionEnabled(); - if (mOverlayWithAppContent) { - // The caption is covering the content, so we make its background transparent to make - // the content visible. - mCaption.setBackgroundColor(Color.TRANSPARENT); - } updateCaptionVisibility(); // By changing the outline provider to BOUNDS, the window can remove its // background without removing the shadow. @@ -236,18 +227,6 @@ public class DecorCaptionView extends ViewGroup implements View.OnTouchListener, } @Override - public ArrayList<View> buildTouchDispatchChildList() { - mTouchDispatchList.ensureCapacity(3); - if (mCaption != null) { - mTouchDispatchList.add(mCaption); - } - if (mContent != null) { - mTouchDispatchList.add(mContent); - } - return mTouchDispatchList; - } - - @Override public boolean shouldDelayChildPressedState() { return false; } diff --git a/core/jni/android_media_AudioProductStrategies.cpp b/core/jni/android_media_AudioProductStrategies.cpp index 17a02b24c697..34be2a52344d 100644 --- a/core/jni/android_media_AudioProductStrategies.cpp +++ b/core/jni/android_media_AudioProductStrategies.cpp @@ -85,10 +85,23 @@ static jint convertAudioProductStrategiesFromNative( jStrategyId = static_cast<jint>(strategy.getId()); // Audio Attributes Group array - std::map<int, std::vector<AudioAttributes> > groups; + int attrGroupIndex = 0; + std::map<int /**attributesGroupIndex*/, std::vector<AudioAttributes> > groups; for (const auto &attr : strategy.getAudioAttributes()) { - int attrGroupId = attr.getGroupId(); - groups[attrGroupId].push_back(attr); + int groupId = attr.getGroupId(); + int streamType = attr.getStreamType(); + const auto &iter = std::find_if(begin(groups), end(groups), + [groupId, streamType](const auto &iter) { + const auto &frontAttr = iter.second.front(); + return frontAttr.getGroupId() == groupId && frontAttr.getStreamType() == streamType; + }); + // Same Volume Group Id and same stream type + if (iter != end(groups)) { + groups[iter->first].push_back(attr); + } else { + // Add a new Group of AudioAttributes for this product strategy + groups[attrGroupIndex++].push_back(attr); + } } numAttributesGroups = groups.size(); @@ -97,7 +110,7 @@ static jint convertAudioProductStrategiesFromNative( for (const auto &iter : groups) { std::vector<AudioAttributes> audioAttributesGroups = iter.second; jint numAttributes = audioAttributesGroups.size(); - jint jGroupId = iter.first; + jint jGroupId = audioAttributesGroups.front().getGroupId(); jint jLegacyStreamType = audioAttributesGroups.front().getStreamType(); jStatus = JNIAudioAttributeHelper::getJavaArray(env, &jAudioAttributes, numAttributes); diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp index ab3cf30578e9..c5a45882ecea 100644 --- a/core/jni/android_media_AudioSystem.cpp +++ b/core/jni/android_media_AudioSystem.cpp @@ -2266,6 +2266,11 @@ android_media_AudioSystem_setA11yServicesUids(JNIEnv *env, jobject thiz, jintArr return (jint)nativeToJavaStatus(status); } +static jint android_media_AudioSystem_setCurrentImeUid(JNIEnv *env, jobject thiz, jint uid) { + status_t status = AudioSystem::setCurrentImeUid(uid); + return (jint)nativeToJavaStatus(status); +} + static jboolean android_media_AudioSystem_isHapticPlaybackSupported(JNIEnv *env, jobject thiz) { @@ -2527,7 +2532,8 @@ static const JNINativeMethod gMethods[] = {"setUserIdDeviceAffinities", "(I[I[Ljava/lang/String;)I", (void *)android_media_AudioSystem_setUserIdDeviceAffinities}, {"removeUserIdDeviceAffinities", "(I)I", - (void *)android_media_AudioSystem_removeUserIdDeviceAffinities}}; + (void *)android_media_AudioSystem_removeUserIdDeviceAffinities}, + {"setCurrentImeUid", "(I)I", (void *)android_media_AudioSystem_setCurrentImeUid}}; static const JNINativeMethod gEventHandlerMethods[] = { {"native_setup", diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp index cb5a332c6e85..bf3fc5704739 100644 --- a/core/jni/android_util_AssetManager.cpp +++ b/core/jni/android_util_AssetManager.cpp @@ -214,12 +214,8 @@ static jint CopyValue(JNIEnv* env, ApkAssetsCookie cookie, const Res_value& valu // ---------------------------------------------------------------------------- -static std::unique_ptr<DynamicLibManager> sDynamicLibManager = - std::make_unique<DynamicLibManager>(); - // Let the opaque type AAssetManager refer to a guarded AssetManager2 instance. struct GuardedAssetManager : public ::AAssetManager { - GuardedAssetManager() : guarded_assetmanager(sDynamicLibManager.get()) {} Guarded<AssetManager2> guarded_assetmanager; }; diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp index b32b4aeedecb..0c74387c1a2e 100644 --- a/core/jni/android_util_Process.cpp +++ b/core/jni/android_util_Process.cpp @@ -1330,7 +1330,7 @@ static inline int sys_pidfd_open(pid_t pid, unsigned int flags) { return syscall(__NR_pidfd_open, pid, flags); } -static jboolean android_os_Process_nativePidFdOpen(JNIEnv* env, jobject, jint pid, jint flags) { +static jint android_os_Process_nativePidFdOpen(JNIEnv* env, jobject, jint pid, jint flags) { int fd = sys_pidfd_open(pid, flags); if (fd < 0) { throwErrnoException(env, "nativePidFdOpen", errno); diff --git a/core/proto/android/app/enums.proto b/core/proto/android/app/enums.proto index 42437d5b44a0..563ef145b79c 100644 --- a/core/proto/android/app/enums.proto +++ b/core/proto/android/app/enums.proto @@ -203,9 +203,7 @@ enum AppOpEnum { APP_OP_INTERACT_ACROSS_PROFILES = 93; APP_OP_ACTIVATE_PLATFORM_VPN = 94; APP_OP_LOADER_USAGE_STATS = 95; - APP_OP_ACCESS_CALL_AUDIO = 96; + APP_OP_DEPRECATED_1 = 96 [deprecated = true]; APP_OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED = 97; APP_OP_AUTO_REVOKE_MANAGED_BY_INSTALLER = 98; } - - diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto index a3313b21131d..075aa97edb58 100644 --- a/core/proto/android/providers/settings/secure.proto +++ b/core/proto/android/providers/settings/secure.proto @@ -77,7 +77,7 @@ message SecureSettingsProto { optional SettingProto interactive_ui_timeout_ms = 33 [ (android.privacy).dest = DEST_AUTOMATIC ]; // Settings for magnification mode optional SettingProto accessibility_magnification_mode = 34 [ (android.privacy).dest = DEST_AUTOMATIC ]; - optional SettingProto button_long_press_targets = 35 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto button_targets = 35 [ (android.privacy).dest = DEST_AUTOMATIC ]; } optional Accessibility accessibility = 2; @@ -180,6 +180,14 @@ message SecureSettingsProto { optional SettingProto cmas_additional_broadcast_pkg = 14 [ (android.privacy).dest = DEST_AUTOMATIC ]; repeated SettingProto completed_categories = 15; optional SettingProto connectivity_release_pending_intent_delay_ms = 16 [ (android.privacy).dest = DEST_AUTOMATIC ]; + + message Controls { + option (android.msg_privacy).dest = DEST_EXPLICIT; + + optional SettingProto enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ]; + } + optional Controls controls = 79; + optional SettingProto device_paired = 17 [ (android.privacy).dest = DEST_AUTOMATIC ]; optional SettingProto dialer_default_application = 18 [ (android.privacy).dest = DEST_AUTOMATIC ]; optional SettingProto display_density_forced = 19 [ (android.privacy).dest = DEST_AUTOMATIC ]; @@ -580,5 +588,5 @@ message SecureSettingsProto { // Please insert fields in alphabetical order and group them into messages // if possible (to avoid reaching the method limit). - // Next tag = 79; + // Next tag = 80; } diff --git a/core/proto/android/stats/dnsresolver/dns_resolver.proto b/core/proto/android/stats/dnsresolver/dns_resolver.proto index 9eaabfbca463..76f8f0febf59 100644 --- a/core/proto/android/stats/dnsresolver/dns_resolver.proto +++ b/core/proto/android/stats/dnsresolver/dns_resolver.proto @@ -43,6 +43,7 @@ enum ReturnCode { RC_EAI_BADHINTS = 12; RC_EAI_PROTOCOL = 13; RC_EAI_OVERFLOW = 14; + RC_RESOLV_INTERNAL_ERROR = 254; RC_RESOLV_TIMEOUT = 255; RC_EAI_MAX = 256; } @@ -189,6 +190,144 @@ enum CacheStatus{ CS_SKIP = 3; } +// The enum LinuxErrno is defined in the following 2 files. +// 1. bionic/libc/kernel/uapi/asm-generic/errno-base.h +// 2. bionic/libc/kernel/uapi/asm-generic/errno.h +enum LinuxErrno { + SYS_UNKNOWN = 0; + SYS_EPERM = 1; // Not super-user + SYS_ENOENT = 2; // No such file or directory + SYS_ESRCH = 3; // No such process + SYS_EINTR = 4; // Interrupted system call + SYS_EIO = 5; // I/O error + SYS_ENXIO = 6; // No such device or address + SYS_E2BIG = 7; // Arg list too long + SYS_ENOEXEC = 8; // Exec format error + SYS_EBADF = 9; // Bad file number + SYS_ECHILD = 10; // No children + SYS_EAGAIN = 11; // No more processes + SYS_ENOMEM = 12; // Not enough core + SYS_EACCES = 13; // Permission denied + SYS_EFAULT = 14; // Bad address + SYS_ENOTBLK = 15; // Block device required + SYS_EBUSY = 16; // Mount device busy + SYS_EEXIST = 17; // File exists + SYS_EXDEV = 18; // Cross-device link + SYS_ENODEV = 19; // No such device + SYS_ENOTDIR = 20; // Not a directory + SYS_EISDIR = 21; // Is a directory + SYS_EINVAL = 22; // Invalid argument + SYS_ENFILE = 23; // Too many open files in system + SYS_EMFILE = 24; // Too many open files + SYS_ENOTTY = 25; // Not a typewriter + SYS_ETXTBSY = 26; // Text file busy + SYS_EFBIG = 27; // File too large + SYS_ENOSPC = 28; // No space left on device + SYS_ESPIPE = 29; // Illegal seek + SYS_EROFS = 30; // Read only file system + SYS_EMLINK = 31; // Too many links + SYS_EPIPE = 32; // Broken pipe + SYS_EDOM = 33; // Math arg out of domain of func + SYS_ERANGE = 34; // Math result not representable + SYS_EDEADLOCK = 35; // File locking deadlock error + SYS_ENAMETOOLONG = 36; // File or path name too long + SYS_ENOLCK = 37; // No record locks available + SYS_ENOSYS = 38; // Function not implemented + SYS_ENOTEMPTY = 39; // Directory not empty + SYS_ELOOP = 40; // Too many symbolic links + SYS_ENOMSG = 42; // No message of desired type + SYS_EIDRM = 43; // Identifier removed + SYS_ECHRNG = 44; // Channel number out of range + SYS_EL2NSYNC = 45; // Level 2 not synchronized + SYS_EL3HLT = 46; // Level 3 halted + SYS_EL3RST = 47; // Level 3 reset + SYS_ELNRNG = 48; // Link number out of range + SYS_EUNATCH = 49; // rotocol driver not attached + SYS_ENOCSI = 50; // No CSI structure available + SYS_EL2HLT = 51; // Level 2 halted + SYS_EBADE = 52; // Invalid exchange + SYS_EBADR = 53; // Invalid request descriptor + SYS_EXFULL = 54; // Exchange full + SYS_ENOANO = 55; // No anode + SYS_EBADRQC = 56; // Invalid request code + SYS_EBADSLT = 57; // Invalid slot + SYS_EBFONT = 59; // Bad font file fmt + SYS_ENOSTR = 60; // Device not a stream + SYS_ENODATA = 61; // No data (for no delay io) + SYS_ETIME = 62; // Timer expired + SYS_ENOSR = 63; // Out of streams resources + SYS_ENONET = 64; // Machine is not on the network + SYS_ENOPKG = 65; // Package not installed + SYS_EREMOTE = 66; // The object is remote + SYS_ENOLINK = 67; // The link has been severed + SYS_EADV = 68; // Advertise error + SYS_ESRMNT = 69; // Srmount error + SYS_ECOMM = 70; // Communication error on send + SYS_EPROTO = 71; // Protocol error + SYS_EMULTIHOP = 72; // Multihop attempted + SYS_EDOTDOT = 73; // Cross mount point (not really error) + SYS_EBADMSG = 74; // Trying to read unreadable message + SYS_EOVERFLOW = 75; // Value too large for defined data type + SYS_ENOTUNIQ = 76; // Given log. name not unique + SYS_EBADFD = 77; // f.d. invalid for this operation + SYS_EREMCHG = 78; // Remote address changed + SYS_ELIBACC = 79; // Can't access a needed shared lib + SYS_ELIBBAD = 80; // Accessing a corrupted shared lib + SYS_ELIBSCN = 81; // .lib section in a.out corrupted + SYS_ELIBMAX = 82; // Attempting to link in too many libs + SYS_ELIBEXEC = 83; // Attempting to exec a shared library + SYS_EILSEQ = 84; + SYS_ERESTART = 85; + SYS_ESTRPIPE = 86; + SYS_EUSERS = 87; + SYS_ENOTSOCK = 88; // Socket operation on non-socket + SYS_EDESTADDRREQ = 89; // Destination address required + SYS_EMSGSIZE = 90; // Message too long + SYS_EPROTOTYPE = 91; // Protocol wrong type for socket + SYS_ENOPROTOOPT = 92; // Protocol not available + SYS_EPROTONOSUPPORT = 93; // Unknown protocol + SYS_ESOCKTNOSUPPORT = 94; // Socket type not supported + SYS_EOPNOTSUPP = 95; // Operation not supported on transport endpoint + SYS_EPFNOSUPPORT = 96; // Protocol family not supported + SYS_EAFNOSUPPORT = 97; // Address family not supported by protocol family + SYS_EADDRINUSE = 98; // Address already in use + SYS_EADDRNOTAVAIL = 99; // Address not available + SYS_ENETDOWN = 100; // Network interface is not configured + SYS_ENETUNREACH = 101; // Network is unreachable + SYS_ENETRESET = 102; + SYS_ECONNABORTED = 103; // Connection aborted + SYS_ECONNRESET = 104; // Connection reset by peer + SYS_ENOBUFS = 105; // No buffer space available + SYS_EISCONN = 106; // Socket is already connected + SYS_ENOTCONN = 107; // Socket is not connected + SYS_ESHUTDOWN = 108; // Can't send after socket shutdown + SYS_ETOOMANYREFS = 109; + SYS_ETIMEDOUT = 110; // Connection timed out + SYS_ECONNREFUSED = 111; // Connection refused + SYS_EHOSTDOWN = 112; // Host is down + SYS_EHOSTUNREACH = 113; // Host is unreachable + SYS_EALREADY = 114; // Socket already connected + SYS_EINPROGRESS = 115; // Connection already in progress + SYS_ESTALE = 116; + SYS_EUCLEAN = 117; + SYS_ENOTNAM = 118; + SYS_ENAVAIL = 119; + SYS_EISNAM = 120; + SYS_EREMOTEIO = 121; + SYS_EDQUOT = 122; + SYS_ENOMEDIUM = 123; // No medium (in tape drive) + SYS_EMEDIUMTYPE = 124; + SYS_ECANCELED = 125; + SYS_ENOKEY = 126; + SYS_EKEYEXPIRED = 127; + SYS_EKEYREVOKED = 128; + SYS_EKEYREJECTED = 129; + SYS_EOWNERDEAD = 130; + SYS_ENOTRECOVERABLE = 131; + SYS_ERFKILL = 132; + SYS_EHWPOISON = 133; +} + message DnsQueryEvent { optional android.stats.dnsresolver.NsRcode rcode = 1; @@ -210,6 +349,8 @@ message DnsQueryEvent { optional bool connected = 8; optional int32 latency_micros = 9; + + optional android.stats.dnsresolver.LinuxErrno linux_errno = 10; } message DnsQueryEvents { diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 84d9ce288069..eae614546dfb 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -1213,15 +1213,6 @@ android:description="@string/permdesc_acceptHandovers" android:protectionLevel="dangerous" /> - <!-- Allows an application assigned to the Dialer role to be granted access to the telephony - call audio streams, both TX and RX. - <p>Protection level: signature|appop - --> - <permission android:name="android.permission.ACCESS_CALL_AUDIO" - android.label="@string/permlab_accessCallAudio" - android:description="@string/permdesc_accessCallAudio" - android:protectionLevel="signature|appop" /> - <!-- ====================================================================== --> <!-- Permissions for accessing the device microphone --> <!-- ====================================================================== --> @@ -3654,6 +3645,16 @@ <permission android:name="com.android.permission.INSTALL_EXISTING_PACKAGES" android:protectionLevel="signature|privileged" /> + <!-- Allows an application to use the package installer v2 APIs. + <p>The package installer v2 APIs are still a work in progress and we're + currently validating they work in all scenarios. + <p>Not for use by third-party applications. + TODO(b/152310230): remove this permission once the APIs are confirmed to be sufficient. + @hide + --> + <permission android:name="com.android.permission.USE_INSTALLER_V2" + android:protectionLevel="signature|verifier" /> + <!-- @SystemApi @TestApi Allows an application to clear user data. <p>Not for use by third-party applications @hide diff --git a/core/res/res/layout/resolver_empty_states.xml b/core/res/res/layout/resolver_empty_states.xml index 210feaf092a7..c7e1a21aa642 100644 --- a/core/res/res/layout/resolver_empty_states.xml +++ b/core/res/res/layout/resolver_empty_states.xml @@ -22,11 +22,11 @@ android:orientation="vertical" android:gravity="center_horizontal" android:visibility="gone" + android:paddingTop="48dp" android:paddingStart="24dp" android:paddingEnd="24dp"> <ImageView android:id="@+id/resolver_empty_state_icon" - android:layout_marginTop="48dp" android:layout_width="24dp" android:layout_height="24dp" android:layout_centerHorizontal="true" /> diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index e50651293f97..e078384686b5 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrateur het toestel vir persoonlike gebruik afgestaan"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Toestel word bestuur"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Jou organisasie bestuur hierdie toestel en kan netwerkverkeer monitor. Tik vir besonderhede."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Ligginginstellings is deur jou administrateur verander"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Tik om jou ligginginstellings te sien."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Programme kan toegang tot jou ligging kry"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Kontak jou IT-administrateur om meer te wete te kom"</string> <string name="country_detector" msgid="7023275114706088854">"Landaanwyser"</string> <string name="location_service" msgid="2439187616018455546">"Liggingdiens"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensorkennisgewingdiens"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Jou toestel sal uitgevee word"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Die administrasieprogram kan nie gebruik word nie. Jou toestel sal nou uitgevee word.\n\nKontak jou organisasie se administrateur as jy vrae het."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Druk is gedeaktiveer deur <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Deblokkeer jou persoonlike programme"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Programme word môre geblokkeer"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Jou IT-administrateur laat nie toe dat jou werkprofiel vir langer as <xliff:g id="DAYS">%1$d</xliff:g> dae onderbreek word nie"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Skakel werkprofiel aan"</string> <string name="me" msgid="6207584824693813140">"Ek"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet-opsies"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV-opsies"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Foonopsies"</string> <string name="global_action_lock" msgid="6949357274257655383">"Skermslot"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Sit af"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Aan/af"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Herbegin"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Noodgeval"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Foutverslag"</string> <string name="global_action_logout" msgid="6093581310002476511">"Beëindig sessie"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"Kry toegang tot ekstra liggingverskaffer-bevele"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Gee die program toegang tot ekstra liggingverskaffer-bevele. Dit kan die program dalk toelaat om in te meng met die werking van die GPS of ander liggingbronne."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"kry net op die voorgrond toegang tot presiese ligging"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Hierdie program kan jou presiese ligging kry net wanneer dit op die voorgrond is. Liggingdienste moet aangeskakel wees en op jou toestel beskikbaar wees sodat die program hulle kan gebruik. Dit kan veroorsaak dat meer batterykrag gebruik word."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Hierdie program kan jou presiese ligging van liggingdienste af kry terwyl die program gebruik word. Liggingdienste vir jou toestel moet aangeskakel wees vir die program om die ligging te kry. Dit kan batterygebruik verhoog."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"kry benaderde ligging net op die voorgrond"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Hierdie program kan jou benaderde ligging net kry wanneer dit op die voorgrond is. Liggingdienste moet aangeskakel wees en op jou toestel beskikbaar wees sodat die program hulle kan gebruik."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Hierdie program kan jou benaderde ligging van liggingdienste af kry terwyl die program gebruik word. Liggingdienste vir jou toestel moet aangeskakel wees vir die program om die ligging te kry."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"kry ligging op die agtergrond"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Hierdie program het toegang tot ligging terwyl dit op die agtergrond werk, asook voorgrondtoegang tot ligging."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Hierdie program kan op enige tydstip toegang tot ligging kry, selfs wanneer die program nie gebruik word nie."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"verander jou klankinstellings"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Laat die program toe om globale klankinstellings soos volume en watter luidspreker vir uitvoer gebruik word, te verander."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"neem klank op"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"neem foto\'s en video\'s"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Hierdie program kan enige tyd met die kamera foto\'s neem en video\'s opneem."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Gee \'n program of diens toegang tot stelselkameras om foto\'s en video\'s te neem"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Hierdie bevoorregte of stelselprogram kan enige tyd met \'n stelselkamera foto\'s neem en video\'s opneem. Vereis dat die program ook die android.permission.CAMERA-toestemming het"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Laat \'n program of diens toe om terugbeloproepe te ontvang oor kameratoestelle wat oopgemaak of toegemaak word."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Hierdie program kan terugbeloproepe ontvang wanneer enige kameratoestel oopgemaak (deur watter program) of toegemaak word."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"beheer vibrasie"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Laat die program toe om die vibrator te beheer."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Stel die program in staat om toegang tot die vibreerderstand te kry."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Gaan tans huidige inhoud na"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nuwe <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Tik om op te stel"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Om foto\'s en media oor te dra"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Kwessie met <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tik om reg te stel"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> is korrup. Kies om reg te stel."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Niegesteunde <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Hierdie toestel steun nie hierdie <xliff:g id="NAME">%s</xliff:g> nie. Tik om in \'n gesteunde formaat op te stel."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Hierdie toestel steun nie hierdie <xliff:g id="NAME">%s</xliff:g> nie. Kies om in \'n gesteunde formaat op te stel."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Hierdie toestel steun nie hierdie <xliff:g id="NAME">%s</xliff:g> nie."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> is onverwags verwyder"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Maak media los voordat jy dit verwyder om te keer dat jy inhoud verloor"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> is verwyder"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Verhoog volume bo aanbevole vlak?\n\nOm lang tydperke teen hoë volume te luister, kan jou gehoor beskadig."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gebruik toeganklikheidkortpad?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Wanneer die kortpad aan is, sal \'n toeganklikheidkenmerk begin word as albei volumeknoppies 3 sekondes lank gedruk word."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Skakel toeganklikheidkenmerke aan?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"As jy albei volumesleutels vir \'n paar sekondes hou, skakel dit toeganklikheidkenmerke aan. Dit kan verander hoe jou toestel werk.\n\nHuidige kenmerke:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nJy kan geselekteerde kenmerke in Instellings en Toeganklikheid verander."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Skakel TalkBack aan?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"As jy albei volumesleutels vir \'n paar sekondes hou, skakel dit TalkBack aan – \'n nuttige skermleser vir mense wat blind is of met swak sig. TalkBack verander heeltemal hoe jou toestel werk.\n\nJy kan hierdie kortpad na \'n ander kenmerk in Instellings en Toeganklikheid verander."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Skakel <xliff:g id="SERVICE">%1$s</xliff:g> aan?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"As jy albei volumesleutels vir \'n paar sekondes hou, skakel dit <xliff:g id="SERVICE">%1$s</xliff:g>, \'n toeganklikheidkenmerk, aan. Dit kan verander hoe jou toestel werk.\n\nJy kan hierdie kortpad na \'n ander kenmerk in Instellings en Toeganklikheid verander."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Skakel aan"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Moenie aanskakel nie"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Gee <xliff:g id="SERVICE">%1$s</xliff:g> volle beheer oor jou toestel?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"As jy <xliff:g id="SERVICE">%1$s</xliff:g> aanskakel, sal jou toestel nie jou skermslot gebruik om data-enkripsie te verbeter nie."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Volle beheer is gepas vir programme wat jou help met toeganklikheidsbehoeftes, maar nie vir die meeste programme nie."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Laat toe"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Weier"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tik op \'n kenmerk om dit te begin gebruik:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Kies kenmerke om saam met die toeganklikheidknoppie te gebruik"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Kies kenmerke om saam met die volumesleutelkortpad te gebruik"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> is afgeskakel"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Wysig kortpaaie"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Klaar"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gebruik kortpad"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Kleuromkering"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Kleurkorreksie"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Het volumesleutels gehou. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aangeskakel."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Het volumesleutels gehou. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> het afgeskakel"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Druk en hou albei volumesleutels drie sekondes lank om <xliff:g id="SERVICE_NAME">%1$s</xliff:g> te gebruik"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Kies \'n kenmerk om te gebruik wanneer jy op die toeganklikheidknoppie tik:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Kies \'n kenmerk om te gebruik saam met die toeganklikheidgebaar (swiep met twee vingers op van die onderkant van die skerm af):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Kies \'n kenmerk om te gebruik saam met die toeganklikheidgebaar (swiep met drie vingers op van die onderkant van die skerm af):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Raak en hou die toeganklikheidknoppie om tussen kenmerke te wissel."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Swiep op met twee vingers en hou om tussen kenmerke te wissel."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Swiep op met drie vingers en hou om tussen kenmerke te wissel."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Vergroting"</string> <string name="user_switched" msgid="7249833311585228097">"Huidige gebruiker <xliff:g id="NAME">%1$s</xliff:g> ."</string> <string name="user_switching_message" msgid="1912993630661332336">"Skakel tans oor na <xliff:g id="NAME">%1$s</xliff:g> …"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> lêers</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> lêer</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Geen mense om mee te deel is aanbeveel nie"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Programmelys"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Opneemtoestemming is nie aan hierdie program verleen nie, maar dit kan oudio deur hierdie USB-toestel opneem."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Tuis"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Geen werkprogramme kan hierdie inhoud oopmaak nie"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Geen persoonlike programme kan hierdie inhoud steun nie"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Geen persoonlike programme kan hierdie inhoud oopmaak nie"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Neem oudio in telefonie-oproepe op of speel dit"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Laat hierdie program, indien dit as die verstekbellerprogram aangewys is, toe om oudio in telefonie-oproepe op te neem of te speel."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM se netwerkontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM se netwerksubstelontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM se korporatiewe ontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM se diensverskafferontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM se ontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Voer PUK in"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Voer PUK in"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Voer PUK in"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Voer PUK in"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Voer PUK in"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM se Netwerk1-ontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM se Netwerk2-ontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM se HRPD-onsluiting-PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM se korporatiewe ontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM se diensverskafferontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM se onsluiting-PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Voer PUK in"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Voer PUK in"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Voer PUK in"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Voer PUK in"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Voer PUK in"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Voer PUK in"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN se ontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Diensverskaffer se ekwivalente tuis-PLMN se ontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID se ontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI se ontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Netwerksubstel se diensverskafferontsluiting-PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Versoek tans netwerkontsluiting vir SIM …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Versoek tans netwerksubstelontsluiting vir SIM …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Versoek tans diensverskafferontsluiting vir SIM …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Versoek tans korporatiewe ontsluiting vir SIM …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Versoek tans PUK-ontsluiting …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Versoek tans PUK-ontsluiting …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Versoek tans PUK-ontsluiting …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Versoek tans PUK-ontsluiting …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Versoek tans PUK-ontsluiting …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Versoek tans SIM-ontsluiting …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Versoek tans Netwerk1-ontsluiting vir RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Versoek tans Netwerk2-ontsluiting vir RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Versoek tans HRPD-ontsluiting vir RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Versoek tans diensverskafferontsluiting vir RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Versoek tans korporatiewe ontsluiting vir RUIM …"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Versoek tans SPN-ontsluiting …"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Versoek tans ontsluiting vir diensverskaffer se ekwivalente tuis-PLMN …"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Versoek tans ICCID-ontsluiting …"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Versoek tans IMPI-ontsluiting …"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Versoek tans diensverskafferontsluiting vir netwerksubstel …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Versoek tans RUIM-ontsluiting …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Versoek tans PUK-ontsluiting …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Versoek tans PUK-ontsluiting …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Versoek tans PUK-ontsluiting …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Versoek tans PUK-ontsluiting …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Versoek tans PUK-ontsluiting …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Versoek tans PUK-ontsluiting …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM se netwerkontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM se netwerksubstelontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM se diensverskafferontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"RUIM se korporatiewe ontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM se ontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM se Netwerk1-ontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM se Netwerk2-ontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM se HRPD-ontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM se korporatiewe ontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM se diensverskafferontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM se ontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK-ontsluiting onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK-ontsluiting onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK-ontsluiting onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK-ontsluiting onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK-ontsluiting onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK-ontsluiting onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK-ontsluiting onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK-ontsluiting onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK-ontsluiting onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK-ontsluiting onsuksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK-ontsluiting onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN se ontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Ontsluitingsversoek vir diensverskaffer se ekwivalente tuis-PLMN onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID se ontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI se ontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Netwerksubstel se diensverskafferontsluitingsversoek onsuksesvol."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM se netwerkontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM se netwerksubstelontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM se diensverskafferontsluiting suksesvol"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM se korporatiewe ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM se Netwerk1-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM se Netwerk2-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM se HRPD-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM se diensverskafferontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM se korporatiewe ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Diensverskaffer se ekwivalente tuis-PLMN se ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI-ontsluiting suksesvol."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Netwerksubstel se diensverskafferontsluiting suksesvol."</string> </resources> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 7f7fe96675dc..b3c8b7aa9e23 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"አስተዳዳሪ መሣሪያዎን ለግል ጥቅም ትተውታል"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"መሣሪያው የሚተዳደር ነው"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"የእርስዎ ድርጅት ይህን መሣሪያ ያስተዳድራል፣ እና የአውታረ መረብ ትራፊክን ሊከታተል ይችላል። ዝርዝሮችን ለማግኘት መታ ያድርጉ።"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"የአካባቢ ቅንብሮች በአስተዳዳሪዎ ተቀይረዋል"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"የአካባቢ ቅንብሮችዎን ለመመልከት መታ ያድርጉ።"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"መተግበሪያዎች የእርስዎን አካባቢ መድረስ ይችላሉ"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"ተጨማሪ ለማወቅ የአይቲ አስተዳዳሪዎን ያነጋግሩ"</string> <string name="country_detector" msgid="7023275114706088854">"የአገር ማወቂያ"</string> <string name="location_service" msgid="2439187616018455546">"የአካባቢ አገልግሎት"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"የዳሳሽ ማሳወቂያ አገልግሎት"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"የእርስዎ መሣሪያ ይደመሰሳል"</string> <string name="factory_reset_message" msgid="2657049595153992213">"የአስተዳዳሪ መተግበሪያ ስራ ላይ ሊውል አይችልም። የእርስዎን መሣሪያ አሁን ይደመሰሳል።\n\nጥያቄዎች ካለዎት የድርጅትዎን አስተዳዳሪ ያነጋግሩ።"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"ማተም በ<xliff:g id="OWNER_APP">%s</xliff:g> ተሰናክሏል።"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"የእርስዎን የግል መተግበሪያዎች እገዳ ያንሱ"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"መተግበሪያዎች ነገ ይታገዳሉ"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"የእርስዎ አይቲ አስተዳዳሪ የሥራ መገለጫዎ ከ<xliff:g id="DAYS">%1$d</xliff:g> ቀኖች በላይ ባለበት እንዲቆም አይፈቅዱም"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"የሥራ መገለጫን አብራ"</string> <string name="me" msgid="6207584824693813140">"እኔ"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"የጡባዊ አማራጮች"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV አማራጮች"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"የስልክ አማራጮች"</string> <string name="global_action_lock" msgid="6949357274257655383">"ማያ ቆልፍ"</string> <string name="global_action_power_off" msgid="4404936470711393203">"ኃይል አጥፋ"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"ኃይል"</string> + <string name="global_action_restart" msgid="4678451019561687074">"ዳግም አስነሳ"</string> <string name="global_action_emergency" msgid="1387617624177105088">"ድንገተኛ አደጋ"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"የሳንካ ሪፖርት"</string> <string name="global_action_logout" msgid="6093581310002476511">"ክፍለ-ጊዜን አብቃ"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ተጨማሪ ሥፍራ አቅራቢ ትዕዛዞችን ድረስ።"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"መተግበሪያው ተጨማሪ የአካባቢ አቅራቢ ትእዛዞችን እንዲደርስ ይፈቅድለታል። ይሄ መተግበሪያው በጂፒኤስ ወይም ሌላ የአካባቢ ምንጮች ስራ ላይ ጣልቃ እንዲገባ ሊፈቅድለት ይችላል።"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"መዳረሻ ከፊት ለፊት ብቻ ትክክለኛ ነው"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ይህ መተግበሪያ ከፊት ላይ ሆኖ ሲበራ ብቻ ትክክለኛውን አካባቢዎ ማግኘት ይችላል። መተግበሪያው የአካባቢ አገልግሎቶች መጠቀም እንዲችል ሊበሩ እና በእርስዎ መሣሪያ ላይ ሊገኙ የሚችሉ መሆን አለባቸው።"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ይህ መተግበሪያ ስራ ላይ ሳለ ከአካባቢ አገልግሎቶች ትክክለኛ አካባቢዎን ማግኘት ይችላል። መተግበሪያው አካባቢን ማግኘት እንዲችል የመሣሪያዎ የአካባቢ አገልግሎቶች መብራት አለበት። ይህ የባትሪ ፍጆታን ሊጨምር ይችላል።"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ከፊት ለፊት ብቻ ግምታዊ አካባቢን ድረስ"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ይህ መተግበሪያ ግምታዊ አካባቢዎን ማግኘት የሚችለው ከፊት ሲሆን ብቻ ነው። መተግበሪያው የአካባቢ አገልግሎቶች መጠቀም እንዲችል ሊበሩ እና በእርስዎ መሣሪያ ላይ ሊገኙ የሚችሉ መሆን አለባቸው።"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ይህ መተግበሪያ ስራ ላይ ሳለ ከአካባቢ አገልግሎቶች ግምታዊ አካባቢዎን ማግኘት ይችላል። መተግበሪያው አካባቢን ማግኘት እንዲችል የመሣሪያዎ የአካባቢ አገልግሎቶች መብራት አለበት።"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"አካባቢን በበስተጀርባ ድረስ"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ይህ መተግበሪያ ከፊት የአካባቢ መዳረሻ በተጨማሪም ከበስተጀርባ እያሄደ ሳለ አካባቢን መድረስ ይችላል።"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ይህ መተግበሪያ በማንኛውም ጊዜ አካባቢን መድረስ ይችላል፣ መተግበሪያው ስራ ላይ ባይውልም እንኳ።"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"የድምፅ ቅንብሮችን ለውጥ"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"መተግበሪያው አንደ የድምጽ መጠን እና ለውጽአት የትኛውን የድምጽ ማጉያ ጥቅም ላይ እንደዋለ የመሳሰሉ ሁለንተናዊ የድምጽ ቅንብሮችን እንዲያስተካክል ይፈቅድለታል።"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ኦዲዮ ይቅዱ"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"ፎቶዎች እና ቪዲዮዎች ያንሱ"</string> <string name="permdesc_camera" msgid="1354600178048761499">"ይህ መተግበሪያ በማናቸውም ጊዜ ካሜራውን በመጠቀም ፎቶ ሊያነሳ እና ቪዲዮዎችን ሊቀርጽ ይችላል።"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"ሥዕሎችን ለማንሣት እና ቪዲዮዎችን ለመቅረጽ እንዲችሉ ወደ ሥርዓት ካሜራዎች ለመተግበሪያ ወይም ለአገልግሎት መዳረሻ ይፍቀዱ"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"ይህ ልዩ ፈቃድ ያለው የሥርዓት መተግበሪያ በማንኛውም ጊዜ የሥርዓት ካሜራን በመጠቀም ሥዕሎችን ማንሣት እና ቪዲዮ መቅረጽ ይችላል። የandroid.permission.CAMERA ፈቃዱ በመተግበሪያውም ጭምር እንዲያዝ ያስፈልገዋል።"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"አንድ መተግበሪያ ወይም አገልግሎት እየተከፈቱ ወይም እየተዘጉ ስላሉ የካሜራ መሣሪያዎች መልሶ ጥሪዎችን እንዲቀበል ይፍቀዱ።"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"ማንኛውም የካሜራ መሣሪያ እየተከፈተ (በምን መተግበሪያ) ወይም እየተዘጋ ባለበት ጊዜ ይህ መተግበሪያ መልሶ ጥሪዎችን መቀበል ይችላል።"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"ነዛሪ ተቆጣጠር"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"ነዛሪውን ለመቆጣጠር ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"መተግበሪያው የንዝረት ሁኔታውን እንዲደርስ ያስችለዋል።"</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"አሁን ያለ ይዘትን በመገምገም ላይ"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"አዲስ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"ለማዋቀር መታ ያድርጉ"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ፎቶዎችን እና ማህደረመረጃን ለማስተላለፍ"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"ከ<xliff:g id="NAME">%s</xliff:g> ጋር ችግር"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"ለማስተካከል መታ ያድርጉ"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> የተበላሸ ነው። ለማስተካከል ይምረጡ።"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"ያልተደገፈ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"ይህ መሣሪያ ይህን <xliff:g id="NAME">%s</xliff:g> አይደግፍም። በሚደገፍ ቅርጸት ለማዘጋጀት መታ ያድርጉ።"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"ይህ መሣሪያ ይህን <xliff:g id="NAME">%s</xliff:g> አይደግፍም። በሚደገፍ ቅርጸት ለማዘጋጀት ይምረጡ።"</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"ይህ መሣሪያ ይህን <xliff:g id="NAME">%s</xliff:g> አይደግፍም።"</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> ሳይታሰብ ተወግዷል"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"ይዘት መጥፋትን ለማስቅረት ከማስወገድ በፊት ማህደረ መረጃን ያስወጡ"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> ተወግደዋል"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ድምጹ ከሚመከረው መጠን በላይ ከፍ ይበል?\n\nበከፍተኛ ድምጽ ለረጅም ጊዜ ማዳመጥ ጆሮዎን ሊጎዳው ይችላል።"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"የተደራሽነት አቋራጭ ጥቅም ላይ ይዋል?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"አቋራጩ ሲበራ ሁለቱንም የድምጽ አዝራሮች ለ3 ሰከንዶች ተጭኖ መቆየት የተደራሽነት ባህሪን ያስጀምረዋል።"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"የተደራሽነት ባሕሪያት ይብሩ?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"ሁለቱንም የድምፅ ቁልፎች ወደ ታች ለጥቂት ሰከንዶች መያዝ የተደራሽነት ባሕሪያትን ያበራል። ይህ የእርስዎ መሣሪያ እንዴት እንደሚሠራ ሊለውጥ ይችላል።\n\nየአሁን ባሕሪያት፦\n<xliff:g id="SERVICE">%1$s</xliff:g>\nበቅንብሮች > ተደራሽነት ውስጥ የተመረጡትን ባሕሪያት መለወጥ ይችላሉ።"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBackን ይብራ?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"ለጥቂት ሰከንዶችን ሁለቱንም የድምፅ ቁልፎች ወደ ታች መያዝ ማየት ለተሳናቸው ወይም ዝቅተኛ የማየት ችሎታ ላላቸው ሰዎች አጋዥ የሆነውን TalkBack ያብራል። TalkBack የእርስዎ መሣሪያ እንዴት እንደሚሠራ ሙሉ በሙሉ ሊለውጥ ይችላል።\n\nበቅንብሮች > ተደራሽነት ውስጥ ወደ ሌላ ባሕሪ ይህን አቋራጭ መለወጥ ይችላሉ።"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> ይብራ?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"ሁለቱንም የድምፅ ቁልፎች ወደ ታች ለጥቂት ሰከንዶች መያዝ የተደራሽነት ባሕሪያትን <xliff:g id="SERVICE">%1$s</xliff:g> ያበራል። ይህ የእርስዎ መሣሪያ እንዴት እንደሚሠራ ሊለውጥ ይችላል።\n\nበቅንብሮች > ተደራሽነት ውስጥ ወደ ሌላ ባሕሪ ይህን አቋራጭ መለወጥ ይችላሉ።"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"አብራ"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"አታብራ"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> ሙሉ የመሣሪያዎ ቁጥጥር እንዲኖረው ይፈቀድለት?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g>ን ካበሩት መሳሪያዎ የውሂብ ምስጠራን ለማላቅ የማያ ገጽ መቆለፊያዎን አይጠቀምም።"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"ሙሉ ቁጥጥር ከተደራሽነት ፍላጎቶች ጋር እርስዎን ለሚያግዝዎት መተግበሪያዎች ተገቢ ነው ሆኖም ግን ለአብዛኛዎቹ መተግበሪያዎች አይሆንም።"</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ፍቀድ"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ከልክል"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"አንድ ባህሪን መጠቀም ለመጀመር መታ ያድርጉት፦"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"በተደራሽነት አዝራር የሚጠቀሙባቸው ባሕሪያት ይምረጡ"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"በድምጽ ቁልፍ አቋራጭ የሚጠቀሙባቸው ባሕሪያት ይምረጡ"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ጠፍቷል"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"አቋራጮችን አርትዕ ያድርጉ"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ተከናውኗል"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"አቋራጭ ይጠቀሙ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ተቃራኒ ቀለም"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"የቀለም ማስተካከያ"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"የድምፅ ቁልፎችን ይዟል። <xliff:g id="SERVICE_NAME">%1$s</xliff:g> በርቷል።"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"የድምፅ ቁልፎችን ይዟል። <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ጠፍተዋል።"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>ን ለመጠቀም ለሦስት ሰከንዶች ሁለቱንም የድምፅ ቁልፎች ተጭነው ይያዙ"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"የተደራሽነት አዝራርን መታ በሚያደርጉበት ጊዜ ጥቅም ላይ የሚውለውን ባሕሪ ይምረጡ፦"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"ከተደራሽነት ጣት ምልክት ጋር የሚጠቀሙበት ባሕሪ ይምረጡ (በሁለት ጣቶች ከማያ ገጹ ግርጌ ወደ ላይ ይጥረጉ)፦"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"ከተደራሽነት ጣት ምልክት ጋር አብረው የሚጠቀሙበት ባሕሪ ይምረጡ (በሦስት ጣቶች ከማያ ገጹ ግርጌ ወደ ላይ ይጥረጉ)፦"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"በባሕሪያት መካከል ለመቀያየር የተደራሽነት አዝራሩን ነክተው ይያዙ።"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"በባሕሪያት መካከል ለመቀያየር በሁለት ጣቶች ወደ ላይ ጠርገው ይያዙ።"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"በባሕሪያት መካከል ለመቀያየር በሶስት ጣቶች ወደ ላይ ጠርገው ይያዙ።"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ማጉላት"</string> <string name="user_switched" msgid="7249833311585228097">"የአሁኑ ተጠቃሚ <xliff:g id="NAME">%1$s</xliff:g>።"</string> <string name="user_switching_message" msgid="1912993630661332336">"ወደ <xliff:g id="NAME">%1$s</xliff:g> በመቀየር ላይ…"</string> @@ -2050,8 +2026,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> ፋይሎች</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> ፋይሎች</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"የሚያጋሯቸው ምንም የሚመከሩ ሰዎች የሉም"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"የመተግበሪያዎች ዝርዝር"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"ይህ መተግበሪያ የመቅረጽ ፈቃድ አልተሰጠውም፣ ነገር ግን በዚህ ዩኤስቢ መሣሪያ በኩል ኦዲዮን መቅረጽ ይችላል።"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"መነሻ"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"ምንም የሥራ መተግበሪያዎችን ይህን ይዘት መክፈት አይችሉም"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"ምንም የግል መተግበሪያዎች ይህን ይዘት መደገፍ አይችሉም"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"ምንም የግል መተግበሪያዎችን ይህን ይዘት መክፈት አይችሉም"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"በስልክ ጥሪዎች ላይ ኦዲዮን መቅዳት ወይም ማጫወት"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ይህ መተግበሪያ እንደ ነባሪ የመደወያ መተግበሪያ ሲመደብ በስልክ ጥሪዎች ላይ ኦዲዮን እንዲቀዳ ወይም እንዲያጫውት ያስችለዋል።"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"የሲም አውታረ መረብ መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"የሲም አውታረ መረብ ንኡስ ስብስብ መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"የሲም ኮርፖሬት መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"የሲም አገልግሎት አቅራቢ መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"ሲም መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK ያስገቡ"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK ያስገቡ"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK ያስገቡ"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK ያስገቡ"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK ያስገቡ"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"የRUIM network1 መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"የRUIM network2 መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"የRUIM hrpd መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"የRUIM ኮርፖሬት መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"የRUIM አገልግሎት አቅራቢ መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"የRUIM መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK ያስገቡ"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK ያስገቡ"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK ያስገቡ"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK ያስገቡ"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK ያስገቡ"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK ያስገቡ"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"የSPN መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"የSP Equivalent Home PLMN መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"የICCID መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"የIMPI መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"የአውታረ መረብ ንኡስ ስብስብ አገልግሎት አቅራቢ መክፈቻ ፒን"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"የሲም አውታረ መረብ መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"የሲም አውታረ መረብ ንኡስ ስብስብ መክፈቻን በመጠየቅ ላይ …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"የሲም አገልግሎት አቅራቢ መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"የሲም ኮርፖሬት መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"የPUK መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"የPUK መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"የPUK መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"የPUK መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"የPUK መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"የሲም መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"የRUIM network1 መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"የRUIM network2 መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"የRUIM hrpd መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"የRUIM አገልግሎት አቅራቢ መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"የRUIM ኮርፖሬት መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"የSPN መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"የSP Equivalent Home PLMN መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"የICCID መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"የIMPI መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"የአውታረ መረብ ንኡስ ስብስብ አገልግሎት አቅራቢ መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"የRUIM መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"የPUK መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"የPUK መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"የPUK መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"የPUK መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"የPUK መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"የPUK መክፈቻን በመጠየቅ ላይ…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"የሲም አውታረ መረብ መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"የሲም አውታረ መረብ ንኡስ ስብስብ መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"የሲም አገልግሎት አቅራቢ መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"የሲም ኮርፖሬት መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"ሲም መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"የRUIM Network1 መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"የRUIM Network2 መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"የRUIM Hrpd መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"የRUIM ኮርፖሬት መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"የRUIM አገልግሎት አቅራቢ መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"የRUIM መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"የSPN መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"የSP Equivalent Home PLMN መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"የICCID መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"የIMPI መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"የአውታረ መረብ ንኡስ ስብስብ አገልግሎት አቅራቢ መክፈቻ ጥያቄ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"የሲም አውታረ መረብ መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"የሲም አውታረ መረብ ንኡስ ስብስብ መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"ሲም አገልግሎት አቅራቢ መክፈቻ ስኬታማ ነበረ ።"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"የሲም ኮርፖሬት መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"ሲም መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"የRUIM Network1 መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"የRUIM አውታረ መረብ2 መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"የRUIM Hrpd መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"የRUIM አገልግሎት አቅራቢ መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"የRUIM ኮርፖሬት መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"የRUIM መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"የPUK መክፈቻ ስኬታማ አልነበረም።"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"የSPN መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"የSP Equivalent Home PLMN መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"የICCID መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"የIMPI መክፈቻ ስኬታማ ነበረ።"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"የአውታረ መረብ ንኡስ ስብስብ አገልግሎት አቅራቢ መክፈቻ ስኬታማ ነበረ።"</string> </resources> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index dc7b5976a750..a6db03a0b597 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -199,8 +199,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"تنازل المشرف عن الجهاز للاستخدام الشخصي"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"تتم إدارة الجهاز"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"تدير مؤسستك هذا الجهاز ويمكنها مراقبة حركة بيانات الشبكة. يمكنك النقر للحصول على تفاصيل."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"غيّرَ مشرفك إعدادات الموقع الجغرافي"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"انقر لعرض إعدادات الموقع الجغرافي."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"يمكن للتطبيقات الوصول إلى موقعك الجغرافي"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"يُرجى التواصل مع مشرف تكنولوجيا المعلومات لمعرفة المزيد من المعلومات."</string> <string name="country_detector" msgid="7023275114706088854">"أداة التعرّف على البلدان"</string> <string name="location_service" msgid="2439187616018455546">"خدمات الموقع الجغرافي"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"خدمة إشعارات جهاز الاستشعار"</string> @@ -208,14 +208,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"سيتم محو بيانات جهازك."</string> <string name="factory_reset_message" msgid="2657049595153992213">"تعذّر استخدام تطبيق المشرف. سيتم محو بيانات جهازك الآن.\n\nإذا كانت لديك أسئلة، اتصل بمشرف مؤسستك."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"تم إيقاف الطباعة بواسطة <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"إزالة حظر تطبيقاتك الشخصية"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"سيتم حظر التطبيقات غدًا"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"لا يسمح لك مشرف تكنولوجيا المعلومات بإيقاف الملف الشخصي للعمل مؤقتًا أكثر من <xliff:g id="DAYS">%1$d</xliff:g> يوم."</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"تفعيل الملف الشخصي للعمل"</string> <string name="me" msgid="6207584824693813140">"أنا"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"خيارات الجهاز اللوحي"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"خيارات Android TV"</string> @@ -440,11 +436,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"الدخول إلى المزيد من أوامر موفر الموقع"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"للسماح للتطبيق بالدخول إلى أوامر إضافية لموفر الموقع. قد يتيح هذا للتطبيق التداخل مع تفعيل تقنية نظام تحديد المواقع العالمي (GPS) أو مصادر الموقع الأخرى."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"الوصول إلى الموقع الجغرافي الدقيق في الواجهة الأمامية فقط"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"لا يمكن لهذا التطبيق معرفة موقعك الجغرافي بالضبط عندما يعمل في الخلفية. ويجب تفعيل خدمات الموقع الجغرافي وأن تكون متاحة على جهازك حتى يتمكن التطبيق من استخدامها. وقد يؤدي هذا إلى زيادة استهلاك طاقة البطارية."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"يمكن لهذا التطبيق معرفة موقعك الجغرافي الدقيق من خدمات الموقع الجغرافي عندما يكون التطبيق قيد التشغيل. يجب تفعيل خدمات الموقع الجغرافي على جهازك كي يتمكّن التطبيق من معرفة الموقع الجغرافي. قد يؤدي هذا إلى زيادة استهلاك شحن البطارية."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"الوصول إلى الموقع الجغرافي التقريبي في الواجهة الأمامية فقط"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"لا يمكن لهذا التطبيق معرفة موقعك الجغرافي التقريبي إذا كان يعمل في الخلفية. ويجب تفعيل خدمات الموقع الجغرافي وأن تكون متاحة على جهازك حتى يتمكن التطبيق من استخدامها."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"لا يمكن لهذا التطبيق معرفة موقعك الجغرافي التقريبي من خدمات الموقع الجغرافي عندما يكون التطبيق قيد التشغيل. يجب تفعيل خدمات الموقع الجغرافي على جهازك كي يتمكّن التطبيق من معرفة الموقع الجغرافي."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"الوصول إلى الموقع الجغرافي في الخلفية"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"يمكن لهذا التطبيق الوصول إلى الموقع الجغرافي أثناء عمله في الخلفية، بالإضافة إلى إمكانية وصوله للموقع الجغرافي أثناء عمله في الواجهة الأمامية."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"يمكن لهذا التطبيق الوصول إلى الموقع الجغرافي في أي وقت، حتى أثناء عدم استخدام التطبيق."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"تغيير إعداداتك الصوتية"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"للسماح للتطبيق بتعديل إعدادات الصوت العامة مثل مستوى الصوت وأي السماعات يتم استخدامها للاستماع."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"تسجيل الصوت"</string> @@ -459,8 +455,7 @@ <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> <skip /> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"يسمح الإذن لتطبيق أو خدمة بتلقّي استدعاءات عما إذا كانت أجهزة الكاميرات مفتوحة أو مغلقة."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"يمكن أن يتلقّى هذا التطبيق استدعاءات عندما تكون هناك كاميرا مفتوحة (بواسطة هذا التطبيق) أو مغلقة."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"التحكم في الاهتزاز"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"للسماح للتطبيق بالتحكم في الهزّاز."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"يسمح هذا الإذن للتطبيق بالوصول إلى حالة الهزّاز."</string> @@ -636,7 +631,7 @@ <string name="permlab_writeSyncSettings" msgid="6583154300780427399">"التبديل بين تفعيل المزامنة وإيقافها"</string> <string name="permdesc_writeSyncSettings" msgid="6029151549667182687">"للسماح للتطبيق بتعديل إعدادات المزامنة لحساب ما. على سبيل المثال، يمكن استخدام ذلك لتفعيل مزامنة تطبيق \"الأشخاص\" مع حساب ما."</string> <string name="permlab_readSyncStats" msgid="3747407238320105332">"قراءة إحصاءات المزامنة"</string> - <string name="permdesc_readSyncStats" msgid="3867809926567379434">"للسماح للتطبيق بقراءة إحصائيات المزامنة لحساب ما، بما في ذلك سجل الأحداث المتزامنة ومقدار البيانات التي تمت مزامنتها."</string> + <string name="permdesc_readSyncStats" msgid="3867809926567379434">"للسماح للتطبيق بقراءة إحصاءات المزامنة لحساب ما، بما في ذلك سجل الأحداث المتزامنة ومقدار البيانات التي تمت مزامنتها."</string> <string name="permlab_sdcardRead" msgid="5791467020950064920">"قراءة محتوى مساحة التخزين المشتركة"</string> <string name="permdesc_sdcardRead" msgid="6872973242228240382">"للسماح للتطبيق بقراءة محتوى مساحة التخزين المشتركة."</string> <string name="permlab_sdcardWrite" msgid="4863021819671416668">"تعديل محتوى مساحة التخزين المشتركة أو حذفه"</string> @@ -1430,13 +1425,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"جارٍ مراجعة المحتوى الحالي"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> جديدة"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"انقر للإعداد."</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"لنقل الصور والوسائط"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"هناك مشكلة في <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"انقر للإصلاح"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> تالف، ويمكنك اختيار إصلاحه."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> غير متوافق"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"هذا الجهاز غير متوافق مع <xliff:g id="NAME">%s</xliff:g> هذا. انقر للإعداد بتنسيق متوافق."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"لا يتوافق هذا الجهاز مع <xliff:g id="NAME">%s</xliff:g>. يمكنك النقر للإعداد بتنسيق متوافق."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"تمت إزالة <xliff:g id="NAME">%s</xliff:g> بشكل غير متوقع"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"إخراج الوسائط قبل الإزالة لتجنّب فقدان المحتوى"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"تمت إزالة <xliff:g id="NAME">%s</xliff:g>."</string> @@ -2209,35 +2208,20 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"عمل"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"عرض المحتوى الشخصي"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"عرض محتوى العمل"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"تتعذّر مشاركة هذا المحتوى باستخدام تطبيقات العمل"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"لا يسمح لك مشرف تكنولوجيا المعلومات بمشاركة هذا المحتوى باستخدام التطبيقات في ملفك الشخصي للعمل."</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"لا يمكن فتح هذا المحتوى باستخدام تطبيقات العمل"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"لا يسمح لك مشرف تكنولوجيا المعلومات بفتح هذا المحتوى باستخدام التطبيقات في ملفك الشخصي للعمل."</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"تتعذّر مشاركة هذا المحتوى باستخدام التطبيقات الشخصية"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"لا يسمح لك مشرف تكنولوجيا المعلومات بمشاركة هذا المحتوى باستخدام التطبيقات في ملفك الشخصي."</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"يتعذّر فتح هذا المحتوى باستخدام التطبيقات الشخصية"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"لا يسمح لك مشرف تكنولوجيا المعلومات بفتح هذا المحتوى باستخدام التطبيقات في ملفك الشخصي."</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"تم إيقاف الملف الشخصي للعمل مؤقتًا."</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"تفعيل"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"تسجيل الصوت أو تشغيله في المكالمات الهاتفية"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"يسمح الإذن لهذا التطبيق بتسجيل الصوت أو تشغيله في المكالمات الهاتفية عندما يتم تخصيصه كالتطبيق التلقائي لبرنامج الاتصال."</string> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"لا يمكن لتطبيقات العمل أن تدعم هذا المحتوى."</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"لا يمكن لتطبيقات العمل أن تفتح هذا المحتوى."</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"لا يمكن للتطبيقات الشخصية أن تدعم هذا المحتوى."</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"لا يمكن للتطبيقات الشخصية أن تفتح هذا المحتوى."</string> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> <skip /> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index 6befa3b8c767..7685e4bc9ee9 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"প্ৰশাসকে ডিভাইচটো ব্যক্তিগত ব্যৱহাৰৰ বাবে বাজেয়প্ত কৰিছে"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"পৰিচালিত ডিভাইচ"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"আপোনাৰ প্ৰতিষ্ঠানটোৱে এই ডিভাইচটো পৰিচালনা কৰে আৰু ই নেটৱৰ্কৰ ট্ৰেফিক পৰ্যবেক্ষণ কৰিব পাৰে। সবিশেষ জানিবলৈ টিপক।"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"আপোনাৰ প্ৰশাসকে অৱস্থানৰ ছেটিংসমূহ সলনি কৰিছে"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"আপোনাৰ অৱস্থানৰ ছেটিংসমূহ চাবলৈ টিপক।"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"এপ্সমূহে আপোনাৰ অৱস্থান এক্সেছ কৰিব পাৰে"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"অধিক জানিবলৈ আপোনাৰ আইটি প্ৰশাসকৰ সৈতে যোগাযোগ কৰক"</string> <string name="country_detector" msgid="7023275114706088854">"দেশ চিনাক্তকাৰী"</string> <string name="location_service" msgid="2439187616018455546">"অৱস্থান সেৱা"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"ছেন্সৰ জাননী সেৱা"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"আপোনাৰ ডিভাইচৰ ডেটা মচা হ\'ব"</string> <string name="factory_reset_message" msgid="2657049595153992213">"এই প্ৰশাসক এপটো ব্যৱহাৰ কৰিব নোৱাৰি। এতিয়া আপোনাৰ ডিভাইচটোৰ ডেটা মচা হ\'ব।\n\nআপোনাৰ কিবা প্ৰশ্ন থাকিলে আপোনাৰ প্ৰতিষ্ঠানৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"প্ৰিণ্ট কৰা কাৰ্য <xliff:g id="OWNER_APP">%s</xliff:g>এ অক্ষম কৰি ৰাখিছে।"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"আপোনাৰ ব্যক্তিগত এপ্সমূহ অৱৰোধৰ পৰা আঁতৰাওক"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"এপ্সমূহ কাইলৈ অৱৰোধ কৰা হ’ব"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"আপোনাৰ আইটি প্ৰশাসকে আপোনাৰ কৰ্মস্থানৰ প্ৰ’ফাইল <xliff:g id="DAYS">%1$d</xliff:g> দিনতকৈ বেছি সময়ৰ বাবে পজ হৈ থকাৰ অনুমতি নিদিয়ে"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"কৰ্মস্থানৰ প্ৰ’ফাইল অন কৰক"</string> <string name="me" msgid="6207584824693813140">"মই"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"টে\'বলেটৰ বিকল্পসমূহ"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TVৰ বিকল্পসমূহ"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"ফ\'নৰ বিকল্পসমূহ"</string> <string name="global_action_lock" msgid="6949357274257655383">"স্ক্ৰীণ ল\'ক"</string> <string name="global_action_power_off" msgid="4404936470711393203">"পাৱাৰ অফ"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"পাৱাৰ"</string> + <string name="global_action_restart" msgid="4678451019561687074">"ৰিষ্টাৰ্ট কৰক"</string> <string name="global_action_emergency" msgid="1387617624177105088">"জৰুৰীকালীন কল"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"বাগ সম্পর্কীয় অভিযোগ"</string> <string name="global_action_logout" msgid="6093581310002476511">"ছেশ্বন সমাপ্ত কৰক"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"অতিৰিক্ত অৱস্থান দেখুওৱা নির্দেশত প্ৰৱেশ কৰক"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"অৱস্থানৰ অতিৰিক্ত নির্দেশনাসমূহত প্ৰৱেশ কৰিবলৈ এপক অনুমতি দিয়ে। ইয়ে এপটোক জিপিএছ বা অন্য অৱস্থান উৎসসমূহৰ কাৰ্যকলাপত হস্তক্ষেপ কৰাৰ সুযোগ দিব পাৰে।"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"কেৱল অগ্ৰভূমিত অৱস্থানৰ সঠিক তথ্য় পাওক"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"এই এপ্টো কেৱল অগ্ৰভূমিত থাকিলেহে এইটোৱে আপোনাৰ সঠিক অৱস্থান লাভ কৰিব পাৰে। এপ্টোৱে অৱস্থান সেৱাসমূহ ব্যৱহাৰ কৰিবলৈ হ’লে সেইবোৰ অন হৈ থকাৰ লগতে সেয়া আপোনাৰ ডিভাইচত উপলব্ধ থাকিবই লাগিব। ইয়াৰ ফলত বেটাৰিৰ খৰচ বাঢ়িব পাৰে।"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"এই এপ্টো ব্যৱহাৰ হৈ থকা অৱস্থাত ই অৱস্থান সেৱাসমূহৰ পৰা আপোনাৰ সঠিক অৱস্থান লাভ কৰিব পাৰে। এপ্টোৱে অৱস্থান লাভ কৰিবলৈ হ’লে আপোনাৰ ডিভাইচৰ অৱস্থান সেৱাসমূহ অন কৰি ৰাখিবই লাগিব। ইয়াৰ ফলত বেটাৰীৰ ব্যৱহাৰ বাঢ়িব পাৰে।"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"কেৱল অগ্ৰভূমিত আনুমানিক অৱস্থান এক্সেছ কৰক"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"এই এপ্টো অগ্ৰভূমিত থাকিলেহে এইটোৱে আপোনাৰ আনুমানিক অৱস্থান লাভ কৰিব পাৰে। এপ্টোৱে অৱস্থান সেৱাসমূহ ব্যৱহাৰ কৰিবলৈ হ’লে সেইবোৰ অন হৈ থকাৰ লগতে সেয়া আপোনাৰ ডিভাইচত উপলব্ধ থাকিবই লাগিব।"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"এই এপ্টো ব্যৱহাৰ হৈ থকা অৱস্থাত ই অৱস্থান সেৱাসমূহৰ পৰা আপোনাৰ আনুমানিক অৱস্থান লাভ কৰিব পাৰে। এপ্টোৱে অৱস্থান লাভ কৰিবলৈ হ’লে আপোনাৰ ডিভাইচৰ অৱস্থান সেৱাসমূহ অন কৰি ৰাখিবই লাগিব।"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"নেপথ্যত চলি থকা সময়ত অৱস্থানৰ এক্সেছ"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"এই এপ্টোৱে অগ্ৰভূমিত অৱস্থান এক্সেছ কৰাৰ ওপৰিও নেপথ্যত চলি থাকিলেও অৱস্থান এক্সেছ কৰিব পাৰে।"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"এই এপ্টোৱে যিকোনো সময়তে অৱস্থান এক্সেছ কৰিব পাৰে, আনকি এপ্টো ব্যৱহাৰ হৈ নথকা অৱস্থাতো।"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"আপোনাৰ অডিঅ\' ছেটিংসমূহ সলনি কৰক"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"এপটোক ভলিউমৰ দৰে গ্ল\'বেল অডিঅ\' ছেটিংসমূহ যাৰ স্পীকাৰক আউটপুটৰ বাবে ব্যৱহাৰ হয় তাক সলনি কৰিবলৈ অনুমতি দিয়ে৷"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"অডিঅ\' ৰেকর্ড কৰক"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"ফট\' তোলা আৰু ভিডিঅ\' ৰেকৰ্ড কৰা"</string> <string name="permdesc_camera" msgid="1354600178048761499">"এই এপে যিকোনো সময়তে কেমেৰা ব্যৱহাৰ কৰি ফট\' তুলিব আৰু ভিডিঅ\' ৰেকর্ড কৰিব পাৰে।"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"ফট’ উঠাবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিবলৈ এটা এপ্লিকেশ্বন অথবা সেৱাক ছিষ্টেম কেমেৰাসমূহ এক্সেছ কৰিবলৈ দিয়ক"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"এই বিশেষাধিকাৰ প্ৰাপ্ত অথবা ছিষ্টেম এপ্টোৱে এটা ছিষ্টেম কেমেৰা ব্যৱহাৰ কৰি যিকোনো সময়তে ফট’ উঠাব পাৰে আৰু ভিডিঅ’ ৰেকৰ্ড কৰিব পাৰে। লগতে এপ্টোৰো android.permission.CAMERAৰ অনুমতি থকাটো প্ৰয়োজনীয়"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"কোনো এপ্লিকেশ্বন অথবা সেৱাক কেমেৰা ডিভাইচসমূহ খোলা অথবা বন্ধ কৰাৰ বিষয়ে কলবেকসমূহ গ্ৰহণ কৰিবলৈ অনুমতি দিয়ক।"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"যিকোনো কেমেৰা ডিভাইচ খুলি থকা অথবা বন্ধ কৰি থকাৰ সময়ত (কোনো এপ্লিকেশ্বনৰ দ্বাৰা) এই এপ্টোৱে কলবেক গ্ৰহণ কৰিব পাৰে।"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"কম্পন নিয়ন্ত্ৰণ কৰক"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"ভাইব্ৰেটৰ নিয়ন্ত্ৰণ কৰিবলৈ এপটোক অনুমতি দিয়ে।"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"এপ্টোক কম্পন স্থিতিটো এক্সেছ কৰিবলৈ অনুমতি দিয়ে।"</string> @@ -770,7 +762,7 @@ <string name="phoneTypeTtyTdd" msgid="532038552105328779">"TTY TDD"</string> <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"কৰ্মস্থানৰ ম’বাইল নম্বৰ"</string> <string name="phoneTypeWorkPager" msgid="3748332310638505234">"কৰ্মস্থানৰ পেজাৰৰ নম্বৰ"</string> - <string name="phoneTypeAssistant" msgid="757550783842231039">"সহায়ক"</string> + <string name="phoneTypeAssistant" msgid="757550783842231039">"Assistant"</string> <string name="phoneTypeMms" msgid="1799747455131365989">"এমএমএছ"</string> <string name="eventTypeCustom" msgid="3257367158986466481">"নিজৰ উপযোগিতা অনুযায়ী"</string> <string name="eventTypeBirthday" msgid="7770026752793912283">"জন্মদিন"</string> @@ -803,7 +795,7 @@ <string name="orgTypeOther" msgid="5450675258408005553">"অন্যান্য"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"নিজৰ উপযোগিতা অনুযায়ী"</string> <string name="relationTypeCustom" msgid="282938315217441351">"নিজৰ উপযোগিতা অনুযায়ী"</string> - <string name="relationTypeAssistant" msgid="4057605157116589315">"সহায়ক"</string> + <string name="relationTypeAssistant" msgid="4057605157116589315">"Assistant"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"ভাতৃ"</string> <string name="relationTypeChild" msgid="9076258911292693601">"শিশু"</string> <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"সংগী"</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"বৰ্তমানৰ সমলৰ সমীক্ষা কৰি থকা হৈছে"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"নতুন <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"ছেট আপ কৰিবলৈ টিপক"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ফট\' আৰু মিডিয়া স্থানান্তৰণৰ বাবে"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g>ত কিবা সমস্যা আছে"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"সমাধান কৰিবলৈ টিপক"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> ব্যৱহাৰযোগ্য হৈ থকা নাই। ঠিক কৰিবলৈ বাছনি কৰক।"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g>ক ব্যৱহাৰ কৰিব নোৱাৰি"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"এই ডিভাইচটোৱে <xliff:g id="NAME">%s</xliff:g>ক ব্যৱহাৰ কৰিব নোৱাৰে। ব্যৱহাৰ কৰিব পৰা ফৰ্মেটত ছেট আপ কৰিবলৈ টিপক।"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"এই ডিভাইচটোৱে <xliff:g id="NAME">%s</xliff:g>ক চলাব নোৱাৰে। চলাব পৰা কোনো ফৰ্মেটত ছেট আপ কৰিবলৈ বাছনি কৰক।"</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> অপ্ৰত্য়াশিতভাৱে আঁতৰোৱা হ’ল"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"সমল হেৰুওৱাৰ পৰা হাত সাৰিবলৈ আঁতৰোৱাৰ আগতে মিডিয়া বাহিৰ কৰক"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> আঁতৰোৱা হ’ল"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"অনুমোদিত স্তৰতকৈ ওপৰলৈ ভলিউম বঢ়াব নেকি?\n\nদীৰ্ঘ সময়ৰ বাবে উচ্চ ভলিউমত শুনাৰ ফলত শ্ৰৱণ ক্ষমতাৰ ক্ষতি হ\'ব পাৰে।"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"দিব্যাংগসকলৰ সুবিধাৰ শ্বৰ্টকাট ব্যৱহাৰ কৰেনে?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"শ্বৰ্টকাটটো অন হৈ থকাৰ সময়ত দুয়োটা ভলিউম বুটাম ৩ ছেকেণ্ডৰ বাবে হেঁচি ধৰি ৰাখিলে এটা সাধ্য সুবিধা আৰম্ভ হ’ব।"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"সাধ্য-সুবিধাসমূহ অন কৰিবনে?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"দুয়োটা ভলিউম কী কিছুসময়ৰ বাবে ধৰি থাকিলে সাধ্য-সুবিধাসমূহ অন কৰে। এইটোৱে আপোনাৰ ডিভাইচটোৱে কাম কৰাৰ ধৰণ সলনি কৰিব পাৰে।\n\nবর্তমানৰ সুবিধাসমূহ:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nআপুনি ছেটিংসমূহ > সাধ্য-সুবিধাত বাছনি কৰা সুবিধাসমূহ সলনি কৰিব পাৰে।"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"টেকবেক অন কৰিবনে?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"দুয়োটা ভলিউম কী কিছুসময়ৰ বাবে ধৰি থাকিলে টেকবেক অন কৰে, যিটো দৃষ্টিহীন অথবা কম দৃষ্টিশক্তি থকা লোকৰ বাবে সহায়ক এটা স্ক্ৰীন ৰীডাৰ। .টেকবেকে আপোনাৰ ডিভাইচটোৱে কাম কৰাৰ ধৰণ সম্পূৰ্ণৰূপে সলনি কৰিব পাৰে।\n\nআপুনি ছেটিংসমূহ > সাধ্য-সুবিধাত থকা এই শ্বৰ্টকাটটো অন্য সুবিধালৈ সলনি কৰিব পাৰে।"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> অন কৰিবনে?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"দুয়োটা ভলিউম কী কিছুসময়ৰ বাবে ধৰি থাকিলে এটা সাধ্য- সুবিধা <xliff:g id="SERVICE">%1$s</xliff:g> অন কৰে। এইটোৱে আপোনাৰ ডিভাইচটোৱে কাম কৰাৰ ধৰণ সলনি কৰিব পাৰে।\n\nআপুনি ছেটিংসমূহ > সাধ্য-সুবিধাসমূহত এই শ্বৰ্টকাটটো অন্য এটা সুবিধালৈ সলনি কৰিব পাৰে।"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"অন কৰক"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"অন নকৰিব"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>ক আপোনাৰ ডিভাইচটোৰ সম্পূর্ণ নিয়ন্ত্ৰণ দিবনে?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"যদি আপুনি <xliff:g id="SERVICE">%1$s</xliff:g> অন কৰে, তেন্তে আপোনাৰ ডিভাইচটোৱে ডেটা এনক্ৰিপশ্বনৰ গুণগত মান উন্নত কৰিবলৈ স্ক্ৰীন লক ব্যৱহাৰ নকৰে।"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"আপোনাক সাধ্য সুবিধাৰ প্ৰয়োজনসমূহৰ জৰিয়তে সহায় কৰা এপ্সমূহৰ বাবে সম্পূর্ণ নিয়ন্ত্ৰণৰ সুবিধাটো সঠিক যদিও অধিকাংশ এপৰ বাবে এয়া সঠিক নহয়।"</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"অনুমতি দিয়ক"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"অস্বীকাৰ কৰক"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"কোনো এটা সুবিধা ব্যৱহাৰ কৰিবলৈ সেইটোত টিপক:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"সাধ্য-সুবিধা বুটামটোৰ জৰিয়তে ব্যৱহাৰ কৰিবলৈ সুবিধাসমূহ বাছনি কৰক"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"ভলিউম কীৰ শ্বৰ্টকাটটোৰ জৰিয়তে ব্যৱহাৰ কৰিবলৈ সুবিধাসমূহ বাছনি কৰক"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> বন্ধ কৰা হৈছে"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"শ্বৰ্টকাটসমূহ সম্পাদনা কৰক"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"কৰা হ’ল"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"শ্বৰ্টকাট ব্যৱহাৰ কৰক"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ৰং বিপৰীতকৰণ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ৰং শুধৰণী"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কীসমূহ ধৰি ৰাখক। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অন কৰা হ\'ল।"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ভলিউম কীসমূহ ধৰি ৰাখক। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অফ কৰা হ\'ল।"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ব্যৱহাৰ কৰিবলৈ দুয়োটা ভলিউম বুটাম তিনি ছেকেণ্ডৰ বাবে হেঁচি ৰাখক"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"আপুনি সাধ্য-সুবিধাৰ বুটামটো টিপিলে ব্যৱহাৰ কৰিবলৈ এটা সুবিধা বাছনি কৰক:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"সাধ্য-সুবিধাৰ নির্দেশৰ জৰিয়তে ব্যৱহাৰ কৰিবলৈ এটা সুবিধা বাছনি কৰক (দুটা আঙুলিৰে স্ক্রীনখনৰ একেবাৰে তলিৰ পৰা ওপৰলৈ ছোৱাইপ কৰক):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"সাধ্য-সুবিধাৰ নির্দেশৰ জৰিয়তে ব্যৱহাৰ কৰিবলৈ এটা সুবিধা বাছনি কৰক (তিনিটা আঙুলিৰে স্ক্রীনখনৰ একেবাৰে তলিৰ পৰা ওপৰলৈ ছোৱাইপ কৰক):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"সুবিধাসমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ সাধ্য-সুবিধাৰ বুটামটো স্পৰ্শ কৰি ধৰি ৰাখক।"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"সুবিধাসমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ দুটা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক।"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"সুবিধাসমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ তিনিটা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক।"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"বিবৰ্ধন"</string> <string name="user_switched" msgid="7249833311585228097">"বৰ্তমানৰ ব্যৱহাৰকাৰী <xliff:g id="NAME">%1$s</xliff:g>।"</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>লৈ সলনি কৰি থকা হৈছে…"</string> @@ -2050,8 +2027,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g>টা ফাইল</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g>টা ফাইল</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"শ্বেয়াৰ কৰিবলৈ চুপাৰিছ কৰা কোনো লোক নাই"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"এপ্সমূহৰ সূচী"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"এই এপ্টোক ৰেকর্ড কৰাৰ অনুমতি দিয়া হোৱা নাই কিন্তু ই এই ইউএছবি ডিভাইচটোৰ জৰিয়তে অডিঅ\' ৰেকর্ড কৰিব পাৰে।"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"গৃহ"</string> @@ -2073,249 +2049,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"কৰ্মস্থান"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ব্যক্তিগত ভিউ"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"কৰ্মস্থানৰ ভিউ"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"কৰ্মস্থানৰ এপ্সমূহৰ সৈতে এইটো শ্বেয়াৰ কৰিব নোৱাৰি"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক আপোনাৰ কৰ্মস্থানৰ প্ৰ\'ফাইলত থকা এপ্সমূহৰ সৈতে এই সমলটো শ্বেয়াৰ কৰিবলৈ নিদিয়ে"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"কৰ্মস্থানৰ এপ্সমূহৰ জৰিয়তে এইটো খুলিব কৰিব নোৱাৰি"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক আপোনাৰ কৰ্মস্থানৰ প্ৰ\'ফাইলত থকা এপ্সমূহৰ জৰিয়তে এই সমলটো খুলিবলৈ নিদিয়ে"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"ব্যক্তিগত এপ্সমূহৰ সৈতে এইটো শ্বেয়াৰ কৰিব নোৱাৰি"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক আপোনাৰ ব্যক্তিগত প্ৰ\'ফাইলত থকা এপ্সমূহৰ সৈতে এই সমলটো শ্বেয়াৰ কৰিবলৈ নিদিয়ে"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"ব্যক্তিগত এপ্সমূহৰ জৰিয়তে এইটো খুলিব কৰিব নোৱাৰি"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক আপোনাৰ ব্যক্তিগত প্ৰ\'ফাইলত থকা এপ্সমূহৰ জৰিয়তে এই সমলটো খুলিবলৈ নিদিয়ে"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"কৰ্মস্থানৰ প্ৰ\'ফাইলটো পজ কৰা আছে"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"অন কৰক"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"টেলিফ’নী কলসমূহত অডিঅ’ ৰেকৰ্ড অথবা প্লে’ কৰক"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ডিফ’ল্ট ডায়েলাৰ এপ্লিকেশ্বন হিচাপে আবণ্টন কৰিলে, এই এপ্টোক টেলিফ’নী কলসমূহত অডিঅ’ ৰেকৰ্ড অথবা প্লে’ কৰিবলৈ অনুমতি দিয়ে।"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"কোনো কর্মস্থানৰ এপে এই সমলটো সমর্থন কৰিব নোৱাৰে"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"কোনো কর্মস্থানৰ এপে এই সমলটো খুলিব নোৱাৰে"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"কোনো ব্যক্তিগত এপে এই সমলটো সমর্থন কৰিব নোৱাৰে"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"কোনো ব্যক্তিগত এপে এই সমলটো খুলিব নোৱাৰে"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"ছিম নেটৱৰ্ক আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"ছিম নেটৱৰ্ক আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"ছিম কৰ্পৰে\'ট আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"ছিম সেৱা প্ৰদানকাৰীক আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"ছিম আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK দিয়ক"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK দিয়ক"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK দিয়ক"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK দিয়ক"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK দিয়ক"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM network1 আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM network2 আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM hrpd আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM কৰ্পৰে\'ট আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM সেৱা প্ৰদানকাৰীক আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK দিয়ক"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK দিয়ক"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK দিয়ক"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK দিয়ক"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK দিয়ক"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK দিয়ক"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP সমতুল্য গৃহ PLMN আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"নেটৱৰ্ক ছাবছেট সেৱা প্ৰদানকাৰীক আনলক কৰা পিন"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"ছিম নেটৱৰ্ক আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"ছিম নেটৱৰ্কৰ ছাবছেট আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"ছিম সেৱা প্ৰদানকাৰীক আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"ছিম কৰ্পৰে\'ট আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"ছিম আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM network1 আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM network2 আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM hrpd আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM সেৱা প্ৰদানকাৰীক আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM কৰ্পৰে\'ট আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP সমতুল্য গৃহ PLMN আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"নেটৱৰ্ক ছাবছেট সেৱা প্ৰদানকাৰীক আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK আনলক কৰিবলৈ অনুৰোধ কৰি থকা হৈছে…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"ছিম নেটৱৰ্ক আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"ছিম নেটৱৰ্কৰ ছাবছেট আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"ছিম সেৱা প্ৰদানকাৰীক আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"ছিম কৰ্পৰে\'ট আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"ছিম আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM Network1 আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM Network2 আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM কৰ্পৰে\'ট আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM সেৱা প্ৰদানকাৰীক আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM আনলক কৰাৰ অনুৰোধটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK আনলক কৰাটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK আনলক কৰাটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK আনলক কৰাটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK আনলক কৰাটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK আনলক কৰাটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK আনলক কৰাটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK আনলক কৰাটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK আনলক কৰাটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK আনলক কৰাটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK আনলক কৰাটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK আনলক কৰাটো বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP সমতুল্য গৃহ PLMN আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"নেটৱৰ্ক ছাবছেট সেৱা প্ৰদানকাৰীক আনলক কৰাৰ অনুৰোধ বিফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"ছিম নেটৱৰ্ক আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"ছিম নেটৱৰ্কৰ ছাবছেট আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"ছিম সেৱা প্ৰদানকাৰীক আনলক কৰাটো সফল হ\'ল ।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM কৰ্পৰে\'ট আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"ছিম আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM Network1 আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM Network2 আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM সেৱা প্ৰদানকাৰীক আনলক কৰাটো সফল কৰিছে।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM কৰ্পৰে\'ট আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP সমতুল্য গৃহ PLMN আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID আনলক কৰাৰ অনুৰোধ সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI আনলক কৰাটো সফল হ\'ল।"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"নেটৱৰ্ক ছাবছেট সেৱা প্ৰদানকাৰীক আনলক কৰাটো সফল হ\'ল।"</string> </resources> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index e72ac4e21d1d..faeaa655bedd 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Admin şəxsi istifadə üçün cihazdan imtina etdi"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Cihaz idarə olunur"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Təşkilat bu cihazı idarə edir və şəbəkənin ötürülməsinə nəzarət edə bilər. Detallar üçün klikləyin."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Məkan ayarları admininiz tərəfindən dəyişildi"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Məkan ayarlarınıza baxmaq üçün toxunun."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Tətbiqlər məkanınıza daxil ola bilər"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Ətraflı məlumat üçün İT admininiz ilə əlaqə saxlayın"</string> <string name="country_detector" msgid="7023275114706088854">"Ölkə Aşkarlayıcısı"</string> <string name="location_service" msgid="2439187616018455546">"Məkan Xidməti"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Bildiriş Xidməti"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Cihazınız təmizlənəcəkdir"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Admin tətbiqini istifadə etmək mümkün deyil. Cihaz indi təmizlənəcək.\n\nSualınız varsa, təşkilatın admini ilə əlaqə saxlayın."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Çap <xliff:g id="OWNER_APP">%s</xliff:g> tərəfindən deaktiv edildi."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Şəxsi tətbiqləri blokdan çıxarın"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Tətbiqlər sabah bloklanacaq"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"İT admininiz iş profilinizə <xliff:g id="DAYS">%1$d</xliff:g> gündən artıq fasilə verilməsinə icazə vermir"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"İş profilini aktiv edin"</string> <string name="me" msgid="6207584824693813140">"Mən"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Planşet seçimləri"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV seçimləri"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Telefon seçimləri"</string> <string name="global_action_lock" msgid="6949357274257655383">"Ekran kilidi"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Söndür"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Yandırıb-söndürmə"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Yenidən başladın"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Təcili"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Baq hesabatı"</string> <string name="global_action_logout" msgid="6093581310002476511">"Sessiyanı sonlandırın"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"əlavə məkan provayderi əmrlərinə çıxış"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Tətbiqə ekstra məkan provayder əmrlərinə girişə imkan verir. Bu, tətbiqə GPS və ya digər lokal mənbələrlə əməliyyata müdaxiləyə imkan verə bilər."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"yalnız ön planda dəqiq məkana daxil olun"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Bu tətbiq yalnız ön fonda olduqda dəqiq məkanınızı əldə edə bilər. Tətbiqin bunlardan istifadə etməsi üçün məkan xidmətləri aktiv edilməli və cihazda əlçatan olmalıdır. Bu, batareya sərfiyyatını artıra bilər."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Bu tətbiq istifadə olunan zaman məkan xidmətlərindən dəqiq məkanınızı əldə edə bilər. Tətbiq tərəfindən məkanın əldə edilməsi üçün cihazınızda məkan xidmətləri aktiv olmalıdır. Bu zaman batareya istifadəsi arta bilər."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"yalnız ön planda təqribi məkana giriş"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Bu tətbiq yalnız ön fonda olduqda təqribi məkanınızı əldə edə bilər. Tətbiqin istifadə edə bilməsi üçün məkan xidmətləri cihazda aktiv edilməli və əlçatan olmalıdır."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Bu tətbiq istifadə olunan zaman məkan xidmətlərindən təqribi məkanınızı əldə edə bilər. Tətbiq tərəfindən məkanın əldə edilməsi üçün cihazınızda məkan xidmətləri aktiv olmalıdır."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"arxa fonda məkan girişi"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Bu tətbiq ön planda məkana girişlə yanaşı, arxa fonda işləyərkən məkana giriş edə bilər."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Bu tətbiq istənilən vaxt, hətta tətbiq istifadə olunmadıqda belə, məkana giriş edə bilər."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"audio ayarlarınızı dəyişir"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Tətbiqə səs və hansı spikerin çıxış üçün istifadə olunduğu kimi qlobal səs ayarlarını dəyişdirməyə imkan verir."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"səs yaz"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"şəkil və video çəkmək"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Bu tətbiq istədiyiniz zaman kameranı istifadə edərək şəkil çəkə və video qeydə ala bilər."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Şəkil və video çəkmək üçün tətbiq və ya xidmətlərin sistem kameralarına girişinə icazə verin"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Bu icazəli və ya sistem tətbiqi istənilən vaxt sistem kamerasından istifadə edərək şəkil və videolar çəkə bilər. android.permission.CAMERA icazəsinin də tətbiq tərəfindən saxlanılmasını tələb edir"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Tətbiqə və ya xidmətə kamera cihazlarının açılması və ya bağlanması haqqında geri zənglər qəbul etməyə icazə verin."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Hansısa kamera cihazı açıldıqda və ya bağlandıqda (hansısa tətbiq tərəfindən) bu tətbiq geri çağırışlar qəbul edə bilər."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"vibrasiyaya nəzarət edir"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Tətbiqə vibratoru idarə etmə icazəsi verir."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Tətbiqə vibrasiya vəziyyətinə daxil olmaq imkanı verir."</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Cari kontent nəzərdən keçirilir"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Yeni <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Quraşdırmaq üçün klikləyin"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Fotoların və medianın köçürülməsi üçün"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> ilə bağlı problem"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Həll etmək üçün klikləyin"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> zədələnib. Düzəltmək üçün seçin."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Dəstəklənməyən <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"<xliff:g id="NAME">%s</xliff:g> bu cihaz tərəfindən dəstəklənmir. Dəstəklənən formatda ayarlamaq üçün tıklayın."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"<xliff:g id="NAME">%s</xliff:g> bu cihaz tərəfindən dəstəklənmir. Dəstəklənən formatda ayarlamaq üçün seçin."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> gözlənilmədən çıxarıldı"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Kontenti itirməmək üçün silmədən öncə medianı çıxarın"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> silindi"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Səsin həcmi tövsiyə olunan səviyyədən artıq olsun?\n\nYüksək səsi uzun zaman dinləmək eşitmə qabiliyyətinizə zərər vura bilər."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Əlçatımlılıq Qısayolu istifadə edilsin?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Qısayol aktiv olduqda, hər iki səs düyməsinə 3 saniyə basıb saxlamaqla əlçatımlılıq funksiyası başladılacaq."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Əlçatımlılıq funksiyaları aktiv edilsin?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Hər iki səs səviyyəsi düyməsinə bir neçə saniyə basıb saxladıqda əlçatımlılıq funksiyaları aktiv olur. Bu, cihazınızın işləmə qaydasını dəyişə bilər.\n\nCari funksiyalar:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nAyarlar və Əlçatımlılıq bölməsində seçilmiş funksiyaları dəyişə bilərsiniz."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack aktiv edilsin?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Hər iki səs səviyyəsi düyməsinə bir neçə saniyəlik basıb saxladıqda görmə qabiliyyəti məhdud və ya pis olan insanlar üçün faydalı ekran oxucusu olan TalkBack aktivləşir. TalkBack cihazınızın işləmə qaydasını tamamilə dəyişir.\n\nAyarlar və Əlçatımlılıq bölməsində bu qısayolu başqa bir funksiyaya dəyişə bilərsiniz."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> aktiv edilsin?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Hər iki səs səviyyəsi düyməsinə bir neçə saniyə basıb saxladıqda əlçatımlılıq funksiyası olan <xliff:g id="SERVICE">%1$s</xliff:g> aktiv olur. Bu, cihazınızın işləmə qaydasını dəyişə bilər.\n\nAyarlar və Əlçatımlılıq bölməsində bu qısayolu başqa bir funksiyata dəyişə bilərsiniz."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktiv edin"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Aktiv etməyin"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> xidmətinin cihaza tam nəzarət etməsinə icazə verilsin?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> aktiv olarsa, cihazınız data şifrələnməsini genişləndirmək üçün ekran kilidini istifadə etməyəcək."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Tam nəzarət əlçatımlılıq ehtiyaclarınızı ödəyən bəzi tətbiqlər üçün uyğundur."</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"İcazə verin"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"İmtina edin"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Funksiyanı istifadə etmək üçün onun üzərinə toxunun:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Əlçatımlılıq düyməsi ilə istifadə edəcəyiniz funksiyaları seçin"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Səs səviyyəsi düyməsinin qısayolu ilə istifadə edəcəyiniz funksiyaları seçin"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> deaktiv edilib"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Qısayolları redaktə edin"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Hazırdır"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Qısayol İstifadə edin"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Rəng İnversiyası"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Rəng korreksiyası"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Səs səviyyəsi düymələrinə basıb saxlayın. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktiv edildi."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Səs səviyyəsi düymələrinə basıb saxlayın. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> deaktiv edildi."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> istifadə etmək üçün hər iki səs düyməsini üç saniyə basıb saxlayın"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Əlçatımlılıq düyməsinə toxunduqda istifadə edəcəyiniz funksiyanı seçin:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Əlçatımlılıq jesti (iki barmağınızla ekranın aşağısından yuxarı doğru sürüşdürün) ilə istifadə edəcəyiniz funksiyanı seçin:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Əlçatımlılıq jesti (üç barmağınızla ekranın aşağısından yuxarı doğru sürüşdürün) ilə istifadə edəcəyiniz funksiyanı seçin:"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Funksiyalar arasında keçid etmək üçün əlçatımlılıq düyməsinə toxunub saxlayın."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Funksiyalar arasında keçid etmək üçün iki barmağınızla yuxarı sürüşdürüb saxlayın."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Funksiyalar arasında keçid etmək üçün üç barmağınızla yuxarı doğru sürüşdürüb saxlayın."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Böyütmə"</string> <string name="user_switched" msgid="7249833311585228097">"Cari istifadəçi <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> adına keçirilir…"</string> @@ -2050,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fayl</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> fayl</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Paylaşmaq üçün tövsiyə edilən biri yoxdur"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Tətbiq siyahısı"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Bu tətbiqə yazmaq icazəsi verilməyib, lakin, bu USB vasitəsilə səs yaza bilər."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Əsas səhifə"</string> @@ -2087,222 +2063,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Bu məzmunu heç bir iş tətbiqi ilə açmaq mümkün deyil"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Bu məzmunu heç bir şəxsi tətbiq dəstəkləyə bilmir"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Bu məzmunu heç bir şəxsi tətbiq ilə açmaq mümkün deyil"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Telefon zənglərində audio yazmaq və ya oxutmaq"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Defolt nömrəyığan tətbiq kimi təyin edildikdə, bu tətbiqə telefon zənglərində audio yazmaq və ya oxutmaq üçün icazə verir."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM şəbəkəsi kilidaçma PİN\'i"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM Şəbəkəsi Alt Dəstinin kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM korporativ kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM xidmət provayderi kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK kodu daxil edin"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK kodu daxil edin"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK kodu daxil edin"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK kodu daxil edin"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK kodu daxil edin"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM network1 kilidaçma PIN\"i"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM network2 kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM hrpd kiliadaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM korporativ kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM xidmət provayderi kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK kodu daxil edin"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK kodu daxil edin"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK kodu daxil edin"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK kodu daxil edin"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK kodu daxil edin"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK kodu daxil edin"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Ekvivalent Daxili PLMN kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Alt şəbəkənin xidmət provayderi kilidaçma PIN\'i"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM şəbəkəsi kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM şəbəkəsi alt dəstinin kilidaçması sorğulanır …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM xidmət provayderi kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"SIM korporativ kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM network1 kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM network2 kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM hrpd kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM xidmət provayderi kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM korporativ kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP Ekvivalent Daxili PLMN kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Şəbəkə alt dəstinin xidmət provayderi kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK kilidaçması sorğulanır…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM Şəbəkəsi kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM Şəbəkəsi Alt Dəstinin kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM Xidmət Provayderi kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM Korporativ kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM Network1 kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM Network2 kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM Korporativ kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM Xidmət Provayderi kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK kilidaçması uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK kilidaçması uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK kilidaçması uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK kilidaçması uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK kilidaçması uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK kilidaçması uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK kilidaçması uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK kilidaçması uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK kilidaçması uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK kilidaçması uğursuz oldu."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK kilidaçması uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Ekvivalent Daxili PLMN kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Alt şəbəkənin xidmət provayderi kilidaçma sorğusu uğursuz oldu."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM Şəbəkəsi kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM Şəbəkəsi Alt Dəstinin kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM Xidmət Provayderi kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM Korporativ kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM Network1 kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM Network2 kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM Xidmət Provayderi kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM Korporativ kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Ekvivalent Daxili PLMN kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI kilidaçması uğurlu oldu."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Şəbəkə alt dəstinin xidmət provayderi kilidaçması uğurlu oldu."</string> </resources> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index c32c2eb40770..bd11a8fdd378 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -193,8 +193,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrator je ustupio uređaj za ličnu upotrebu"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Uređajem se upravlja"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Organizacija upravlja ovim uređajem i može da nadgleda mrežni saobraćaj. Dodirnite za detalje."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Administrator je promenio podešavanja lokacije"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Dodirnite da biste videli podešavanja lokacije."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikacije mogu da pristupaju vašoj lokaciji"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Obratite se IT administratoru da biste saznali više"</string> <string name="country_detector" msgid="7023275114706088854">"Detektor zemlje"</string> <string name="location_service" msgid="2439187616018455546">"Usluga lokacije"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Usluga obaveštenja senzora"</string> @@ -202,14 +202,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će biti obrisan"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Ne možete da koristite ovu aplikaciju za administratore. Uređaj će sada biti obrisan.\n\nAko imate pitanja, kontaktirajte administratora organizacije."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Štampanje je onemogućila aplikacija <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Odblokirajte lične aplikacije"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Aplik. će se blokirati sutra"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT administrator vam ne dozvoljava da profil za Work pauzirate više od <xliff:g id="DAYS">%1$d</xliff:g> dana"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Uključi profil za Work"</string> <string name="me" msgid="6207584824693813140">"Ja"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcije za tablet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcije Android TV-a"</string> @@ -243,10 +239,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opcije telefona"</string> <string name="global_action_lock" msgid="6949357274257655383">"Zaključaj ekran"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Isključi"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Napajanje"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Restartuj"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Hitni poziv"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Izveštaj o grešci"</string> <string name="global_action_logout" msgid="6093581310002476511">"Završi sesiju"</string> @@ -431,11 +425,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"pristup dodatnim komandama dobavljača lokacije"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Omogućava aplikaciji da pristupa dodatnim komandama davaoca usluga lokacije. To može da omogući aplikaciji da utiče na rad GPS-a ili drugih izvora lokacije."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"pristup preciznoj lokaciji samo u prvom planu"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ova aplikacija može da odredi vašu tačnu lokaciju samo kada radi u prvom planu. Usluge lokacije moraju da budu uključene i dostupne na uređaju da bi aplikacija mogla da ih koristi. To može da poveća potrošnju baterije."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ova aplikacija može da odredi vašu tačnu lokaciju na osnovu usluga lokacije dok se aplikacija koristi. Usluge lokacije za uređaj moraju da budu uključene da bi aplikacija odredila lokaciju. To može da poveća potrošnju baterije."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"pristup približnoj lokaciji samo u prvom planu"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ova aplikacija može da odredi vašu približnu lokaciju samo kada radi u prvom planu. Usluge lokacije moraju da budu uključene i dostupne na uređaju da bi aplikacija mogla da ih koristi."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ova aplikacija može da odredi vašu približnu lokaciju na osnovu usluga lokacije dok se aplikacija koristi. Usluge lokacije za uređaj moraju da budu uključene da bi aplikacija odredila lokaciju."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"pristup lokaciji u pozadini"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ova aplikacija može da pristupa lokaciji dok radi u pozadini, kao i kada radi u prvom planu."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ova aplikacija može da pristupa lokaciji u bilo kom trenutku, čak i dok se aplikacija ne koristi."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"promena audio podešavanja"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Dozvoljava aplikaciji da menja globalna audio podešavanja kao što su jačina zvuka i izbor zvučnika koji se koristi kao izlaz."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"snimanje audio zapisa"</string> @@ -447,11 +441,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"snimanje fotografija i video snimaka"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Ova aplikacija može da snima fotografije i video snimke pomoću kamere u bilo kom trenutku."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Dozvolite nekoj aplikaciji ili usluzi da pristupa kamerama sistema da bi snimala slike i video snimke"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ova privilegovana sistemska aplikacija može da snima slike i video snimke pomoću kamere sistema u bilo kom trenutku. Aplikacija treba da ima i dozvolu android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Dozvolite aplikaciji ili usluzi da dobija povratne pozive o otvaranju ili zatvaranju uređaja sa kamerom."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ova aplikacija može da dobija povratne pozive kada se bilo koji uređaj sa kamerom otvara ili zatvara (pomoću neke aplikacije)."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kontrola vibracije"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Dozvoljava aplikaciji da kontroliše vibraciju."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Dozvoljava aplikaciji da pristupa stanju vibriranja."</string> @@ -1370,13 +1362,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Pregleda se aktuelni sadržaj"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Novi/a <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Dodirnite da biste podesili"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Za prenos slika i medija"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problem sa: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Dodirnite da biste ispravili"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Medij <xliff:g id="NAME">%s</xliff:g> je oštećen. Izaberite da ga popravite."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Uređaj <xliff:g id="NAME">%s</xliff:g> nije podržan"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Ovaj uređaj ne podržava ovaj uređaj <xliff:g id="NAME">%s</xliff:g>. Dodirnite da biste podesili podržani format."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Ovaj uređaj ne podržava ovaj medij (<xliff:g id="NAME">%s</xliff:g>). Izaberite da ga podesite u podržanom formatu."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Uređaj <xliff:g id="NAME">%s</xliff:g> je neočekivano uklonjen"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Izbacite medijum pre nego što ga uklonite da ne biste izgubili sadržaj"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> je uklonjen/a"</string> @@ -1646,24 +1642,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite da pojačate zvuk iznad preporučenog nivoa?\n\nSlušanje glasne muzike duže vreme može da vam ošteti sluh."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li da koristite prečicu za pristupačnost?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kada je prečica uključena, pritisnite oba dugmeta za jačinu zvuka da biste pokrenuli funkciju pristupačnosti."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Želite li da uključite funkcije pristupačnosti?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Ako zadržite oba tastera za jačinu zvuka par sekundi, uključiće se funkcije pristupačnosti. To može da promeni način rada uređaja.\n\nPostojeće funkcije:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nMožete da promenite izabrane funkcije u odeljku Podešavanja > Pristupačnost."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Želite li da uključite TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Ako zadržite oba tastera za jačinu zvuka par sekundi, uključuje se TalkBack, čitač ekrana koji je koristan za slepe i slabovide osobe. TalkBack potpuno menja način rada uređaja.\n\nMožete da promenite funkciju na koju se odnosi ova prečica u odeljku Podešavanja > Pristupačnost."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Želite li da uključite uslugu <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ako zadržite oba tastera za jačinu zvuka par sekundi, uključuje se <xliff:g id="SERVICE">%1$s</xliff:g>, funkcija pristupačnosti. To može da promeni način rada uređaja.\n\nMožete da promenite funkciju na koju se odnosi ova prečica u odeljku Podešavanja > Pristupačnost."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Uključi"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ne uključuj"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Želite li da dozvolite da usluga <xliff:g id="SERVICE">%1$s</xliff:g> ima potpunu kontrolu nad uređajem?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ako uključite uslugu <xliff:g id="SERVICE">%1$s</xliff:g>, uređaj neće koristiti zaključavanje ekrana da bi poboljšao šifrovanje podataka."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Potpuna kontrola je primerena za aplikacije koje vam pomažu kod usluga pristupačnosti, ali ne i za većinu aplikacija."</string> @@ -1674,10 +1661,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Dozvoli"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Odbij"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Dodirnite neku funkciju da biste počeli da je koristite:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Odaberite funkcije koje ćete koristiti sa dugmetom Pristupačnost"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Odaberite funkcije koje ćete koristiti sa tasterom jačine zvuka kao prečicom"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Usluga <xliff:g id="SERVICE_NAME">%s</xliff:g> je isključena"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Izmenite prečice"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gotovo"</string> @@ -1685,23 +1670,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Koristi prečicu"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korekcija boja"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Zadržali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Zadržali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Pritisnite i zadržite oba tastera za jačinu zvuka tri sekunde da biste koristili <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Izaberite funkciju koja će se koristiti kada dodirnete dugme Pristupačnost:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Odaberite funkciju koja će se koristiti pomoću pokreta za pristupačnost (pomoću dva prsta prevucite nagore od dna ekrana):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Odaberite funkciju koja će se koristiti pomoću pokreta za pristupačnost (pomoću tri prsta prevucite nagore od dna ekrana):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Da biste prelazili sa jedne funkcije na drugu, dodirnite i zadržite dugme Pristupačnost."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Da biste prelazili sa jedne funkcije na drugu, prevucite nagore pomoću dva prsta i zadržite."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Da biste prelazili sa jedne funkcije na drugu, prevucite nagore pomoću tri prsta i zadržite."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Uvećanje"</string> <string name="user_switched" msgid="7249833311585228097">"Aktuelni korisnik <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Prebacivanje na <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2084,8 +2061,7 @@ <item quantity="few"><xliff:g id="FILE_NAME_2">%s</xliff:g> i još <xliff:g id="COUNT_3">%d</xliff:g> datoteke</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> i još <xliff:g id="COUNT_3">%d</xliff:g> datoteka</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Nema preporučenih ljudi za deljenje"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lista aplikacija"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Ova aplikacija nema dozvolu za snimanje, ali bi mogla da snima zvuk pomoću ovog USB uređaja."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Početak"</string> @@ -2121,222 +2097,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Nijedna aplikacija za posao ne može da otvori ovaj sadržaj"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Nijedna lična aplikacija ne može da podržava ovaj sadržaj"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Nijedna lična aplikacija ne može da otvori ovaj sadržaj"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Snimanje ili puštanje zvuka u telefonskim pozivima"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Omogućava ovoj aplikaciji, kada je dodeljena kao podrazumevana aplikacija za pozivanje, da snima ili pušta zvuk u telefonskim pozivima."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN za otključavanje SIM mreže"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN za otključavanje podskupa SIM mreže"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN za otključavanje poslovne SIM kartice"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN za otključavanje dobavljača usluge SIM kartice"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN za otključavanje SIM kartice"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN za otključavanje RUIM mreže 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN za otključavanje RUIM mreže 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN za otključavanje RUIM hrpd-a"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN za otključavanje poslovne RUIM kartice"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN za otključavanje RUIM kartice dobavljača usluge"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN za otključavanje RUIM kartice"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN za otključavanje SPN-a"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN za otključavanje SP ekvivalentnog matičnog PLMN-a"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN za otključavanje ICCID-a"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN za otključavanje IMPI-ja"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN za otključavanje dobavljača usluge podskupa mreže"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Zahteva se otključavanje SIM mreže…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Zahteva se otključavanje podskupa SIM mreže…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Zahteva se otključavanje dobavljača usluge SIM kartice…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Zahteva se otključavanje poslovne SIM kartice…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Zahteva se otključavanje pomoću PUK-a…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Zahteva se otključavanje pomoću PUK-a…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Zahteva se otključavanje pomoću PUK-a…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Zahteva se otključavanje pomoću PUK-a…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Zahteva se otključavanje pomoću PUK-a…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Zahteva se otključavanje SIM kartice…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Zahteva se otključavanje RUIM mreže 1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Zahteva se otključavanje RUIM mreže 2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Zahteva se otključavanje RUIM hrpd-a…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Zahteva se otključavanje RUIM kartice dobavljača usluge…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Zahteva se otključavanje poslovne RUIM kartice…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Zahteva se otključavanje SPN-a…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Zahteva se otključavanje SP ekvivalentnog matičnog PLMN-a…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Zahteva se otključavanje ICCID-a…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Zahteva se otključavanje IMPI-ja…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Zahteva se otključavanje dobavljača usluge podskupa mreže…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Zahteva se otključavanje RUIM kartice…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Zahteva se otključavanje pomoću PUK-a…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Zahteva se otključavanje pomoću PUK-a…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Zahteva se otključavanje pomoću PUK-a…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Zahteva se otključavanje pomoću PUK-a…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Zahteva se otključavanje pomoću PUK-a…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Zahteva se otključavanje pomoću PUK-a…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Zahtev za otključavanje SIM mreže nije uspeo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Zahtev za otključavanje podskupa SIM mreže je uspeo."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Zahtev za otključavanje dobavljača usluge SIM kartice nije uspeo."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Zahtev za otključavanje poslovne SIM kartice nije uspeo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Zahtev za otključavanje SIM kartice nije uspeo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Zahtev za otključavanje RUIM mreže 1 nije uspeo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Zahtev za otključavanje RUIM mreže 2 nije uspeo."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Zahtev za otključavanje RUIM hrpd-a nije uspeo."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Zahtev za otključavanje poslovne RUIM kartice nije uspeo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Zahtev za otključavanje RUIM kartice dobavljača usluge nije uspeo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Zahtev za otključavanje RUIM kartice nije uspeo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Otključavanje pomoću PUK-a nije uspelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Otključavanje pomoću PUK-a nije uspelo."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Otključavanje pomoću PUK-a nije uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Otključavanje pomoću PUK-a nije uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Otključavanje pomoću PUK-a nije uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Otključavanje pomoću PUK-a nije uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Otključavanje pomoću PUK-a nije uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Otključavanje pomoću PUK-a nije uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Otključavanje pomoću PUK-a nije uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Otključavanje pomoću PUK-a nije uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Otključavanje pomoću PUK-a nije uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Zahtev za otključavanje SPN-a nije uspeo."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Zahtev za otključavanje SP ekvivalentnog matičnog PLMN-a nije uspeo."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Zahtev za otključavanje ICCID-a nije uspeo."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Zahtev za otključavanje IMPI-ja nije uspeo."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Zahtev za otključavanje dobavljača usluge podskupa mreže nije uspeo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Otključavanje SIM mreže je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Otključavanje podskupa SIM mreže je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Otključavanje dobavljača usluge SIM kartice je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Otključavanje poslovne SIM kartice je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Otključavanje SIM kartice je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Otključavanje RUIM mreže 1 je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Otključavanje RUIM mreže 2 je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Otključavanje RUIM hrpd-a je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Zahtev za otključavanje RUIM kartice dobavljača usluge je uspeo."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Otključavanje poslovne RUIM kartice je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Otključavanje RUIM kartice je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Otključavanje pomoću PUK-a je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Otključavanje pomoću PUK-a je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Otključavanje pomoću PUK-a je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Otključavanje pomoću PUK-a je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Otključavanje pomoću PUK-a je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Otključavanje pomoću PUK-a je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Otključavanje pomoću PUK-a je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Otključavanje pomoću PUK-a je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Otključavanje pomoću PUK-a je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Otključavanje pomoću PUK-a je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Otključavanje pomoću PUK-a je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Otključavanje SPN-a je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Otključavanje SP ekvivalentnog matičnog PLMN-a je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Otključavanje ICCID-a je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Otključavanje IMPI-ja je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Zahtev za otključavanje dobavljača usluge podskupa mreže je uspeo."</string> </resources> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 4ca0e9dbadc7..2d5d510b30ab 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -195,8 +195,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Адміністратар пераналадзіў прыладу для асабістага выкарыстання"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Прылада знаходзіцца пад кіраваннем"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Ваша арганізацыя кіруе гэтай прыладай і можа сачыць за сеткавым трафікам. Дакраніцеся для атрымання дадатковай інфармацыі."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Налады месцазнаходжання зменены адміністратарам"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Націсніце, каб праглядзець налады месцазнаходжання."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Праграмы могуць атрымліваць даныя пра ваша месцазнаходжанне"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Каб даведацца больш, звярніцеся да ІТ-адміністратара"</string> <string name="country_detector" msgid="7023275114706088854">"Дэтэктар краіны"</string> <string name="location_service" msgid="2439187616018455546">"Служба геалакацыі"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Служба апавяшчэнняў датчыка"</string> @@ -204,14 +204,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Даныя вашай прылады будуць сцерты"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Немагчыма выкарыстоўваць праграму адміністравання. Звесткі на вашай прыладзе будуць выдалены.\n\nКалі ў вас ёсць пытанні, звярніцеся да адміністратара арганізацыі."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Друк адключаны ўладальнікам праграмы <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Разблакіруйце праграмы"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Прагр. будуць заблак. заўтра"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Ваш ІТ-адміністратар не дазволіў прыпыняць ваш працоўны профіль больш чым на <xliff:g id="DAYS">%1$d</xliff:g> сут."</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Уключыць працоўны профіль"</string> <string name="me" msgid="6207584824693813140">"Я"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Параметры планшэта"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Параметры Android TV"</string> @@ -245,10 +241,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Параметры тэлефона"</string> <string name="global_action_lock" msgid="6949357274257655383">"Блакіроўка экрана"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Выключыць"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Кнопка сілкавання"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Перазапусціць"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Экстранны выклік"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Справаздача пра памылкі"</string> <string name="global_action_logout" msgid="6093581310002476511">"Скончыць сеанс"</string> @@ -434,11 +428,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"доступ да дадатковых камандаў пастаўшчыка месцазнаходжання"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Дазваляе праграме атрымліваць доступ да дадатковых каманд службаў вызначэння месцазнаходжання. Гэта можа дазволіць праграме ўмешвацца ў функцыянаванне GPS або іншых крыніц даных аб месцазнаходжаннi."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"доступ да дакладнага месцазнаходжання толькі ў асноўным рэжыме"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Гэта праграма можа атрымліваць звесткі пра ваша дакладнае месцазнаходжанне толькі ў актыўным рэжыме. Службы геалакацыі павінны быць уключаны і даступныя на вашай прыладзе, каб праграма магла імі карыстацца. Гэта можа павялічыць спажыванне зараду акумулятара."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Падчас выкарыстання гэта праграма можа атрымліваць ад службаў геалакацыі звесткі пра ваша дакладнае месцазнаходжанне. Каб праграма мела такія звесткі, на вашай прыладзе павінны быць уключаны службы геалакацыі. Магчымае павышэнне выкарыстання зараду акумулятара."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"доступ да прыблізнага месцазнаходжання толькі ў актыўным рэжыме"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Гэта праграма можа атрымліваць звесткі пра ваша прыблізнае месцазнаходжанне толькі ў актыўным рэжыме. Службы геалакацыі павінны быць уключаны і даступныя на вашай прыладзе, каб праграма магла імі карыстацца."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Падчас выкарыстання гэта праграма можа атрымліваць ад службаў геалакацыі звесткі пра ваша прыблізнае месцазнаходжанне. Каб праграма мела такія звесткі, на вашай прыладзе павінны быць уключаны службы геалакацыі."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"доступ да вызначэння месцазнаходжання ў фонавым рэжыме"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Гэта праграма можа мець доступ да даных пра месцазнаходжанне не толькі ў актыўным, але і ў фонавым рэжыме."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Гэта праграма можа мець доступ да даных пра месцазнаходжанне ў любы час, нават калі яна не выкарыстоўваецца."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"змяняць налады аудыё"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Дазваляе прыкладанням змяняць глабальныя налады гуку, такія як моц і тое, што дынамік выкарыстоўваецца для выхаду."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"запіс аўдыя"</string> @@ -450,11 +444,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"рабіць фатаграфіі і відэа"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Гэта праграма можа рабіць фота і запісваць відэа з дапамогай камеры ў любы час."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Дазволіць праграме або сэрвісу атрымліваць доступ да сістэмных камер, каб здымаць фота і запісваць відэа"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Гэта прыярытэтная ці сістэмная праграма можа здымаць фота і запісваць відэа з дапамогай сістэмнай камеры. Праграме таксама патрэбны дазвол android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Дазволіць праграме ці сэрвісу атрымліваць зваротныя выклікі наконт адкрыцця ці закрыцця прылад камеры."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Гэта праграма можа атрымліваць зваротныя выклікі, калі адкрываецца (праграмай) або закрываецца прылада камеры."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"кіраванне вібрацыяй"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Дазваляе прыкладанням кіраваць вібрацыяй."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Дазваляе праграме атрымліваць доступ да вібрасігналу."</string> @@ -1145,7 +1137,7 @@ <string name="paste_as_plain_text" msgid="7664800665823182587">"Уставіць як звычайны тэкст"</string> <string name="replace" msgid="7842675434546657444">"Замяніць..."</string> <string name="delete" msgid="1514113991712129054">"Выдаліць"</string> - <string name="copyUrl" msgid="6229645005987260230">"Скапіяваць URL"</string> + <string name="copyUrl" msgid="6229645005987260230">"Скапіраваць URL-адрас"</string> <string name="selectTextMode" msgid="3225108910999318778">"Выбраць тэкст"</string> <string name="undo" msgid="3175318090002654673">"Адрабіць"</string> <string name="redo" msgid="7231448494008532233">"Узнавіць"</string> @@ -1390,13 +1382,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Правяраецца змесціва"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Знойдзена новая прылада: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Дакраніцеся, каб наладзіць"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Для перадачы фатаграфій і медыяфайлаў"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Праблема з носьбітам (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Націсніце, каб выправіць"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Носьбіт <xliff:g id="NAME">%s</xliff:g> пашкоджаны. Выберыце, каб выправіць."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> не падтрымліваецца"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Гэта прылада не падтрымлівае носьбіт <xliff:g id="NAME">%s</xliff:g>. Дакраніцеся, каб наладзіць яго ў фармаце, які падтрымліваецца."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Гэта прылада не падтрымлівае носьбіт <xliff:g id="NAME">%s</xliff:g>. Выберыце, каб наладзіць яго ў фармаце, які падтрымліваецца."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Носьбіт <xliff:g id="NAME">%s</xliff:g> нечакана выняты"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Адключыце носьбіт перад тым, як дастаць яго, каб не страціць змесціва"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Носьбіт (<xliff:g id="NAME">%s</xliff:g>) выняты"</string> @@ -1668,24 +1664,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Павялiчыць гук вышэй рэкамендаванага ўзроўню?\n\nДоўгае праслухоўванне музыкi на вялiкай гучнасцi можа пашкодзiць ваш слых."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Выкарыстоўваць камбінацыю хуткага доступу для спецыяльных магчымасцей?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Калі хуткі доступ уключаны, вы можаце націснуць абедзве кнопкі гучнасці і ўтрымліваць іх 3 секунды, каб запусціць функцыю спецыяльных магчымасцей."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Уключыць спецыяльныя магчымасці?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Утрымліванне націснутымі абедзвюх клавіш гучнасці на працягу некалькіх секунд уключае спецыяльныя магчымасці. У выніку ваша прылада можа пачаць працаваць па-іншаму.\n\nБягучыя функцыі:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nВыбраныя функцыі можна змяніць у меню \"Налады > Спецыяльныя магчымасці\"."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Уключыць TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Утрымліванне націснутымі абедзвюх клавіш гучнасці на працягу некалькіх секунд уключае TalkBack – праграму для чытання з экрана, прызначаную для людзей з парушэннямі зроку. TalkBack поўнасцю мяняе працу вашай прылады.\n\nВы можаце задаць гэта спалучэнне клавіш для іншай функцыі ў меню \"Налады > Спецыяльныя магчымасці\"."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Уключыць службу \"<xliff:g id="SERVICE">%1$s</xliff:g>\"?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Утрымліванне націснутымі абедзвюх клавіш гучнасці на працягу некалькіх секунд уключае службу \"<xliff:g id="SERVICE">%1$s</xliff:g>\", якая з\'яўляецца спецыяльнай магчымасцю. У выніку ваша прылада можа пачаць працаваць па-іншаму.\n\nВы можаце задаць гэта спалучэнне клавіш для іншай функцыі ў меню \"Налады > Спецыяльныя магчымасці\"."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Уключыць"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Не ўключаць"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Дазволіць сэрвісу \"<xliff:g id="SERVICE">%1$s</xliff:g>\" мець поўны кантроль над вашай прыладай?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Калі вы ўключыце сэрвіс \"<xliff:g id="SERVICE">%1$s</xliff:g>\", на прыладзе не будзе выкарыстоўвацца блакіроўка экрана для паляпшэння шыфравання даных."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Поўны кантроль прызначаны для сэрвісаў спецыяльных магчымасцей, аднак не падыходзіць для большасці праграм."</string> @@ -1696,10 +1683,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дазволіць"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Адмовіць"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Каб пачаць выкарыстоўваць функцыю, націсніце на яе:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Выберыце функцыі, якія будзеце выкарыстоўваць з кнопкай спецыяльных магчымасцей"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Выберыце функцыі, якія будзеце выкарыстоўваць са спалучэннем клавішы гучнасці"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Сэрвіс \"<xliff:g id="SERVICE_NAME">%s</xliff:g>\" выключаны"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Змяніць ярлыкі"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Гатова"</string> @@ -1707,23 +1692,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Выкарыстоўваць камбінацыю хуткага доступу"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія колеру"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Карэкцыя колеру"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Клавішы гучнасці ўтрымліваліся націснутымі. Уключана служба \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Клавішы гучнасці ўтрымліваліся націснутымі. Служба \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" выключана."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Каб карыстацца сэрвісам \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\", націсніце і ўтрымлівайце на працягу трох секунд абедзве клавішы гучнасці"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Выберыце функцыю, якую будзеце выкарыстоўваць пры націску кнопкі спецыяльных магчымасцей:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Выберыце функцыю, якую будзеце выкарыстоўваць з жэстам спецыяльных магчымасцей (правесці двума пальцамі па экране знізу ўверх):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Выберыце функцыю, якую будзеце выкарыстоўваць з жэстам спецыяльных магчымасцей (правесці трыма пальцамі па экране знізу ўверх):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Каб пераключыцца на іншыя функцыі, націсніце і ўтрымлівайце кнопку спецыяльных магчымасцей."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Каб пераключыцца на іншую функцыю, правядзіце ўверх двума пальцамі і ўтрымлівайце іх на экране."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Каб пераключыцца на іншую функцыю, правядзіце ўверх трыма пальцамі і ўтрымлівайце іх на экране."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Павелічэнне"</string> <string name="user_switched" msgid="7249833311585228097">"Бягучы карыстальнік <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Пераход да <xliff:g id="NAME">%1$s</xliff:g>..."</string> @@ -2118,8 +2095,7 @@ <item quantity="many"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> файлаў</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> файла</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Няма кантактаў, з якімі рэкамендуецца абагульваць змесціва"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Спіс праграм"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"У гэтай праграмы няма дазволу на запіс, аднак яна зможа запісваць аўдыя праз гэту USB-прыладу."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Галоўная старонка"</string> @@ -2141,249 +2117,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"Працоўныя"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Прагляд асабістага змесціва"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Прагляд працоўнага змесціва"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Не ўдалося абагуліць гэта змесціва з працоўнымі праграмамі"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"Ваш ІТ-адміністратар не дазволіў вам абагульваць гэта змесціва з праграмамі ў вашым працоўным профілі"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Не ўдалося адкрыць гэта змесціва з працоўнымі праграмамі"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"Ваш ІТ-адміністратар не дазволіў вам адкрываць гэта змесціва з праграмамі ў вашым працоўным профілі"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Не ўдалося абагуліць гэта змесціва з асабістымі праграмамі"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"Ваш ІТ-адміністратар не дазволіў вам абагульваць гэта змесціва з праграмамі ў вашым асабістым профілі"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Не ўдалося адкрыць гэта змесціва з асабістымі праграмамі"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"Ваш ІТ-адміністратар не дазволіў вам адкрываць гэта змесціва з праграмамі ў вашым асабістым профілі"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Працоўны профіль прыпынены"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"Уключыць"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Запісваць або прайграваць аўдыя ў тэлефонных выкліках"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Дазваляе гэтай праграме (калі яна наладжана ў якасці стандартнага набіральніка нумара) запісваць або прайграваць аўдыя ў тэлефонных выкліках."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"Няма працоўных праграм, якія могуць падтрымліваць гэта змесціва"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Няма працоўных праграм, якія могуць адкрываць гэта змесціва"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Няма асабістых праграм, якія могуць падтрымліваць гэта змесціва"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Няма асабістых праграм, якія могуць адкрываць гэта змесціва"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN-код разблакіроўкі сеткі для SIM-карты"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN-код разблакіроўкі падмноства сеткі для SIM-карты"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN-код разблакіроўкі карпаратыўнай SIM-карты"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN-код разблакіроўкі паслуг аператара для SIM-карты"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN-код разблакіроўкі SIM-карты"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Увядзіце PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Увядзіце PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Увядзіце PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Увядзіце PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Увядзіце PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN-код разблакіроўкі сеткі1 для карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN-код разблакіроўкі сеткі2 для карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN-код разблакіроўкі HRPD для карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN-код разблакіроўкі карпаратыўнай карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN-код разблакіроўкі паслуг аператара для карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN-код разблакіроўкі карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Увядзіце PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Увядзіце PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Увядзіце PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Увядзіце PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Увядзіце PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Увядзіце PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN-код разблакіроўкі SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN-код разблакіроўкі кода SP і сеткавага кода ўнутры краіны"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN-код разблакіроўкі ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN-код разблакіроўкі IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN-код разблакіроўкі паслуг аператара падмноства сеткі"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Выконваецца запыт на разблакіроўку сеткі для SIM-карты…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Выконваецца запыт на разблакіроўку падмноства сеткі для SIM-карты…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Выконваецца запыт на разблакіроўку паслуг аператара для SIM-карты…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Выконваецца запыт на разблакіроўку карпаратыўнай SIM-карты…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Выконваецца запыт на разблакіроўку PUK-кодам…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Выконваецца запыт на разблакіроўку PUK-кодам…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Выконваецца запыт на разблакіроўку PUK-кодам…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Выконваецца запыт на разблакіроўку PUK-кодам…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Выконваецца запыт на разблакіроўку PUK-кодам…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Выконваецца запыт на разблакіроўку SIM-карты…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Выконваецца запыт на разблакіроўку сеткі1 для карты R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Выконваецца запыт на разблакіроўку сеткі2 для карты R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Выконваецца запыт на разблакіроўку HRPD для карты R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Выконваецца запыт на разблакіроўку паслуг аператара для карты R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Выконваецца запыт на разблакіроўку карпаратыўнай карты R-UIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Выконваецца запыт на разблакіроўку SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Выконваецца запыт на разблакіроўку кода SP і сеткавага кода ўнутры краіны…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Выконваецца запыт на разблакіроўку ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Выконваецца запыт на разблакіроўку IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Выконваецца запыт на разблакіроўку паслуг падмноства сеткі…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Выконваецца запыт на разблакіроўку карты R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Выконваецца запыт на разблакіроўку PUK-кодам…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Выконваецца запыт на разблакіроўку PUK-кодам…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Выконваецца запыт на разблакіроўку PUK-кодам…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Выконваецца запыт на разблакіроўку PUK-кодам…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Выконваецца запыт на разблакіроўку PUK-кодам…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Выконваецца запыт на разблакіроўку PUK-кодам…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Не ўдалося разблакіраваць сетку для SIM-карты."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Не ўдалося разблакіраваць падмноства сеткі для SIM-карты."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Не ўдалося разблакіраваць паслугі аператара для SIM-карты."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Не ўдалося разблакіраваць карпаратыўную SIM-карту."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Не ўдалося разблакіраваць SIM-карту."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Не ўдалося разблакіраваць Сетку1 для карты R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Не ўдалося разблакіраваць Сетку2 для карты R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Не ўдалося разблакіраваць HRPD для карты R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Не ўдалося зрабіць запыт на разблакіроўку карпаратыўнай карты R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Не ўдалося разблакіраваць паслугі аператара для карты R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Не ўдалося разблакіраваць карту R-UIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Не ўдалося разблакіраваць PUK-кодам."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Не ўдалося разблакіраваць PUK-кодам."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Не ўдалося разблакіраваць PUK-кодам."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Не ўдалося разблакіраваць PUK-кодам."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Не ўдалося разблакіраваць PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Не ўдалося разблакіраваць PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Не ўдалося разблакіраваць PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Не ўдалося разблакіраваць PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Не ўдалося разблакіраваць PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Не ўдалося разблакіраваць PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Не ўдалося разблакіраваць PUK-кодам."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Не ўдалося разблакіраваць SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Не ўдалося разблакіраваць код SP і сеткавы код унутры краіны."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Не ўдалося разблакіраваць ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Не ўдалося разблакіраваць IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Не ўдалося разблакіраваць паслугі аператара падмноства сеткі."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Сетка для SIM-карты разблакіравана."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Падмноства сеткі для SIM-карты разблакіравана."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Паслугі аператара SIM-карты разблакіраваны."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Карпаратыўная SIM-карта разблакіравана."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM-карта разблакіравана."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Сетка1 для карты R-UIM разблакіравана."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Сетка2 для карты R-UIM разблакіравана."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Разблакіроўка HRPD для карты R-UIM выканана."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Паслугі аператара для карты R-UIM разблакіраваны."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Карпаратыўная карта R-UIM разблакіравана."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Карта R-UIM разблакіравана."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Разблакіравана PUK-кодам."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Разблакіравана PUK-кодам."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Разблакіравана PUK-кодам."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Разблакіравана PUK-кодам."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Разблакіравана PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Разблакіравана PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Разблакіравана PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Разблакіравана PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Разблакіравана PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Разблакіравана PUK-кодам."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Разблакіравана PUK-кодам."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Разблакіроўка SPN выканана."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Код SP і сеткавы код унутры краіны разблакіраваны."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Разблакіроўка ICCID выканана."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Разблакіроўка IMPI выканана."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Паслугі аператара падмноства сеткі разблакіраваны."</string> </resources> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index b50fadfc8014..7440f20e8942 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Администраторът предостави устройствотото за лична употреба"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Устройството се управлява"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Организацията ви управлява това устройство и може да наблюдава мрежовия трафик. Докоснете за подробности."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Настройките за местоположението са променени от администратора ви"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Докоснете, за да видите настройките за местоположението."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Приложенията могат да осъществяват достъп до местоположението ви"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Обърнете се към системния си администратор, за да научите повече"</string> <string name="country_detector" msgid="7023275114706088854">"Инструмент за установяване на държавата"</string> <string name="location_service" msgid="2439187616018455546">"Услуга за местоположението"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Услуга за известия за сензорите"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Данните на устройството ви ще бъдат изтрити"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Приложението за администриране не може да се използва. Сега данните на устройството ви ще бъдат изтрити.\n\nАко имате въпроси, свържете се с администратора на организацията си."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Отпечатването е деактивиранo от <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Отблокир. на личните ви прил."</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Прил. ще бъдат блокирани утре"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Системният ви администратор не разрешава поставянето на служебния ви потребителски профил на пауза за повече от <xliff:g id="DAYS">%1$d</xliff:g> дни"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Включване на служебния потребителски профил"</string> <string name="me" msgid="6207584824693813140">"Аз"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Опции за таблета"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Опции за Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Опции на телефона"</string> <string name="global_action_lock" msgid="6949357274257655383">"Заключване на екрана"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Изключване"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Захранване"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Рестартиране"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Спешно обаждане"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Сигнал за програмна грешка"</string> <string name="global_action_logout" msgid="6093581310002476511">"Прекратяване на сесията"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"достъп до допълнителни команди на доставчика на местоположение"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Разрешава на приложението достъп до допълнителни команди на доставчика на местоположение. Това може да позволи на приложението да смущава работата на GPS или на другите източници на местоположение."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"достъп до точното местоположение само на преден план"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Приложението може да получава данни за точното ви местоположение само когато работи на преден план. Услугите за местоположение трябва да са включени и налице на устройството ви, за да могат да се използват от приложението. Това може да увеличи потреблението на батерията."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Това приложение може да получава данни за точното ви местоположение от съответните услуги, докато се използва. За целта услугите за местоположение трябва да са включени за устройството ви. Това може да увеличи използването на батерията."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"достъп до приблизителното местоположение само на преден план"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Приложението може да получава данни за приблизителното ви местоположение само когато работи на преден план. Услугите за местоположение трябва да са включени и налице на устройството ви, за да могат да се използват от приложението."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Това приложение може да получава данни за приблизителното ви местоположение от съответните услуги, докато се използва. За целта услугите за местоположение трябва да са включени за устройството ви."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"достъп до местоположението на заден план"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Това приложение освен на преден план може да осъществява достъп до местоположението, докато работи на заден план."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Това приложение може да осъществява достъп до местоположението по всяко време – дори когато не се използва."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"промяна на настройките ви за звука"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Разрешава на приложението да променя глобалните настройки за звука, като например силата и това, кой високоговорител се използва за изход."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"записва звук"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"правене на снимки и видеоклипове"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Това приложение може по всяко време да прави снимки и да записва видеоклипове посредством камерата."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Разрешаване на достъп на приложение или услуга до системните камери с цел правене на снимки и видеоклипове"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Това привилегировано или системно приложение може по всяко време да прави снимки и да записва видеоклипове посредством системна камера. Необходимо е също на приложението да бъде дадено разрешението android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Разрешаване на приложение или услуга да получават обратни повиквания за отварянето или затварянето на снимачни устройства."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Това приложение може да получава обратни повиквания, когато снимачно устройство бъде отворено (от кое приложение) или затворено."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"контролиране на вибрирането"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Разрешава на приложението да контролира устройството за вибрация."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Дава възможност на приложението да осъществява достъп до състоянието на вибриране."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Текущото съдържание се преглежда"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Ново хранилище (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Докоснете, за да настроите"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"За прехвърляне на снимки и мултимедия"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Проблем с хранилището (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Докоснете за коригиране"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Носителят (<xliff:g id="NAME">%s</xliff:g>) е повреден. Изберете, за да отстраните проблема."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g>: Не се поддържа"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Устройството не поддържа този носител (<xliff:g id="NAME">%s</xliff:g>). Докоснете, за да настроите в поддържан формат."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Устройството не поддържа този носител (<xliff:g id="NAME">%s</xliff:g>). Изберете, за да настроите в поддържан формат."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Устройството не поддържа това хранилище (<xliff:g id="NAME">%s</xliff:g>)."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g>: Неочаквано премахване"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Спрете носителя, преди да го премахнете, за да избегнете загубата на съдържание"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Премахнахте <xliff:g id="NAME">%s</xliff:g>"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Да се увеличи ли силата на звука над препоръчителното ниво?\n\nПродължителното слушане при висока сила на звука може да увреди слуха ви."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Искате ли да използвате пряк път към функцията за достъпност?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Когато прекият път е включен, можете да стартирате дадена функция за достъпност, като натиснете двата бутона за силата на звука и ги задържите за 3 секунди."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Да се включат ли функциите за достъпност?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Натиснете двата бутона за силата на звука и ги задръжте за няколко секунди, за да включите функциите за достъпност. Това може да промени начина, по който работи устройството ви.\n\nТекущи функции:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nМожете да промените избраните функции от „Настройки“ > „Достъпност“."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Да се включи ли TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Натиснете двата бутона за силата на звука и ги задръжте за няколко секунди, за да включите TalkBack. Това е екранен четец, който е полезен за незрящи лица и хора със слабо зрение. TalkBack напълно променя начина, по който работи устройството ви.\n\nМожете да зададете друга функция за този пряк път от „Настройки“ > „Достъпност“."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Да се включи ли <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Натиснете двата бутона за силата на звука и ги задръжте за няколко секунди, за да включите функцията за достъпност <xliff:g id="SERVICE">%1$s</xliff:g>. Това може да промени начина, по който работи устройството ви.\n\nМожете да зададете друга функция за този пряк път от „Настройки“ > „Достъпност“."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Включване"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Без включване"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Искате ли да разрешите на <xliff:g id="SERVICE">%1$s</xliff:g> да има пълен контрол над устройството ви?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако включите <xliff:g id="SERVICE">%1$s</xliff:g>, устройството ви няма да подобрява шифроването на данни посредством опцията ви за заключване на екрана."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Пълният контрол е подходящ за приложенията, които помагат на потребителите със специални нужди, но не и за повечето приложения."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Разреш."</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Отказ"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Докоснете дадена функция, за да започнете да я използвате:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Избиране на функции, които да използвате с бутона за достъпност"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Избиране на функции, които да използвате с прекия път чрез бутона за силата на звука"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Изключихте <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Редактиране на преките пътища"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Използване на пряк път"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инвертиране на цветовете"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Коригиране на цветовете"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Задържахте бутоните за силата на звука. Услугата <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е включена."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Задържахте бутоните за силата на звука. Услугата <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е изключена."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"За да използвате <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, натиснете двата бутона за силата на звука и ги задръжте за 3 секунди"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Изберете функция, която да използвате, когато докоснете бутона за достъпност:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Изберете коя функция да се използва с жеста за достъпност (прекарване на два пръста нагоре от долната част на екрана):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Изберете коя функция да се използва с жеста за достъпност (прекарване на три пръста нагоре от долната част на екрана):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"За превключване между функциите докоснете и задръжте бутона за достъпност."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"За превключване между функциите прекарайте два пръста нагоре и задръжте."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"За превключване между функциите прекарайте три пръста нагоре и задръжте."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ниво на мащаба"</string> <string name="user_switched" msgid="7249833311585228097">"Текущ потребител <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Превключва се към <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> файла</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> файл</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Няма препоръчани хора, с които да споделяте"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Списък с приложения"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Приложението няма разрешение за записване, но може да записва звук чрез това USB устройство."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Начало"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Това съдържание не може да се отвори от нито едно служебно приложение"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Това съдържание не се поддържа от нито едно лично приложение"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Това съдържание не може да се отвори от нито едно лично приложение"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Записване или възпроизвеждане на аудио при телефонни обаждания"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Дава възможност на това приложение да записва или възпроизвежда аудио при телефонни обаждания, когато е зададено като основно приложение за набиране."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"ПИН за отключване на мрежата за SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"ПИН за отключване на подмножеството от мрежи за SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"ПИН за отключване на корпоративната SIM карта"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"ПИН за отключване на доставчика на услуги за SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"ПИН за отключване на SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Въведете PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Въведете PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Въведете PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Въведете PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Въведете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"ПИН за отключване на мрежа 1 за RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"ПИН за отключване на мрежа 2 за RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"ПИН за отключване на HRPD за RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"ПИН за отключване на корпоративната RUIM карта"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"ПИН за отключване на доставчика на услуги за RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"ПИН за отключване на RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Въведете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Въведете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Въведете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Въведете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Въведете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Въведете PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"ПИН за отключване на SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"ПИН за отключване на еквивалентната домашна PLMN мрежа на доставчика на услуги"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ПИН за отключване на ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"ПИН за отключване на IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"ПИН за отключване на доставчика на услуги за подмножеството от мрежи"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Заявява се отключване на мрежата за SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Заявява се отключване на подмножеството от мрежи за SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Заявява се отключване на доставчика на услуги за SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Заявява се отключване на корпоративната SIM карта…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Заявява се отключване с PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Заявява се отключване с PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Заявява се отключване с PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Заявява се отключване с PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Заявява се отключване с PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Заявява се отключване на SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Заявява се отключване на мрежа 1 за RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Заявява се отключване на мрежа 2 за RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Заявява се отключване на HRPD за RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Заявява се отключване на доставчика на услуги за RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Заявява се отключване на корпоративната RUIM карта…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Заявява се отключване на SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Заявява се отключване на еквивалентната домашна PLMN мрежа на доставчика на услуги…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Заявява се отключване на ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Заявява се отключване на IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Заявява се отключване на доставчика на услуги за подмножеството от мрежи…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Заявява се отключване на RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Заявява се отключване с PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Заявява се отключване с PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Заявява се отключване с PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Заявява се отключване с PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Заявява се отключване с PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Заявява се отключване с PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Заявката за отключване на мрежата за SIM не бе успешна."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Заявката за отключване на подмножеството от мрежи за SIM не бе успешна."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Заявката за отключване на доставчика на услуги за SIM не бе успешна."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Заявката за отключване на корпоративната SIM карта не бе успешна."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Заявката за отключване на SIM не бе успешна."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Заявката за отключване на мрежа 1 за RUIM не бе успешна."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Заявката за отключване на мрежа 2 за RUIM не бе успешна."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Заявката за отключване на HRPD за RUIM не бе успешна."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Заявката за отключване на корпоративната RUIM карта не бе успешна."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Заявката за отключване на доставчика на услуги за RUIM не бе успешна."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Заявката за отключване на RUIM не бе успешна."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Отключването с PUK не бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Отключването с PUK не бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Отключването с PUK не бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Отключването с PUK не бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Отключването с PUK не бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Отключването с PUK не бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Отключването с PUK не бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Отключването с PUK не бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Отключването с PUK не бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Отключването с PUK не бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Отключването с PUK не бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Заявката за отключване на SPN не бе успешна."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Заявката за отключване на еквивалентната домашна PLMN мрежа на доставчика на услуги не бе успешна."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Заявката за отключване на ICCID не бе успешна."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Заявката за отключване на IMPI не бе успешна."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Заявката за отключване на доставчика на услуги за подмножеството от мрежи не бе успешна."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Отключването на мрежата за SIM бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Отключването на подмножеството от мрежи за SIM бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Отключването на доставчика на услуги за SIM бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Отключването на корпоративната SIM карта бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Отключването на SIM бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Отключването на мрежа 1 за RUIM бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Отключването на мрежа 2 за RUIM бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Отключването на HRPD за RUIM бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Отключването на доставчика на услуги за RUIM бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Отключването на корпоративната RUIM карта бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Отключването на RUIM бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Отключването с PUK бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Отключването с PUK бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Отключването с PUK бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Отключването с PUK бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Отключването с PUK бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Отключването с PUK бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Отключването с PUK бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Отключването с PUK бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Отключването с PUK бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Отключването с PUK бе успешно."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Отключването с PUK бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Отключването на SPN бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Отключването на еквивалентната домашна PLMN мрежа на доставчика на услуги бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Отключването на ICCID бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Отключването на IMPI бе успешно."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Отключването на доставчика на услуги за подмножеството от мрежи бе успешно."</string> </resources> diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index 1aa38958abc5..57255f57c85b 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"ব্যক্তিগত কাজের জন্য অ্যাডমিন এই ডিভাইস ব্যবহার করার অনুমতি দেয়নি"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"ডিভাইসটি পরিচালনা করা হচ্ছে"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"আপনার প্রতিষ্ঠান এই ডিভাইসটি পরিচালনা করে এবং এটির নেটওয়ার্ক ট্রাফিকের উপরে নজর রাখতে পারে। বিশদ বিবরণের জন্য ট্যাপ করুন।,"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"আপনার অ্যাডমিন লোকেশন সেটিংস পরিবর্তন করেছেন"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"আপনার লোকেশন সেটিংস দেখার জন্য ট্যাপ করুন।"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"অ্যাপগুলি আপনার লোকেশন অ্যাক্সেস করতে পারবে"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"আরও জানতে আপনার আইটি অ্যাডমিনের সাথে যোগাযোগ করুন"</string> <string name="country_detector" msgid="7023275114706088854">"দেশ শনাক্তকারী"</string> <string name="location_service" msgid="2439187616018455546">"লোকেশন পরিষেবা"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"সেন্সর বিজ্ঞপ্তি পরিষেবা"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"আপনার ডিভাইসটি মুছে ফেলা হবে"</string> <string name="factory_reset_message" msgid="2657049595153992213">"অ্যাডমিন অ্যাপটি ব্যবহার করা যাবে না। আপনার ডিভাইসে থাকা সবকিছু এখন মুছে ফেলা হবে।\n\nকোনও প্রশ্ন থাকলে আপনার প্রতিষ্ঠানের অ্যাডমিনের সাথে যোগাযোগ করুন।"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> প্রিন্টিং বন্ধ রেখেছে।"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"ব্যক্তিগত অ্যাপ আনব্লক করুন"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"কাল অ্যাপগুলি ব্লক করা হবে"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"আপনার আইটি অ্যাডমিন আপনার অফিস প্রোফাইল <xliff:g id="DAYS">%1$d</xliff:g> দিনের বেশি পজ করে রাখার অনুমতি দেয় না"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"অফিস প্রোফাইল চালু করুন"</string> <string name="me" msgid="6207584824693813140">"আমাকে"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ট্যাবলেট বিকল্পগুলি"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV-র বিকল্প"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"ফোন বিকল্পগুলি"</string> <string name="global_action_lock" msgid="6949357274257655383">"স্ক্রীণ লক"</string> <string name="global_action_power_off" msgid="4404936470711393203">"পাওয়ার বন্ধ করুন"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"ফোন বন্ধ করুন"</string> + <string name="global_action_restart" msgid="4678451019561687074">"ফোন আবার চালু করুন"</string> <string name="global_action_emergency" msgid="1387617624177105088">"জরুরী"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"ত্রুটির প্রতিবেদন"</string> <string name="global_action_logout" msgid="6093581310002476511">"সেশন শেষ করুন"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"অতিরিক্ত লোকেশন প্রদানকারী কমান্ডগুলি অ্যাক্সেস করে"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"লোকেশনের সাথে সম্পর্কিত তথ্য প্রদানকারীর অতিরিক্ত কম্যান্ডগুলিকে অ্যাপ্লিকেশানটিকে মঞ্জুর করে৷ এটি অ্যাপ্লিকেশানটিকে GPS অথবা অন্যান্য লোকেশন নির্ণয়ের সাথে সম্পর্কিত উৎসগুলির ক্রিয়াপ্রণালীর নিয়ন্ত্রণকে মঞ্জুর করতে পারে৷"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"শুধুমাত্র অ্যাপটি খোলা থাকলে আপনার যথাযথ লোকেশন অ্যাক্সেস করা"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"এই অ্যাপটি ফোরগ্রাউন্ডে চলতে থাকলে যেকোনও সময়ে আপনার যথাযথ লোকেশন জানতে পারবে। তাছাড়াও লোকেশন পরিষেবাগুলি অবশ্যই চালু রাখতে হবে এবং আপনার ডিভাইসে সেগুলি উপলভ্য থাকতে হবে যাতে অ্যাপটি সেগুলি ব্যবহার করতে পারে। এর জন্য অতিরিক্ত ব্যাটারি খরচ হতে পারে।"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"এই অ্যাপটি ব্যবহার করার সময় আপনি লোকেশন পরিষেবাগুলি থেকে আপনার যথাযথ লোকেশন পেতে পারেন। আপনার লোকেশন পেতে আপনার ডিভাইসের লোকেশন পরিষেবা চালু করতে হবে। এটি ব্যাটারির ব্যবহার বাড়িয়ে তুলতে পারে।"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"শুধুমাত্র অ্যাপটি খোলা থাকলে আপনার আনুমানিক লোকেশন অ্যাক্সেস করা"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"এই অ্যাপটি যদি ফোরগ্রাউন্ডে চলতে থাকে তবেই শুধুমাত্র আপনার আনুমানিক লোকেশন জানতে পারবে। আপনার ডিভাইসে লোকেশন পরিষেবা চালু ও উপলভ্য থাকতে হবে, তবেই অ্যাপটি সেগুলি ব্যবহার করতে পারবে।"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"এই অ্যাপটি ব্যবহার করার সময় আপনি লোকেশন পরিষেবাগুলি থেকে আপনার আনুমানিক লোকেশন পেতে পারেন। আপনার লোকেশন পেতে আপনার ডিভাইসের লোকেশন পরিষেবা চালু করতে হবে।"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ব্যাকগ্রাউন্ডে লোকেশন অ্যাক্সেস করা"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ফোরগ্রাউন্ড লোকেশন অ্যাক্সেস করা ছাড়াও, ব্যাকগ্রাউন্ডে চলাকালীন এই অ্যাপটি লোকেশন অ্যাক্সেস করতে পারে।"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"অ্যাপটি ব্যবহার না করার সময়ও এই অ্যাপটি যেকোনও সময় লোকেশন অ্যাক্সেস করতে পারে।"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"আপনার অডিও সেটিংস পরিবর্তন করে"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ভলিউম এবং যেখানে স্পিকার আউটপুট হিসাবে ব্যবহৃত হয় সেই সব ক্ষেত্রে গ্লোবাল অডিও সেটিংসের সংশোধন করতে অ্যাপ্লিকেশনটিকে মঞ্জুর করে৷"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"অডিও রেকর্ড"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"ছবি এবং ভিডিও তোলে"</string> <string name="permdesc_camera" msgid="1354600178048761499">"এই অ্যাপটি যে কোনো সময় ক্যামেরা ব্যবহার করে ছবি তুলতে বা ভিডিও রেকর্ড করতে পারে৷"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"সিস্টেম ক্যামেরা ব্যবহার করে ফটো এবং ভিডিও নেওয়ার জন্য অ্যাপ্লিকেশন বা পরিষেবা অ্যাক্সেসের অনুমতি দিন"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"এই প্রিভিলেজ বা সিস্টেম অ্যাপ যেকোনও সময় সিস্টেম ক্যামেরা ব্যবহার করে ছবি তুলতে ও ভিডিও রেকর্ড করতে পারে। এই অ্যাপকে android.permission.CAMERA অনুমতি দিতে হবে"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"কোনও অ্যাপ্লিকেশন বা পরিষেবাকে ক্যামেরা ডিভাইসগুলি খোলা বা বন্ধ হওয়া সম্পর্কে কলব্যাকগুলি গ্রহণ করার অনুমতি দিন।"</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"কোনও ক্যামেরা ডিভাইস খোলা (অ্যাপ্লিকেশনের সাহায্যে) বা বন্ধ করা হলে এই অ্যাপ কলব্যাক গ্রহণ করতে পারে।"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"ভাইব্রেশন নিয়ন্ত্রণ করুন"</string> @@ -769,7 +762,7 @@ <string name="phoneTypeTtyTdd" msgid="532038552105328779">"TTY TDD"</string> <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"অফিসের মোবাইল"</string> <string name="phoneTypeWorkPager" msgid="3748332310638505234">"কার্যক্ষেত্রের পেজার"</string> - <string name="phoneTypeAssistant" msgid="757550783842231039">"সহায়ক"</string> + <string name="phoneTypeAssistant" msgid="757550783842231039">"Assistant"</string> <string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string> <string name="eventTypeCustom" msgid="3257367158986466481">"কাস্টম"</string> <string name="eventTypeBirthday" msgid="7770026752793912283">"জন্মদিন"</string> @@ -802,7 +795,7 @@ <string name="orgTypeOther" msgid="5450675258408005553">"অন্যান্য"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"কাস্টম"</string> <string name="relationTypeCustom" msgid="282938315217441351">"কাস্টম"</string> - <string name="relationTypeAssistant" msgid="4057605157116589315">"সহায়ক"</string> + <string name="relationTypeAssistant" msgid="4057605157116589315">"Assistant"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"ভাই"</string> <string name="relationTypeChild" msgid="9076258911292693601">"সন্তান"</string> <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"জীবনসাথি"</string> @@ -1349,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"বর্তমান কন্টেন্টটি পর্যালোচনা করা হচ্ছে"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"নতুন <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"সেট-আপ করতে ট্যাপ করুন"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ফটো এবং মিডিয়া ট্রান্সফার"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> নিয়ে সমস্যা আছে"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"ঠিক করতে ট্যাপ করুন"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> ত্রুটিপূর্ণ। মেরামত করতে বেছে নিন।"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> অসমর্থিত"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"এই ডিভাইসটি <xliff:g id="NAME">%s</xliff:g> সমর্থন করে না। কোনো সমর্থিত ফর্ম্যাটে সেট-আপ করতে আলতো চাপুন।"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"এই ডিভাইসটি <xliff:g id="NAME">%s</xliff:g> সমর্থন করে না। কোনো সমর্থিত ফর্ম্যাটে সেট-আপ করতে চাইলে বেছে নিন।"</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> অপ্রত্যাশিতভাবে মুছে ফেলা হয়েছে"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"মিডিয়া সরিয়ে নেওয়ার আগে সেটি সিস্টেম থেকে ইজেক্ট করুন, নাহলে কন্টেন্ট সেভ নাও হতে পারে"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> সরানো হয়েছে"</string> @@ -1623,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"প্রস্তাবিত স্তরের চেয়ে বেশি উঁচুতে ভলিউম বাড়াবেন?\n\nউঁচু ভলিউমে বেশি সময় ধরে কিছু শুনলে আপনার শ্রবনশক্তির ক্ষতি হতে পারে।"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"অ্যাক্সেসযোগ্যতা শর্টকাট ব্যবহার করবেন?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"শর্টকাট চালু করা থাকাকালীন দুটি ভলিউম বোতাম একসাথে ৩ সেকেন্ড টিপে ধরে রাখলে একটি অ্যাকসেসিবিলিটি ফিচার চালু হবে।"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"অ্যাক্সেসিবিলিটি ফিচার চালু করতে চান?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"উভয় ভলিউম কী কয়েক সেকেন্ড ধরে থাকলে অ্যাক্সেসিবিলিটি ফিচার চালু হয়ে যাবে। এর ফলে, আপনার ডিভাইস কীভাবে কাজ করবে সেটিতে পরিবর্তন হতে পারে।\n\nবর্তমান ফিচার:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nসেটিংস > অ্যাক্সেসিবিলিটি থেকে আপনি বাছাই করা ফিচার পরিবর্তন করতে পারবেন।"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack চালু করতে চান?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"উভয় ভলিউম কী কয়েক সেকেন্ড ধরে থাকলে TalkBack চালু হয়ে যাবে। এটি একটি স্ক্রিন রিডার এবং এটি অন্ধ বা চোখে ভালভাবে দেখতে পান না এমন ব্যক্তিকে সাহায্য করে। আপনার ডিভাইস কীভাবে কাজ করবে সেটি TalkBack সম্পূর্ণ পরিবর্তন করে দেয়।\n\nআপনি সেটিংস > অ্যাক্সেসিবিলিটি থেকে এই শর্টকাট পরিবর্তন করে অন্য ফিচারের জন্য ব্যবহার করতে পারেন।"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> চালু করতে চান?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"উভয় ভলিউম কী কয়েক সেকেন্ড ধরে থাকলে <xliff:g id="SERVICE">%1$s</xliff:g> চালু হয়ে যাবে। এটি একটি অ্যাক্সেসিবিলিটি ফিচার। এর ফলে, আপনার ডিভাইস কীভাবে কাজ করবে সেটিতে পরিবর্তন হতে পারে।\n\nসেটিংস > অ্যাক্সেসিবিলিটি থেকে আপনি এই শর্টকাট পরিবর্তন করতে পারবেন।"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"চালু করুন"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"চালু করবেন না"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> অ্যাপটিকে আপনার ডিভাইসে সম্পূর্ণ নিয়ন্ত্রণের অনুমতি দিতে চান?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> চালু করলে, ডেটা এনক্রিপশন উন্নত করার উদ্দেশ্যে আপনার ডিভাইস স্ক্রিন লক ব্যবহার করবে না।"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"যে অ্যাপগুলি আপনাকে অ্যাক্সেসিবিলিটির প্রয়োজন মেটাতে সাহায্য করে সেই অ্যাপগুলির জন্য সম্পূর্ণ নিয়ন্ত্রণের বিষয়টি উপযুক্ত, কিন্তু তা বলে সমস্ত অ্যাপের জন্য নয়।"</string> @@ -1651,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"অনুমতি দিন"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"খারিজ করুন"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"কোনও ফিচার ব্যবহার করা শুরু করতে, সেটিতে ট্যাপ করুন:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"অ্যাক্সেসিবিলিটি বোতামের সাহায্যে আপনি যেসব ফিচার ব্যবহার করতে চান সেগুলি বেছে নিন"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"ভলিউম কী শর্টকাটের সাহায্যে আপনি যেসব ফিচার ব্যবহার করতে চান সেগুলি বেছে নিন"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> বন্ধ করে দেওয়া হয়েছে"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"শর্টকাট এডিট করুন"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"হয়ে গেছে"</string> @@ -1662,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"শর্টকাট ব্যবহার করুন"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"রঙ উল্টানো"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"রঙ সংশোধন"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কী ধরে ছিলেন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> চালু করা হয়েছে।"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ভলিউম কী ধরে ছিলেন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> বন্ধ করা হয়েছে।"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ব্যবহার করতে ভলিউম কী বোতাম ৩ সেকেন্ডের জন্য চেপে ধরে রাখুন"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"অ্যাক্সেসিবিলিটি বোতামে ট্যাপ করে আপনি যে ফিচার ব্যবহার করতে চান সেটি বেছে নিন:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"অ্যাক্সেসিবিলিটি জেসচারের (দুটি আঙ্গুল দিয়ে স্ক্রিনের নিচে থেকে উপরের দিকে সোয়াইপ করুন) সাহায্যে আপনি যে ফিচার ব্যবহার করতে চান সেটি বেছে নিন:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"অ্যাক্সেসিবিলিটি জেসচারের (তিনটি আঙ্গুল দিয়ে স্ক্রিনের নিচে থেকে উপরের দিকে সোয়াইপ করুন) সাহায্যে আপনি যে ফিচার ব্যবহার করতে চান সেটি বেছে নিন:"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"একটি ফিচার থেকে অন্যটিতে যেতে অ্যাক্সেসিবিলিটি বোতাম টাচ করে ধরে থাকুন।"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"একটি ফিচার থেকে অন্যটিতে যেতে, দুটি আঙ্গুল দিয়ে নিচে থেকে উপরের দিকে সোয়াইপ করে ধরে থাকুন।"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"একটি ফিচার থেকে অন্যটিতে যেতে, তিনটি আঙ্গুল দিয়ে উপরের দিকে সোয়াইপ করে ধরে থাকুন।"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"বড় করে দেখা"</string> <string name="user_switched" msgid="7249833311585228097">"বর্তমান ব্যবহারকারী <xliff:g id="NAME">%1$s</xliff:g>৷"</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> নামের ব্যবহারকারীতে যাচ্ছে…"</string> @@ -2049,8 +2027,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> এবং আরও <xliff:g id="COUNT_3">%d</xliff:g>টি ফাইল</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> এবং আরও <xliff:g id="COUNT_3">%d</xliff:g>টি ফাইল</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"শেয়ার করার জন্য সাজেস্ট করার মতো কেউ নেই"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"অ্যাপের তালিকা"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"এই অ্যাপকে রেকর্ড করার অনুমতি দেওয়া হয়নি কিন্তু USB ডিভাইসের মাধ্যমে সেটি অডিও রেকর্ড করতে পারে।"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"হোম স্ক্রিন"</string> @@ -2072,249 +2049,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"অফিস"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ব্যক্তিগত ভিউ"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"অফিসের ভিউ"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"অফিস অ্যাপের মাধ্যমে শেয়ার করা যাবে না"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"আইটি অ্যাডমিন আপনার অফিস প্রোফাইল ব্যবহার করে অ্যাপের মাধ্যমে এই কন্টেন্ট শেয়ার করার অনুমতি দেয় না"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"অফিসের অ্যাপের মাধ্যমে এটি খোলা যাবে না"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"আইটি অ্যাডমিন আপনার অফিস প্রোফাইল ব্যবহার করে অ্যাপের মাধ্যমে এই কন্টেন্ট খোলার অনুমতি দেয় না"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"ব্যক্তিগত অ্যাপের মাধ্যমে শেয়ার করা যাবে না"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"আইটি অ্যাডমিন আপনার ব্যক্তিগত প্রোফাইল ব্যবহার করে অ্যাপের মাধ্যমে এই কন্টেন্ট শেয়ার করার অনুমতি দেয় না"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"ব্যক্তিগত অ্যাপের মাধ্যমে খোলা যাবে না"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"আইটি অ্যাডমিন আপনার ব্যক্তিগত প্রোফাইল ব্যবহার করে অ্যাপের মাধ্যমে এই কন্টেন্ট খোলার অনুমতি দেয় না"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"কাজের প্রোফাইল পজ করা আছে"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"চালু করুন"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"টেলিফোন কলে অডিও রেকর্ড বা প্লে করুন"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ডিফল্ট ডায়ালার অ্যাপ্লিকেশন হিসেবে বেছে নেওয়া হলে, টেলিফোন কলে অডিও রেকর্ড বা প্লে করার জন্য এই অ্যাপকে অনুমতি দেয়।"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"এই ধরনের কন্টেন্ট অফিসের অ্যাপের মাধ্যমে খুলে দেখা যাবে না"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"এই ধরনের কন্টেন্ট অফিসের অ্যাপের মাধ্যমে খুলে দেখা যাবে না"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"এই ধরনের কন্টেন্ট ব্যক্তিগত অ্যাপের মাধ্যমে খোলা বা দেখা যাবে না"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"এই ধরনের কন্টেন্ট ব্যক্তিগত অ্যাপের মাধ্যমে খোলা যাবে না"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"সিম নেটওয়ার্ক আনলক পিন"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"সিম নেটওয়ার্ক সাবসেট আনলক পিন"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"কর্পোরেট সিম আনলক পিন"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"সিম পরিষেবা প্রদানকারী আনলক পিন"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"সিম আনলক পিন"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK লিখুন"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK লিখুন"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK লিখুন"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK লিখুন"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK লিখুন"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM Network1 আনলক পিন"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM Network2 আনলক পিন"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM Hrpd আনলক পিন"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"কর্পোরেট RUIM আনলক পিন"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM পরিষেবা প্রদানকারী আনলক পিন"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM আনলক পিন"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK লিখুন"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK লিখুন"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK লিখুন"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK লিখুন"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK লিখুন"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK লিখুন"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN আনলক পিন"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN আনলক পিন"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID আনলক পিন"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI আনলক পিন"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"নেটওয়ার্ক সাবসেট পরিষেবা প্রদানকারী আনলক পিন"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"সিম নেটওয়ার্ক আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"সিম নেটওয়ার্ক সাবসেট আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"সিম পরিষেবা প্রদানকারী আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"কর্পোরেট সিম আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"সিম আনলক করার অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM Network1 আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM Network2 আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM Hrpd আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM পরিষেবা প্রদানকারী আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"কর্পোরেট RUIM আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN আনলক করার অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP Equivalent Home PLMN আনলক করার অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID আনলক করার অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI আনলক করার অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"নেটওয়ার্ক সাবসেট পরিষেবা প্রদানকারী আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM আনলক করার অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK আনলক করতে অনুরোধ করা হচ্ছে…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"সিম নেটওয়ার্ক আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"সিম নেটওয়ার্ক সাবসেট আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"সিম পরিষেবা প্রদানকারী আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"কর্পোরেট সিম আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"সিম আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM Network1 আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM Network2 আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"কর্পোরেট RUIM আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM পরিষেবা প্রদানকারী আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK আনলক করা যায়নি।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK আনলক করা যায়নি।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK আনলক করা যায়নি।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK আনলক করা যায়নি।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK আনলক করা যায়নি।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK আনলক করা যায়নি।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK আনলক করা যায়নি।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK আনলক করা যায়নি।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK আনলক করা যায়নি।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK আনলক করা যায়নি।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK আনলক করা যায়নি।"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"নেটওয়ার্ক সাবসেট পরিষেবা প্রদানকারী আনলক করার অনুরোধ ব্যর্থ হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"সিম নেটওয়ার্ক আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"সিম নেটওয়ার্ক সাবসেট আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"সিম পরিষেবা প্রদানকারী আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"কর্পোরেট সিম আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"সিম আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM Network1 আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM Network2 আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM পরিষেবা প্রদানকারী আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"কর্পোরেট RUIM আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI আনলক করা হয়েছে।"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"নেটওয়ার্ক সাবসেট পরিষেবা প্রদানকারী আনলক করা হয়েছে।"</string> </resources> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index 566388510e20..37739b92589f 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -193,8 +193,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrator je ustupio uređaj za ličnu upotrebu"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Uređajem se upravlja."</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizacija upravlja ovim uređajem i može pratiti mrežni saobraćaj. Dodirnite za detalje."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Administrator je promijenio postavke lokacije"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Dodirnite da vidite postavke lokacije."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikacije mogu pristupiti vašoj lokaciji"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Za više informacija kontaktirajte IT administratora"</string> <string name="country_detector" msgid="7023275114706088854">"Detektor zemlje"</string> <string name="location_service" msgid="2439187616018455546">"Usluga lokacije"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Usluga obavještavanja putem senzora"</string> @@ -202,14 +202,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će biti izbrisan"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Nije moguće koristiti aplikaciju administratora. Potpuno će se izbrisati podaci na vašem uređaju.\n\nAko imate pitanja, obratite se administratoru svoje organizacije."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Štampanje je onemogućila aplikacija <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Deblokirajte lične aplikacije"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Sutra se blokiraju aplikacije"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT administrator ne dozvoljava da pauzirate radni profil duže od <xliff:g id="DAYS">%1$d</xliff:g> dana"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Uključi radni profil"</string> <string name="me" msgid="6207584824693813140">"Ja"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcije tableta"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcije Android TV uređaja"</string> @@ -243,10 +239,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opcije telefona"</string> <string name="global_action_lock" msgid="6949357274257655383">"Zaključavanje ekrana"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Isključi telefon"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Napajanje"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Ponovo pokreni"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Hitno"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Izvještaj o greškama"</string> <string name="global_action_logout" msgid="6093581310002476511">"Završi sesiju"</string> @@ -431,11 +425,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"pristup dodatnim informacijama o lokaciji"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Dozvoljava aplikaciji pristup dodatnim naredbama pružatelja lokacija. Ovim se aplikaciji može dozvoliti da ometa rad GPS-a ili drugih izvora lokacija."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"pristup tačnoj lokaciji samo u prvom planu"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ova aplikacija može odrediti vašu tačnu lokaciju samo kada je u prvom planu. Usluge lokacije moraju biti uključene i dostupne na uređaju da ih aplikacija može koristiti. To može dovesti do povećane potrošnje baterije."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ova aplikacija može odrediti vašu tačnu lokaciju iz usluga lokacije dok se aplikacija koristi. Da aplikacija odredi lokaciju, usluge lokacije moraju biti uključene na uređaju. Ovim se može povećati potrošnja baterija."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"pristup približnoj lokaciji samo u prvom planu"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ova aplikacija može odrediti vašu približnu lokaciju samo kada je u prvom planu. Usluge lokacije moraju biti uključene i dostupne na uređaju da ih aplikacija može koristiti."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ova aplikacija može odrediti vašu približnu lokaciju iz usluga lokacije dok se aplikacija koristi. Da aplikacija odredi lokaciju, usluge lokacije moraju biti uključene na uređaju."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"pristup lokaciji u pozadini"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ova aplikacija može pristupati lokaciji dok radi u pozadini, pored pristupa lokaciji u prvom planu."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ova aplikacija može pristupiti lokaciji bilo kada, čak i kada se aplikacija ne koristi."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"izmjene postavki zvuka"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Omogućava aplikaciji izmjenu općih postavki zvuka, kao što su jačina zvuka i izbor izlaznog zvučnika."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"snimanje audiozapisa"</string> @@ -447,11 +441,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"snimanje slika i videozapisa"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Ova aplikacija može slikati fotografije i snimati videozapise koristeći kameru bilo kada."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Dopustite aplikaciji ili usluzi da pristupa kamerama sistema radi snimanja fotografija i videozapisa"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ova povlaštena ili sistemska aplikacija u svakom trenutku može snimati fotografije i videozapise pomoću kamere sistema. Aplikacija također mora imati odobrenje android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Dozvoliti aplikaciji ili usluzi da prima povratne pozive o otvaranju ili zatvaranju kamera."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ova aplikacija može primati povratne pozive kada se otvara ili zatvara bilo koji uređaj s kamerom (putem neke aplikacije)."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kontrola vibracije"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Dozvoljava aplikaciji upravljanje vibracijom."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Dozvoljava aplikaciji pristup stanju vibracije."</string> @@ -1372,13 +1364,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Pregledanje trenutnog sadržaja"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Novi medij <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Dodirnite za postavke"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Za prebacivanje slika i medijskih fajlova"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problem s medijem <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Dodirnite da popravite"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Uređaj <xliff:g id="NAME">%s</xliff:g> je oštećen. Odaberite za popravak."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Uređaj <xliff:g id="NAME">%s</xliff:g> nije podržan"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Ovaj uređaj ne podržava uređaj <xliff:g id="NAME">%s</xliff:g>. Dodirnite da biste ga postavili u podržanom formatu."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Ovaj uređaj ne podržava uređaj <xliff:g id="NAME">%s</xliff:g>. Dodirnite da ga postavite u podržanom formatu."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Ovaj uređaj ne podržava uređaj <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Neočekivano uklonjen uređaj <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Izbacite medij prije uklanjanja da izbjegnete gubitak sadržaja"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Medij <xliff:g id="NAME">%s</xliff:g> je uklonjen"</string> @@ -1648,24 +1643,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite li pojačati zvuk iznad preporučenog nivoa?\n\nDužim slušanjem glasnog zvuka možete oštetiti sluh."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li koristiti Prečicu za pristupačnost?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kada je prečica uključena, pritiskom i držanjem oba dugmeta za jačinu zvuka u trajanju od 3 sekunde pokrenut će se funkcija pristupačnosti."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Uključiti funkcije pristupačnosti?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Ako nekoliko sekundi držite pritisnute obje tipke za jačinu zvuka, uključit ćete funkcije pristupačnosti. Ovo može uticati na način rada uređaja.\n\nTrenutne funkcije:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nOdabrane funkcije možete izmijeniti u odjeljku Postavke > Pristupačnost."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Uključiti Talkback?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Ako nekoliko sekundi držite pritisnute obje tipke za jačinu zvuka uključit ćete Talkback, čitač ekrana koji je od pomoći slijepim ili slabovidim osobama. Talkback u potpunosti mijenja način rada uređaja.\n\nOvu prečicu možete zamijeniti drugom funkcijom u odjeljku Postavke > Pristupačnost."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Uključiti <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ako nekoliko sekundi držite pritisnute obje tipke za jačinu zvuka, uključit ćete funkciju pristupačnosti <xliff:g id="SERVICE">%1$s</xliff:g>. Ovo može promijeniti način rada uređaja.\n\nOvu prečicu možete zamijeniti drugom funkcijom u odjeljku Postavke > Pristupačnost."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Uključi"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nemoj uključivati"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Dozvoliti da usluga <xliff:g id="SERVICE">%1$s</xliff:g> ima punu kontrolu nad vašim uređajem?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ako uključite uslugu <xliff:g id="SERVICE">%1$s</xliff:g>, uređaj neće koristiti zaključavanje ekrana za poboljšanje šifriranja podataka."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Puna kontrola je prikladna za aplikacije koje vam pomažu kod potreba za pristupačnosti, ali nije za većinu aplikacija."</string> @@ -1676,10 +1662,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Dozvoli"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Odbij"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Dodirnite funkciju da je počnete koristiti:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Odaberite funkcije koje ćete koristiti s dugmetom Pristupačnost"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Odaberite funkcije koje ćete koristiti s tipkom prečice za jačinu zvuka"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Usluga <xliff:g id="SERVICE_NAME">%s</xliff:g> je isključena"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Uredi prečice"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gotovo"</string> @@ -1687,23 +1671,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Koristi prečicu"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Ispravka boja"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Pritisnite obje tipke za podešavanje jačine zvuka i držite ih pritisnutim tri sekunde da koristite uslugu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Odaberite funkciju koja će se koristiti kada dodirnete dugme Pristupačnost:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Odaberite funkciju koju ćete koristiti kada izvedete pokret za pristupačnost (s dva prsta prevucite prema gore s dna ekrana):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Odaberite funkciju koju ćete koristiti kada izvedete pokret za pristupačnost (s tri prsta prevucite prema gore s dna ekrana):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Za prebacivanje između funkcija, dodirnite i zadržite dugme Pristupačnost."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Da prebacujete između funkcija, s dva prsta prevucite prema gore i zadržite."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Da prebacujete između funkcija, s tri prsta prevucite prema gore i zadržite."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Uvećavanje"</string> <string name="user_switched" msgid="7249833311585228097">"Trenutni korisnik <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Prebacivanje na korisnika <xliff:g id="NAME">%1$s</xliff:g>..."</string> @@ -2086,8 +2062,7 @@ <item quantity="few"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fajla</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fajlova</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Nijedna osoba nije preporučena za dijeljenje"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Spisak aplikacija"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Ovoj aplikaciji nije dato odobrenje za snimanje, ali može snimati zvuk putem ovog USB uređaja."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Početna stranica"</string> @@ -2109,236 +2084,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"Posao"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Prikaz ličnog sadržaja"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Prikaz poslovnog sadržaja"</string> - <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Ovo nije moguće dijeliti putem poslovnih aplikacija"</string> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Nije moguće dijeliti ovo putem poslovnih aplikacija"</string> <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"Vaš IT administrator ne dozvoljava da dijelite ovaj sadržaj putem aplikacija na svom poslovnom profilu"</string> - <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Ovo nije moguće otvoriti s poslovnim aplikacijama"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Nije moguće otvoriti ovo s poslovnim aplikacijama"</string> <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"Vaš IT administrator ne dozvoljava da otvorite ovaj sadržaj putem aplikacija na svom poslovnom profilu"</string> - <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Ovo nije moguće dijeliti putem ličnih aplikacija"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Nije moguće dijeliti ovo putem ličnih aplikacija"</string> <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"Vaš IT administrator ne dozvoljava da dijelite ovaj sadržaj putem aplikacija na svom ličnom profilu"</string> - <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Ovo nije moguće otvoriti s ličnim aplikacijama"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Nije moguće otvoriti ovo s ličnim aplikacijama"</string> <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"Vaš IT administrator ne dozvoljava da otvorite ovaj sadržaj putem aplikacija na svom ličnom profilu"</string> <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Radni profil je pauziran"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"Uključi"</string> - <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"Poslovne aplikacije ne mogu podržati ovaj sadržaj"</string> - <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Poslovne aplikacije ne mogu otvoriti ovaj sadržaj"</string> - <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Lične aplikacije ne mogu podržati ovaj sadržaj"</string> - <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Lične aplikacije ne mogu otvoriti ovaj sadržaj"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Snimanje ili reproduciranje zvuka u telefonskim pozivima"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Kad je ova aplikacija postavljena kao zadana aplikacija za pozivanje, omogućava joj snimanje ili reproduciranje zvuka u telefonskim pozivima."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"Nijedna poslovna aplikacija ne može podržati ovaj sadržaj"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Nijedna poslovna aplikacija ne može otvoriti ovaj sadržaj"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Nijedna lična aplikacija ne može podržati ovaj sadržaj"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Nijedna lična aplikacija ne može otvoriti ovaj sadržaj"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN za otključavanje mreže na SIM-u"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN za otključavanje mrežne podgrupe na SIM-u"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN za otključavanje korporativnog SIM-a"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN za otključavanje SIM-a pružaoca usluge"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN za otključavanje SIM-a"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN za otključavanje mreže 1 na RUIM-u"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN za otključavanje mreže 2 na RUIM-u"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN za otključavanje RUIM hrpd-a"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN za otključavanje korporativnog RUIM-a"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN za otključavanje RUIM-a pružaoca usluge"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN za otključavanje RUIM-a"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN za otključavanje SPN-a"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN za otključavanje ekvivalentnog kućnog PLMN-a pružaoca usluge"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN za otključavanje ICCID-a"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN za otključavanje IMPI-ja"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN za otključavanje mrežne podgrupe pružaoca usluge"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Zahtijevanje otključavanja mreže na SIM-u…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Zahtijevanje otključavanja mrežne podgrupe na SIM-u…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Zahtijevanje otključavanja SIM-a pružaoca usluge…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Zahtijevanje otključavanja korporativnog SIM-a…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Zahtijevanje otključavanja PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Zahtijevanje otključavanja PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Zahtijevanje otključavanja PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Zahtijevanje otključavanja PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Zahtijevanje otključavanja PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Zahtijevanje otključavanja SIM-a…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Zahtijevanje otključivanja mreže 1 na RUIM-u…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Zahtijevanje otključavanja mreže 1 na RUIM-u…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Zahtijevanje otključavanje RUIM hrpd-a…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Zahtijevanje otključavanja RUIM-a pružaoca usluge…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Zahtijevanje otključavanja korporativnog RUIM-a…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Zahtijevanje otključavanja SPN-a…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Zahtijevanje otključavanja ekvivalentnog kućnog PLMN-a pružaoca usluge…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Zahtijevanje otključavanja ICCID-a…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Zahtijevanje otključavanja IMPI-ja…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Zahtijevanje otključavanja mrežne podgrupe pružaoca usluge…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Zahtijevanje otključavanja RUIM-a…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Zahtijevanje otključavanja PUK-om…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Zahtijevanje otključavanja PUK-om…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Zahtijevanje otključavanja PUK-om…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Zahtijevanje otključavanja PUK-om…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Zahtijevanje otključavanja PUK-om…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Zahtijevanje otključavanja PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Zahtjev za otključavanje mreže na SIM-u je neuspješan."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Zahtjev za otključavanje mrežne podgrupe na SIM-u je neuspješan."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Zahtjev za otključavanje SIM-a pružaoca usluge je neuspješan."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Zahtjev za otključavanje korporativnog SIM-a je neuspješan."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Zahtjev za otključavanje SIM-a je neuspješan."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Zahtjev za otključavanje mreže 1 na RUIM-u je neuspješan."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Zahtjev za otkjučavanje mreže 2 na RUIM-u je neuspješan."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Zahtjev za otključavanje RUIM Hrpd-ja je neuspješan."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Zahtjev za otključavanje korporativnog RUIM-ja je neuspješan."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Zahtjev za otključavanje RUIM-a pružaoca usluge je neuspješan."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Zahtjev za otključavanje RUIM-a je neuspješan."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Otključavanje PUK-om nije uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Otključavanje PUK-om nije uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Otključavanje PUK-om nije uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Otključavanje PUK-om nije uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Otključavanje PUK-om nije uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Otključavanje PUK-om nije uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Otključavanje PUK-om nije uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Otključavanje PUK-om nije uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Otključavanje PUK-om nije uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Otključavanje PUK-om nije uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Otključavanje PUK-om nije uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Zahtjev za otključavanje SPN-a je neuspješan."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Zahtjev za otključavanje ekvivalentnog kućnog PLMN-a pružaoca usluge je neuspješan."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Zahtjev za otključavanja ICCID-a je neuspješan."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Zahtjev za otključavanje IMPI-ja je neuspješan."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Zahtjev za otključavanje mrežne podgrupe pružaoca usluge je neuspješan."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Otključavanje mreže na SIM-u je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Otključavanje mrežne podgrupe na SIM-u je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Otključavanje SIM-a pružaoca usluge je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Otključavanje korporativnog SIM-a je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Otključavanje SIM-a je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Otključavanje mreže 1 na RUIM-u je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Otključavanje mreže 2 na RUIM-u je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Otključavanje RUIM Hrpd-a je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Otključavanja RUIM-a pružaoca usluge je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Otključavanje korporativnog RUIM-a je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Otključavanje RUIM-a je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Otključavanje PUK-om je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Otključavanje PUK-om je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Otključavanje PUK-om je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Otključavanje PUK-om je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Otključavanje PUK-om je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Otključavanje PUK-om je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Otključavanje PUK-om je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Otključavanje PUK-om je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Otključavanje PUK-om je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Otključavanje PUK-om je uspjelo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Otključavanje PUK-om je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Otključavanje SPN-a je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Otključavanje ekvivalentnog kućnog PLMN-a pružaoca usluge je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Otključavanje ICCID-a je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Otključavanje IMPI-ja je uspjelo."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Otključavanje mrežne podgrupe pružaoca usluge je uspjelo."</string> </resources> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index d6a7698dfe48..afed753f00b0 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"L\'administrador ha cedit el dispositiu per a ús personal"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"El dispositiu està gestionat"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"La teva organització gestiona aquest dispositiu i és possible que supervisi el trànsit de xarxa. Toca per obtenir més informació."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"L\'administrador ha modificat la configuració d\'ubicació"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Toca per veure la configuració d\'ubicació."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Les aplicacions poden accedir a la teva ubicació"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Contacta amb l\'administrador de TI per obtenir més informació"</string> <string name="country_detector" msgid="7023275114706088854">"Detector de país"</string> <string name="location_service" msgid="2439187616018455546">"Servei d\'ubicació"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Servei de notificacions de sensor"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"El contingut del dispositiu s\'esborrarà"</string> <string name="factory_reset_message" msgid="2657049595153992213">"No es pot utilitzar l\'aplicació d\'administració. S\'esborraran les dades del dispositiu.\n\nSi tens cap dubte, contacta amb l\'administrador de la teva organització."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ha desactivat la impressió."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Desbloqueja les apps personals"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Les apps es bloquejaran demà"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"L\'administrador de TI no permet posar en pausa el teu perfil de treball durant més de: <xliff:g id="DAYS">%1$d</xliff:g> dies"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Activa el perfil de treball"</string> <string name="me" msgid="6207584824693813140">"Mi"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcions de la tauleta"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcions d\'Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opcions del telèfon"</string> <string name="global_action_lock" msgid="6949357274257655383">"Bloqueig de pantalla"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Apaga"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Engegada"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Reinicia"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergència"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Informe d\'error"</string> <string name="global_action_logout" msgid="6093581310002476511">"Finalitza la sessió"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"accedir a ordres del proveïdor d\'ubicació addicionals"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permet que l\'aplicació accedeixi a ordres addicionals del proveïdor d\'ubicacions; per tant, és possible que l\'aplicació pugui interferir en el funcionament del GPS o d\'altres fonts d\'ubicacions."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"accedeix a la ubicació exacta només en primer pla"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Aquesta aplicació pot obtenir la teva ubicació exacta només quan està en primer pla. Els serveis d\'ubicació han d\'estar activats i disponibles al dispositiu perquè l\'aplicació els pugui utilitzar, i això pot fer que el consum de bateria augmenti."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Aquesta aplicació pot obtenir la teva ubicació exacta a través dels serveis d\'ubicació mentre s\'està utilitzant. Els serveis d\'ubicació del dispositiu han d\'estar activats perquè l\'aplicació pugui obtenir la ubicació, i això pot fer que l\'ús de la bateria augmenti."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"accedeix a la ubicació aproximada només en primer pla"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Aquesta aplicació pot obtenir la teva ubicació aproximada només quan està en primer pla. Els serveis d\'ubicació han d\'estar activats i disponibles al dispositiu perquè l\'aplicació els pugui utilitzar."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Aquesta aplicació pot obtenir la teva ubicació aproximada a través dels serveis d\'ubicació mentre s\'està utilitzant. Els serveis d\'ubicació del dispositiu han d\'estar activats perquè l\'aplicació pugui obtenir la ubicació."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"accedir a la ubicació en segon pla"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Aquesta aplicació pot accedir a la ubicació mentre s\'executa en segon pla, a més de poder fer-ho en primer pla."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aquesta aplicació pot accedir a la ubicació en qualsevol moment, encara que no s\'estigui utilitzant."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"canviar la configuració d\'àudio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permet que l\'aplicació modifiqui la configuració d\'àudio general, com ara el volum i l\'altaveu de sortida que es fa servir."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"gravar àudio"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"fer fotos i vídeos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Aquesta aplicació pot fer fotos i gravar vídeos amb la càmera en qualsevol moment."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Permet que una aplicació o un servei tinguin accés a les càmeres del sistema per fer fotos i vídeos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Aquesta aplicació del sistema amb privilegis pot fer fotos i gravar vídeos amb una càmera del sistema en qualsevol moment. L\'aplicació també ha de tenir el permís android.permission.CAMERA per accedir-hi."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permet que una aplicació o un servei pugui rebre crides de retorn sobre els dispositius de càmera que s\'obren o es tanquen."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Aquesta aplicació pot rebre crides de retorn quan s\'obre o es tanca un dispositiu de càmera mitjançant l\'aplicació en qüestió."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"controlar la vibració"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Permet que l\'aplicació controli el vibrador."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permet que l\'aplicació accedeixi a l\'estat de vibració."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"S\'està revisant el contingut actual"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Suport extern nou (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Toca per configurar"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Per transferir fotos i fitxers multimèdia"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problema amb el suport (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Toca per solucionar el problema"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"La unitat següent està malmesa: <xliff:g id="NAME">%s</xliff:g>. Selecciona-la per solucionar-ho."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> no és compatible"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"El dispositiu no admet la unitat <xliff:g id="NAME">%s</xliff:g>. Toca per configurar-la amb un format compatible."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Aquest dispositiu no admet la unitat següent: <xliff:g id="NAME">%s</xliff:g>. Selecciona-la per configurar-la en un format compatible."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"El dispositiu no admet aquest suport extern: <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"S\'ha extret <xliff:g id="NAME">%s</xliff:g> de manera inesperada"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Expulsa el suport extern abans d\'extreure\'l per evitar perdre\'n el contingut"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"S\'ha suprimit el suport (<xliff:g id="NAME">%s</xliff:g>)"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vols apujar el volum per sobre del nivell recomanat?\n\nSi escoltes música a un volum alt durant períodes llargs, pots danyar-te l\'oïda."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vols fer servir la drecera d\'accessibilitat?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Si la drecera està activada, prem els dos botons de volum durant 3 segons per iniciar una funció d\'accessibilitat."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Vols activar les funcions d\'accessibilitat?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Si mantens premudes les dues tecles de volum durant uns segons, s\'activaran les funcions d\'accessibilitat. Això podria canviar el funcionament del teu dispositiu.\n\nFuncions actuals:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nPots canviar les funcions seleccionades a Configuració > Accessibilitat."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Vols activar TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Si mantens premudes les dues tecles de volum durant uns segons, s\'activarà TalkBack, un lector de pantalla que pot ajudar persones invidents o amb visió reduïda. TalkBack canvia completament el funcionament del teu dispositiu.\n\nPots canviar la funció d\'aquesta drecera a Configuració > Accessibilitat."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Vols activar <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Si mantens premudes les dues tecles de volum durant uns segons, la funció d\'accessibilitat <xliff:g id="SERVICE">%1$s</xliff:g> s\'activarà. Això podria canviar el funcionament del teu dispositiu.\n\nPots canviar la funció d\'aquesta drecera a Configuració > Accessibilitat."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activa"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"No activis"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vols permetre que <xliff:g id="SERVICE">%1$s</xliff:g> controli el teu dispositiu per complet?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si actives <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositiu no farà servir el bloqueig de pantalla per millorar l\'encriptació de dades."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total és adequat per a les aplicacions que t\'ajuden amb l\'accessibilitat, però no per a la majoria de les aplicacions."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permet"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Denega"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toca una funció per començar a utilitzar-la:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Tria les funcions que vols utilitzar amb el botó d\'accessibilitat"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Tria les funcions que vols utilitzar amb la drecera per a tecles de volum"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> s\'ha desactivat"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edita les dreceres"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Fet"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilitza la drecera"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversió dels colors"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correcció del color"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S\'han mantingut premudes les tecles de volum. S\'ha activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"S\'han mantingut premudes les tecles de volum. S\'ha desactivat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Mantén premudes les dues tecles de volum durant 3 segons per fer servir <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Tria la funció que vols utilitzar quan toquis el botó d\'accessibilitat:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Tria la funció que vols utilitzar amb el gest d\'accessibilitat (llisca cap amunt amb dos dits des de la part inferior de la pantalla):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Tria la funció que vols utilitzar amb el gest d\'accessibilitat (fes lliscar tres dits cap amunt des de la part inferior de la pantalla):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Per canviar entre funcions, mantén premut el botó d\'accessibilitat."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Per canviar entre funcions, llisca cap amunt amb dos dits i mantén premut."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Per canviar entre funcions, llisca cap amunt amb tres dits i mantén premut."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliació"</string> <string name="user_switched" msgid="7249833311585228097">"Usuari actual: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"S\'està canviant a <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> i <xliff:g id="COUNT_3">%d</xliff:g> fitxers més</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> i <xliff:g id="COUNT_1">%d</xliff:g> fitxer més</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"No hi ha cap recomanació de persones amb qui compartir"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Llista d\'aplicacions"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Aquesta aplicació no té permís de gravació, però pot capturar àudio a través d\'aquest dispositiu USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Inici"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"No hi ha cap aplicació de treball que pugui obrir aquest contingut"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"No hi ha cap aplicació personal compatible amb aquest contingut"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"No hi ha cap aplicació personal que pugui obrir aquest contingut"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Gravar o reproduir àudio en trucades"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permet que l\'aplicació gravi o reprodueixi àudio en trucades si està assignada com a aplicació de marcador predeterminada."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN de desbloqueig de la xarxa SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN de desbloqueig de subconjunt de la xarxa SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN de desbloqueig de la SIM corporativa"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN de desbloqueig del proveïdor de serveis de la SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN de desbloqueig de la SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Introdueix el PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Introdueix el PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Introdueix el PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Introdueix el PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Introdueix el PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN de desbloqueig de RUIM xarxa tipus 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN de desbloqueig de RUIM xarxa tipus 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN de desbloqueig d\'HRPD"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN de desbloqueig de RUIM corporatiu"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN de desbloqueig del proveïdor de serveis de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN de desbloqueig de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Introdueix el PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Introdueix el PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Introdueix el PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Introdueix el PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Introdueix el PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Introdueix el PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN de desbloqueig de l\'SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN de desbloqueig de l\'SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN de desbloqueig de l\'ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN de desbloqueig de l\'IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN de desbloqueig del proveïdor de serveis del subconjunt de la xarxa"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"S\'està sol·licitant el desbloqueig de la xarxa SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"S\'està sol·licitant el desbloqueig del subconjunt de la xarxa SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"S\'està sol·licitant el desbloqueig del proveïdor de serveis de la SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"S\'està sol·licitant el desbloqueig de la SIM corporativa…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"S\'està sol·licitant el desbloqueig amb el PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"S\'està sol·licitant el desbloqueig amb el PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"S\'està sol·licitant el desbloqueig amb el PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"S\'està sol·licitant el desbloqueig amb el PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"S\'està sol·licitant el desbloqueig amb el PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"S\'està sol·licitant el desbloqueig de la SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"S\'està sol·licitant el desbloqueig de RUIM xarxa tipus 1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"S\'està sol·licitant el desbloqueig de RUIM xarxa tipus 2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"S\'està sol·licitant el desbloqueig d\'HRPD…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"S\'està sol·licitant el desbloqueig del proveïdor de serveis de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"S\'està sol·licitant el desbloqueig de RUIM corporatiu…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"S\'està sol·licitant el desbloqueig de l\'SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"S\'està sol·licitant el desbloqueig de l\'SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"S\'està sol·licitant el desbloqueig de l\'ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"S\'està sol·licitant el desbloqueig de l\'IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"S\'està sol·licitant el desbloqueig del proveïdor de serveis del subconjunt de la xarxa…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"S\'està sol·licitant el desbloqueig de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"S\'està sol·licitant el desbloqueig amb el PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"S\'està sol·licitant el desbloqueig amb el PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"S\'està sol·licitant el desbloqueig amb el PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"S\'està sol·licitant el desbloqueig amb el PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"S\'està sol·licitant el desbloqueig amb el PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"S\'està sol·licitant el desbloqueig amb el PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"No s\'ha pogut sol·licitar el desbloqueig de la xarxa SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"No s\'ha pogut sol·licitar el desbloqueig del subconjunt de la xarxa SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"No s\'ha pogut sol·licitar el desbloqueig del proveïdor de serveis de la SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"No s\'ha pogut desbloquejar la SIM corporativa."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"No s\'ha pogut sol·licitar el desbloqueig de la SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"No s\'ha pogut sol·licitar el desbloqueig de RUIM xarxa tipus 1."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"No s\'ha pogut sol·licitar el desbloqueig de RUIM xarxa tipus 2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"No s\'ha pogut sol·licitar el desbloqueig d\'HRPD."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"No s\'ha pogut sol·licitar el desbloqueig de RUIM corporatiu."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"No s\'ha pogut sol·licitar el desbloqueig del proveïdor de serveis de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"No s\'ha pogut sol·licitar el desbloqueig de RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"No s\'ha pogut desbloquejar correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"No s\'ha pogut desbloquejar correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"No s\'ha pogut desbloquejar correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"No s\'ha pogut desbloquejar correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"No s\'ha pogut desbloquejar correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"No s\'ha pogut desbloquejar correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"No s\'ha pogut desbloquejar correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"No s\'ha pogut desbloquejar correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"No s\'ha pogut desbloquejar correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"No s\'ha pogut desbloquejar correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"No s\'ha pogut desbloquejar correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"No s\'ha pogut sol·licitar el desbloqueig de l\'SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"No s\'ha pogut sol·licitar el desbloqueig de l\'SP Equivalent Home PLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"No s\'ha pogut sol·licitar el desbloqueig de l\'ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"No s\'ha pogut sol·licitar el desbloqueig de l\'IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"No s\'ha pogut sol·licitar el desbloqueig del proveïdor de serveis del subconjunt de la xarxa."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"La xarxa SIM s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"El subconjunt de la xarxa SIM s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"El proveïdor de serveis de la SIM s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"La SIM corporativa s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"La SIM s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"El RUIM xarxa tipus 1 s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"El RUIM xarxa tipus 2 s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"L\'HRPD s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"El proveïdor de serveis de RUIM s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"El RUIM corporatiu s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"El RUIM s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"S\'ha desbloquejat correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"S\'ha desbloquejat correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"S\'ha desbloquejat correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"S\'ha desbloquejat correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"S\'ha desbloquejat correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"S\'ha desbloquejat correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"S\'ha desbloquejat correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"S\'ha desbloquejat correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"S\'ha desbloquejat correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"S\'ha desbloquejat correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"S\'ha desbloquejat correctament amb el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"L\'SPN s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"L\'SP Equivalent Home PLMN s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"L\'ICCID s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"L\'IMPI s\'ha desbloquejat correctament."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"El proveïdor de serveis del subconjunt de la xarxa s\'ha desbloquejat correctament."</string> </resources> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 471602827019..a77d4178aeaa 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -195,8 +195,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrátor zařízení uvolnil k osobnímu používání"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Zařízení je spravováno"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Toto zařízení je spravováno vaší organizací, která může sledovat síťový provoz. Podrobnosti zobrazíte klepnutím."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Administrátor změnil nastavení polohy"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Klepnutím zobrazíte nastavení polohy."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikace mají přístup k vaší poloze"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Další informace vám poskytne váš administrátor IT"</string> <string name="country_detector" msgid="7023275114706088854">"Detektor země"</string> <string name="location_service" msgid="2439187616018455546">"Služby určování polohy"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Služba oznámení ze senzoru"</string> @@ -204,14 +204,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Zařízení bude vymazáno"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Aplikaci pro správu nelze použít. Zařízení teď bude vymazáno.\n\nV případě dotazů vám pomůže administrátor organizace."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Aplikace <xliff:g id="OWNER_APP">%s</xliff:g> tisk zakazuje."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Odblokujte osobní aplikace"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Aplikace budou zítra zablokovány"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Administrátor IT nepovoluje pozastavení pracovního profilu na déle než tento počet dní: <xliff:g id="DAYS">%1$d</xliff:g>"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Zapnout pracovní profil"</string> <string name="me" msgid="6207584824693813140">"Já"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Možnosti tabletu"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Možnosti zařízení Android TV"</string> @@ -245,10 +241,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Možnosti telefonu"</string> <string name="global_action_lock" msgid="6949357274257655383">"Zámek obrazovky"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Vypnout"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Vypnout"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Restartovat"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Stav nouze"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Hlášení chyb"</string> <string name="global_action_logout" msgid="6093581310002476511">"Ukončit relaci"</string> @@ -434,11 +428,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"přístup k dalším příkazům poskytovatele polohy"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Umožňuje aplikaci přístup k dalším příkazům poskytovatele polohy. To aplikaci umožní zasahovat do fungování systému GPS a dalších zdrojů polohy."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"přístup k přesné poloze jen na popředí"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Tato aplikace může zjistit vaši přesnou polohu, jen když běží na popředí. Aby aplikace mohla služby určování polohy používat, musí být v zařízení dostupné a musí být zapnuté. To může vést k rychlejšímu vybíjení baterie."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Když tuto aplikaci používáte, může pomocí služeb určování polohy získat vaši přesnou polohu. Aby ji mohla zjistit, musí být na zařízení zapnuté služby určování polohy. Tato funkce může vést k rychlejšímu vybíjení baterie."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"přístup k přibližné poloze jen na popředí"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Tato aplikace může zjistit vaši přibližnou polohu, jen když běží na popředí. Aby aplikace mohla služby určování polohy používat, musí být v zařízení dostupné a musí být zapnuté."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Když tuto aplikaci používáte, může pomocí služeb určování polohy získat vaši přibližnou polohu. Aby ji mohla zjistit, musí být na zařízení zapnuté služby určování polohy."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"přístup k poloze na pozadí"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Tato aplikace má přístup k poloze, nejen když je v popředí, ale i když běží na pozadí."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Tato aplikace má kdykoliv přístup k poloze (i když ji zrovna nepoužíváte)."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"změna nastavení zvuku"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Umožňuje aplikaci změnit globální nastavení zvuku, například hlasitost či reproduktor pro výstup zvuku."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"nahrávání zvuku"</string> @@ -450,11 +444,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"pořizování fotografií a videí"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Tato aplikace může pomocí fotoaparátu kdykoli pořídit snímek nebo nahrát video."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Povolte aplikaci nebo službě k systémovým fotoaparátům za účelem pořizování fotek a videí"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Tato privilegovaná nebo systémová aplikace může pomocí fotoaparátu kdykoli pořídit snímek nebo nahrát video. Aplikace musí zároveň mít oprávnění android.permission.CAMERA."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Povolte aplikaci nebo službě přijímat zpětná volání o otevření nebo zavření zařízení s fotoaparátem."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Tato aplikace může přijímat zpětná volání při otevírání nebo zavírání libovolného fotoaparátu (s informacemi o tom, která aplikace tuto akci provádí)."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"ovládání vibrací"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Umožňuje aplikaci ovládat vibrace."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Umožňuje aplikaci přístup ke stavu vibrací."</string> @@ -1390,13 +1382,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Kontrola aktuálního obsahu"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nové médium <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Klepnutím médium nastavíte"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"K přenosu fotek a médií"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problém s médiem <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Problém odstraníte klepnutím"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Úložiště <xliff:g id="NAME">%s</xliff:g> je poškozeno. Vyberte ho a zahajte opravu."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Úložiště <xliff:g id="NAME">%s</xliff:g> není podporováno"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Úložiště <xliff:g id="NAME">%s</xliff:g> není v tomto zařízení podporováno. Klepnutím zahájíte nastavení v podporovaném formátu."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Úložiště <xliff:g id="NAME">%s</xliff:g> není v tomto zařízení podporováno. Vyberte ho a zahajte nastavení v podporovaném formátu."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Úložiště <xliff:g id="NAME">%s</xliff:g> neočekávaně odpojeno"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Před odebráním médium nejprve odpojte, zabráníte tak ztrátě obsahu"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Médium <xliff:g id="NAME">%s</xliff:g> bylo odebráno"</string> @@ -1668,24 +1664,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zvýšit hlasitost nad doporučenou úroveň?\n\nDlouhodobý poslech hlasitého zvuku může poškodit sluch."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Použít zkratku přístupnosti?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Když je tato zkratka zapnutá, můžete funkci přístupnosti spustit tím, že na tři sekundy podržíte obě tlačítka hlasitosti."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Zapnout funkce pro usnadnění přístupu?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Podržením obou tlačítek hlasitosti po dobu několika sekund zapnete funkce pro usnadnění přístupu. Tato funkce může změnit fungování zařízení.\n\nAktuální funkce:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nVybrané funkce můžete změnit v Nastavení > Přístupnost."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Zapnout TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Podržením obou tlačítek hlasitosti po dobu několika sekund zapnete funkci TalkBack. Jedná se o čtečku obrazovky, která je užitečná pro nevidomé a slabozraké. TalkBack zcela změní fungování zařízení.\n\nZkratku můžete nastavit na jinou funkci v Nastavení > Přístupnost."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Zapnout <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Podržením obou tlačítek hlasitosti po dobu několika sekund zapnete funkci pro usnadnění přístupu <xliff:g id="SERVICE">%1$s</xliff:g>. Tato funkce může změnit fungování zařízení.\n\nZkratku můžete nastavit na jinou funkci v Nastavení > Přístupnost."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Zapnout"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nezapínat"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Chcete službě <xliff:g id="SERVICE">%1$s</xliff:g> povolit, aby nad vaším zařízením měla plnou kontrolu?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Pokud zapnete službu <xliff:g id="SERVICE">%1$s</xliff:g>, zařízení nebude používat zámek obrazovky k vylepšení šifrování dat."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Plná kontrola je vhodná u aplikací, které vám pomáhají s usnadněním přístupu, nikoli u většiny aplikací."</string> @@ -1696,10 +1683,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Povolit"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Zakázat"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Chcete-li některou funkci začít používat, klepněte na ni:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Vyberte funkce, které budete používat s tlačítkem přístupnosti"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Vyberte funkce, které budete používat se zkratkou tlačítka hlasitosti"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Služba <xliff:g id="SERVICE_NAME">%s</xliff:g> byla vypnuta"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Upravit zkratky"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Hotovo"</string> @@ -1707,23 +1692,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Použít zkratku"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Převrácení barev"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Oprava barev"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Byla podržena tlačítka hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Byla podržena tlačítka hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vypnutá."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Chcete-li používat službu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, tři sekundy podržte stisknutá obě tlačítka hlasitosti"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Určete, jakou funkci aktivujete klepnutím na tlačítko přístupnosti:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Určete, jakou funkci aktivujete pomocí gesta přístupnosti (přejetí dvěma prsty ze spodní části obrazovky nahoru):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Určete, jakou funkci aktivujete pomocí gesta přístupnosti (přejetí třemi prsty ze spodní části obrazovky nahoru):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Chcete-li přepnout mezi funkcemi, podržte tlačítko přístupnosti."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Chcete-li přepnout mezi funkcemi, přejeďte nahoru dvěma prsty a podržte je."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Chcete-li přepnout mezi funkcemi, přejeďte nahoru třemi prsty a podržte je."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Zvětšení"</string> <string name="user_switched" msgid="7249833311585228097">"Aktuální uživatel je <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Přepínání na účet <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2118,8 +2095,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> souborů</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> soubor</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Žádní doporučení lidé ke sdílení"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Seznam aplikací"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Tato aplikace nemá oprávnění k nahrávání, ale může zaznamenávat zvuk prostřednictvím tohoto zařízení USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Plocha"</string> @@ -2155,222 +2131,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Tento obsah nemohou otevřít žádné pracovní aplikace"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Tento obsah nepodporují žádné osobní aplikace"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Tento obsah nemohou otevřít žádné osobní aplikace"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Záznam a přehrávání zvuků při telefonických hovorech"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Pokud aplikace bude mít toto oprávnění a bude vybrána jako výchozí aplikace pro vytáčení, bude při telefonických hovorech moci přehrávat a zaznamenávat zvuky."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Kód PIN odblokování sítě pro SIM kartu"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN pro odblokování podskupiny sítí pro SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Kód PIN odblokování podnikové sítě pro SIM kartu"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Kód PIN odblokování poskytovatelů služeb pro SIM kartu"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Kód PIN pro odemknutí SIM karty"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Zadejte kód PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Zadejte kód PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Zadejte kód PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Zadejte kód PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Zadejte kód PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Kód PIN odblokování sítě1 pro kartu RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Kód PIN odblokování sítě2 pro kartu RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Kód PIN odblokování sítě hrpd pro kartu RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Kód PIN odblokování podnikové sítě pro kartu RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Kód PIN odblokování poskytovatele služeb pro kartu RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Kód PIN k odblokování karty RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Zadejte kód PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Zadejte kód PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Zadejte kód PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Zadejte kód PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Zadejte kód PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Zadejte kód PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Kód PIN pro odblokování sítě SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Kód PIN pro odblokování ekvivalentní domácí sítě PLMN poskytovatele služeb"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Kód PIN pro odemknutí čísla ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Kód PIN pro odemknutí identity IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Kód PIN pro odblokování poskytovatelů služeb pro podskupinu sítí"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Žádost o odblokování sítě pro SIM kartu…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Žádost o odblokování podskupiny sítí pro SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Žádost o odblokování poskytovatelů služeb pro SIM kartu…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Žádost o odblokování podnikové sítě pro SIM kartu…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Žádost o odemknutí kódem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Žádost o odemknutí kódem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Žádost o odemknutí kódem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Žádost o odemknutí kódem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Žádost o odemknutí kódem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Žádost o odemknutí SIM karty…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Žádost o odblokování sítě1 pro kartu RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Žádost o odblokování sítě2 pro kartu RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Žádost o odblokování sítě hrpd pro kartu RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Žádost o odblokování poskytovatele služeb pro kartu RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Žádost o odblokování podnikové sítě pro kartu RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Žádost o odblokování sítě SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Žádost o odblokování ekvivalentní domácí sítě PLMN poskytovatele služeb…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Žádost o odemknutí čísla ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Žádost o odemknutí identity IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Žádost o odblokování poskytovatelů služeb pro podskupinu sítí…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Žádost o odblokování karty RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Žádost o odemknutí kódem PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Žádost o odemknutí kódem PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Žádost o odemknutí kódem PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Žádost o odemknutí kódem PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Žádost o odemknutí kódem PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Žádost o odemknutí kódem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Požadavek na odblokování sítě pro SIM kartu se nezdařil."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Požadavek na odblokování podskupiny sítí pro SIM se nezdařil."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Požadavek na odblokování poskytovatelů služeb pro SIM kartu se nezdařil."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Požadavek na odblokování podnikové sítě pro SIM kartu se nezdařil."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Požadavek na odemknutí SIM karty se nezdařil."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Požadavek na odblokování sítě1 pro kartu RUIM se nezdařil."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Požadavek na odblokování sítě2 pro kartu RUIM se nezdařil."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Požadavek na odblokování sítě Hrpd pro kartu RUIM se nezdařil."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Požadavek na odblokování podnikové sítě pro kartu RUIM se nezdařil."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Požadavek na odblokování poskytovatele služeb pro kartu RUIM se nezdařil."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Požadavek na odblokování karty RUIM se nezdařil."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Odemknutí kódem PUK se nezdařilo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Odemknutí kódem PUK se nezdařilo."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Odemknutí kódem PUK se nezdařilo."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Odemknutí kódem PUK se nezdařilo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Odemknutí kódem PUK se nezdařilo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Odemknutí kódem PUK se nezdařilo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Odemknutí kódem PUK se nezdařilo."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Odemknutí kódem PUK se nezdařilo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Odemknutí kódem PUK se nezdařilo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Odemknutí kódem PUK se nezdařilo."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Odemknutí kódem PUK se nezdařilo."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Požadavek na odblokování sítě SPN se nezdařil."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Požadavek na odblokování ekvivalentní domácí sítě PLMN poskytovatele služeb se nezdařil."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Požadavek na odemknutí čísla ICCID se nezdařil."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Požadavek na odemknutí identity IMPI se nezdařil."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Požadavek na odblokování poskytovatelů služeb pro podskupinu sítí se nezdařil."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Odblokování sítě pro SIM kartu proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Odblokování podskupiny sítí pro SIM proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Odblokování poskytovatelů služeb pro SIM kartu proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Odblokování podnikové sítě pro SIM kartu proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Odemknutí SIM karty proběhlo úspěšně"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Odblokování sítě1 pro kartu RUIM proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Odblokování sítě2 pro kartu RUIM proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Odblokování sítě Hrpd pro kartu RUIM proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Odblokování poskytovatele služeb pro kartu RUIM proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Odblokování podnikové sítě pro kartu RUIM proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Odblokování karty RUIM proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Odemknutí kódem PUK proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Odemknutí kódem PUK proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Odemknutí kódem PUK proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Odemknutí kódem PUK proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Odemknutí kódem PUK proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Odemknutí kódem PUK proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Odemknutí kódem PUK proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Odemknutí kódem PUK proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Odemknutí kódem PUK proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Odemknutí kódem PUK proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Odemknutí kódem PUK proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Síť SPN byla úspěšně odblokována."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Odblokování ekvivalentní domácí sítě PLMN poskytovatele služeb proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Odemknutí čísla ICCID proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Odemknutí identity IMPI proběhlo úspěšně."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Odblokování poskytovatelů služeb pro podskupinu sítí proběhlo úspěšně."</string> </resources> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index d3f9cd018ea0..03d969fa88db 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administratoren har gjort personlig brug af enheden utilgængelig"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Dette er en administreret enhed"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Din organisation administrerer denne enhed og kan overvåge netværkstrafik. Tryk for at se info."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Placeringsindstillinger blev ændret af din administrator"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Tryk for at se dine placeringsindstillinger."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Apps kan få adgang til din placering"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Kontakt din it-administrator for at få flere oplysninger"</string> <string name="country_detector" msgid="7023275114706088854">"Landeregistrering"</string> <string name="location_service" msgid="2439187616018455546">"Placeringstjeneste"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Tjenesten Sensor Notification"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Enheden slettes"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Administrationsappen kan ikke bruges. Enheden vil nu blive ryddet. \n\nKontakt din organisations administrator, hvis du har spørgsmål."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Udskrivning er deaktiveret af <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Fjern blokeringen af personlige apps"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Dine apps blokeres i morgen"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Din it-administrator tillader ikke, at din arbejdsprofil sættes på pause i mere end <xliff:g id="DAYS">%1$d</xliff:g> dage"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Aktivér arbejdsprofil"</string> <string name="me" msgid="6207584824693813140">"Mig"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Valgmuligheder for tabletcomputeren"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Valgmuligheder for Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Indstillinger for telefon"</string> <string name="global_action_lock" msgid="6949357274257655383">"Skærmlås"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Sluk"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Afbryderknap"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Genstart"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Nødsituation"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Fejlrapport"</string> <string name="global_action_logout" msgid="6093581310002476511">"Afslut sessionen"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"få adgang til yderligere kommandoer for placeringsudbyder"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Tillader, at appen kan få adgang til yderligere kommandoer for placeringsudbydere. Dette kan gøre det muligt for appen at forstyrre GPS-funktionen eller andre placeringskilder."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"få kun adgang til nøjagtig placering i forgrunden"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Denne app kan kun finde din nøjagtige placering, når den er i forgrunden. Placeringstjenester skal være aktiverede og tilgængelige på din telefon, før appen kan anvende dem. Dette kan øge batteriforbruget."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Denne app kan finde din nøjagtige placering via placeringstjenester, når appen er i brug. Placeringstjenester skal være aktiveret på din enhed, før appen kan finde din placering. Dette kan øge batteriforbruget."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"få kun adgang til omtrentlig placering i forgrunden"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Denne app kan kun finde din omtrentlige placering, når den er i forgrunden. Placeringstjenester skal være aktiverede og tilgængelige på din enhed, før appen kan anvende dem."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Denne app kan finde din omtrentlige placering via placeringstjenester, når appen er i brug. Placeringstjenester skal være aktiveret på din enhed, før appen kan finde din placering."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"adgang til placering i baggrunden"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Foruden adgang til placering ved kørsel i forgrunden har denne app også adgang til din placering, mens den kører i baggrunden."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Denne app kan til enhver tid få adgang til din placering, selv når den ikke er i brug."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"skifte dine lydindstillinger"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Tillader, at appen kan ændre globale lydindstillinger, som f.eks. lydstyrke og hvilken højttaler der bruges til output."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"optage lyd"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"tage billeder og optage video"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Med denne app kan du tage billeder og optage video med kameraet når som helst."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Giv en app eller tjeneste adgang til systemkameraer for at tage billeder og optage video"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Denne privilegerede app eller systemapp kan til enhver tid tage billeder og optage video med et systemkamera. Appen skal også have tilladelsen android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Tillad, at en app eller tjeneste modtager tilbagekald om kameraenheder, der åbnes eller lukkes."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Denne app kan modtage tilbagekald, når en kameraenhed åbnes (via appen) eller lukkes."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"administrere vibration"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Tillader, at appen kan administrere vibratoren."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Tillader, at appen bruger vibration."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Tjekker aktuelt indhold"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nyt <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Tryk for at konfigurere"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Til overførsel af billeder og medier"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problem med <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tryk for at løse problemet"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> er beskadiget. Vælg for at rette."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> understøttes ikke"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Denne enhed understøtter ikke dette <xliff:g id="NAME">%s</xliff:g>. Tryk for at konfigurere det til et understøttet format."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Denne enhed understøtter ikke dette <xliff:g id="NAME">%s</xliff:g>. Vælg for at konfigurere mediet i et understøttet format."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Denne enhed understøtter ikke dette <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> blev fjernet uventet"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Demonter mediet, inden du fjerner det, så du ikke mister dit indhold"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> er fjernet"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vil du skrue højere op end det anbefalede lydstyrkeniveau?\n\nDu kan skade hørelsen ved at lytte til meget høj musik over længere tid."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vil du bruge genvejen til Hjælpefunktioner?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Når genvejen er aktiveret, kan du starte en hjælpefunktion ved at trykke på begge lydstyrkeknapper i tre sekunder."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Vil du aktivere hjælpefunktionerne?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Hvis du holder begge lydstyrkeknapperne nede i et par sekunder, aktiveres hjælpefunktionerne. Det kan ændre på, hvordan din enhed fungerer.\n\nAktuelle funktioner:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nDu kan ændre de valgte funktioner i Indstillinger > Hjælpefunktioner."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Vil du aktivere TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Hvis du holder begge lydstyrkeknapperne nede i et par sekunder, aktiveres TalkBack, som er en skærmlæser, der kan hjælpe blinde og brugere med stærkt nedsat syn. TalkBack ændrer fuldstændigt på, hvordan din enhed fungerer.\n\nDu kan ændre denne genvej til en anden funktion i Indstillinger > Hjælpefunktioner."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Vil du aktivere <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Hvis du holder begge lydstyrkeknapperne nede i et par sekunder, aktiveres hjælpefunktionen <xliff:g id="SERVICE">%1$s</xliff:g>. Det kan ændre på, hvordan din enhed fungerer.\n\nDu kan ændre denne genvej til en anden funktion i Indstillinger > Hjælpefunktioner."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktivér"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Aktivér ikke"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vil du give <xliff:g id="SERVICE">%1$s</xliff:g> fuld kontrol over din enhed?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Hvis du aktiverer <xliff:g id="SERVICE">%1$s</xliff:g>, vil enheden ikke benytte skærmlåsen til at forbedre datakrypteringen."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Fuld kontrol er velegnet til apps, der hjælper dig med hjælpefunktioner, men ikke de fleste apps."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Tillad"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Afvis"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tryk på en funktion for at bruge den:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Vælg, hvilke funktioner du vil bruge med knappen Hjælpefunktioner"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Vælg, hvilke funktioner du vil bruge med genvejen via lydstyrkeknapperne"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> er blevet deaktiveret"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Rediger genveje"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Udfør"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Brug genvej"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ombytning af farver"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korriger farve"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lydstyrkeknapperne blev holdt nede. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er aktiveret."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Lydstyrkeknapperne blev holdt nede. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er deaktiveret."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Hold begge lydstyrkeknapper nede i tre sekunder for at bruge <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Vælg, hvilken funktion du vil bruge, når du trykker på knappen Hjælpefunktioner:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Vælg, hvilken funktion du vil bruge, når du laver bevægelsen for hjælpefunktioner (stryger opad fra bunden af skærmen med to fingre):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Vælg, hvilken funktion du vil bruge, når du laver bevægelsen for hjælpefunktioner (stryger opad fra bunden af skærmen med tre fingre):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Du kan skifte mellem funktioner ved at holde knappen Hjælpefunktioner nede."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Du kan skifte mellem funktioner ved at stryge opad med to fingre og holde dem nede."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Du kan skifte mellem funktioner ved at stryge opad med tre fingre og holde dem nede."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Forstørrelse"</string> <string name="user_switched" msgid="7249833311585228097">"Nuværende bruger <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Skifter til <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fil</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> filer</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Der er ingen anbefalede brugere at dele med"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Liste over apps"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Denne app har ikke fået tilladelse til at optage, men optager muligvis lyd via denne USB-enhed."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Hjem"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Dette indhold kan ikke åbnes af arbejdsapps"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Dette indhold understøttes ikke af personlige apps"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Dette indhold kan ikke åbnes af personlige apps"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Optage eller afspille lyd i telefonopkald"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Tillader, at denne app kan optage og afspille lyd i telefonopkald, når den er angivet som standardapp til opkald."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Pinkode til oplåsning af SIM-netværket"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Pinkode til oplåsning af delmængde for SIM-netværket"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Pinkode til oplåsning af virksomhedens SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Pinkode til oplåsning af tjenesteudbyderens SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Pinkode til oplåsning af SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Angiv PUK-kode"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Angiv PUK-kode"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Angiv PUK-kode"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Angiv PUK-kode"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Angiv PUK-kode"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Pinkode til oplåsning af RUIM for Network1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Pinkode til oplåsning af RUIM for Network2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Pinkode til oplåsning af HRDP-relateret RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Pinkode til oplåsning af virksomhedens RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Pinkode til oplåsning af tjenesteudbyderens RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Pinkode til oplåsning af RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Angiv PUK-kode"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Angiv PUK-kode"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Angiv PUK-kode"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Angiv PUK-kode"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Angiv PUK-kode"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Angiv PUK-kode"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Pinkode til oplåsning af SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Pinkode til oplåsning af tjenesteudbyderens EHPLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Pinkode til oplåsning af ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Pinkode til oplåsning af IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Pinkode til oplåsning af tjenesteudbyderens netværksdelmængde"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Anmoder om oplåsning af SIM-netværket…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Anmoder om oplåsning af delmængden for SIM-netværket…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Anmoder om oplåsning af tjenesteudbyderens SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Anmoder om oplåsning af virksomhedens SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Anmoder om oplåsning med PUK-koden…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Anmoder om oplåsning med PUK-koden…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Anmoder om oplåsning med PUK-koden…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Anmoder om oplåsning med PUK-koden…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Anmoder om oplåsning med PUK-koden…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Anmoder om oplåsning af SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Anmoder om oplåsning af RUIM for Network1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Anmoder om oplåsning af RUIM for Network2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Anmoder om oplåsning af HRDP-relateret RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Anmoder om oplåsning af tjenesteudbyderens RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Anmoder om oplåsning af virksomhedens RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Anmoder om oplåsning af SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Anmoder om oplåsning af tjenesteudbyderens EHPLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Anmoder om oplåsning af ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Anmoder om oplåsning af IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Anmoder om oplåsning af tjenesteudbyderens netværksdelmængde…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Anmoder om oplåsning af RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Anmoder om oplåsning med PUK-koden…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Anmoder om oplåsning med PUK-koden…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Anmoder om oplåsning med PUK-koden…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Anmoder om oplåsning med PUK-koden…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Anmoder om oplåsning med PUK-koden…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Anmoder om oplåsning med PUK-koden…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Anmodningen om oplåsning af SIM-netværket mislykkedes."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Anmodningen om oplåsning af delmængde for SIM-netværket mislykkedes."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Anmodningen om oplåsning af tjenesteudbyderens SIM mislykkedes."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Anmodningen om oplåsning af virksomhedens SIM mislykkedes."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Anmodningen om oplåsning af SIM mislykkedes."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Anmodningen om oplåsning af RUIM for Network1 mislykkedes."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Anmodningen om oplåsning af RUIM for Network2 mislykkedes."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Anmodningen om oplåsning af HRDP-relateret RUIM mislykkedes."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Anmodningen om oplåsning af virksomhedens RUIM mislykkedes."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Anmodningen om oplåsning af tjenesteudbyderens RUIM mislykkedes."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Anmodningen om oplåsning af RUIM mislykkedes."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Der kunne ikke låses op med PUK-koden."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Der kunne ikke låses op med PUK-koden."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Der kunne ikke låses op med PUK-koden."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Der kunne ikke låses op med PUK-koden."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Der kunne ikke låses op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Der kunne ikke låses op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Der kunne ikke låses op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Der kunne ikke låses op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Der kunne ikke låses op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Der kunne ikke låses op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Der kunne ikke låses op med PUK-koden."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Anmodningen om oplåsning af SPN mislykkedes."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Anmodningen om oplåsning af tjenesteudbyderens EHPLMN mislykkedes."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Anmodningen om oplåsning af ICCID mislykkedes."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Anmodningen om oplåsning af IMPI mislykkedes."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Anmodningen om oplåsning af tjenesteudbyderens netværksdelmængde mislykkedes."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM-netværket blev låst op."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Delmængden for SIM-netværket blev låst op."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Tjenesteudbyderens SIM blev låst op."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Virksomhedens SIM blev låst op."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM blev låst op."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM for Network1 blev låst op."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM for Network2 blev låst op."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"HRDP-relateret RUIM blev låst op."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Tjenesteudbyderens RUIM blev låst op."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Virksomhedens RUIM blev låst op."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM blev låst op."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Der blev låst op med PUK-koden."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Der blev låst op med PUK-koden."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Der blev låst op med PUK-koden."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Der blev låst op med PUK-koden."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Der blev låst op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Der blev låst op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Der blev låst op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Der blev låst op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Der blev låst op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Der blev låst op med PUK-koden."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Der blev låst op med PUK-koden."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN blev låst op."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Tjenesteudbyderens EHPLMN blev låst op."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID blev låst op."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI blev låst op."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Tjenesteudbyderens netværksdelmængde blev låst op."</string> </resources> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index c216b26831f2..15d3645dce4e 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrator hat das Gerät zur persönlichen Nutzung abgegeben"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Dies ist ein verwaltetes Gerät"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Deine Organisation verwaltet dieses Gerät und überprüft unter Umständen den Netzwerkverkehr. Tippe hier, um weitere Informationen zu erhalten."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Standorteinstellungen durch Administrator geändert"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Tippe, um deine Standorteinstellungen anzuzeigen."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Apps können auf deinen Standort zugreifen"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Wende dich an deinen IT-Administrator, um mehr zu erfahren"</string> <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string> <string name="location_service" msgid="2439187616018455546">"Standortdienst"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Die Daten auf deinem Gerät werden gelöscht."</string> <string name="factory_reset_message" msgid="2657049595153992213">"Die Admin-App kann nicht verwendet werden. Die Daten auf deinem Gerät werden nun gelöscht.\n\nBitte wende dich bei Fragen an den Administrator deiner Organisation."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Drucken wurde von <xliff:g id="OWNER_APP">%s</xliff:g> deaktiviert."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Blockierung privater Apps aufheben"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Apps werden morgen blockiert"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Dein IT-Administrator hat festgelegt, dass dein Arbeitsprofil nicht länger als <xliff:g id="DAYS">%1$d</xliff:g> Tage pausiert werden darf"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Arbeitsprofil aktivieren"</string> <string name="me" msgid="6207584824693813140">"Eigene"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet-Optionen"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV-Optionen"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Telefonoptionen"</string> <string name="global_action_lock" msgid="6949357274257655383">"Displaysperre"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Ausschalten"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Ein/Aus"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Neustart"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Notfall"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Fehlerbericht"</string> <string name="global_action_logout" msgid="6093581310002476511">"Sitzung beenden"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"Auf zusätzliche Dienstanbieterbefehle für Standort zugreifen"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ermöglicht der App, auf zusätzliche Standortanbieterbefehle zuzugreifen. Damit könnte die App die Funktionsweise von GPS oder anderen Standortquellen beeinträchtigen."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"Nur bei Ausführung im Vordergrund auf den genauen Standort zugreifen"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Diese App kann deinen genauen Standort nur dann ermitteln, wenn sie im Vordergrund ausgeführt wird. Damit die App Standortdienste nutzen kann, müssen sie auf deinem Gerät aktiviert und verfügbar sein. Hierdurch kann sich der Akkuverbrauch erhöhen."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Wenn diese App verwendet wird, kann sie über die Standortdienste deinen genauen Standort ermitteln. Damit das funktioniert, müssen die Standortdienste auf deinem Gerät aktiviert sein. Das kann den Akkuverbrauch erhöhen."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"Nur bei Ausführung im Vordergrund auf den ungefähren Standort zugreifen"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Diese App kann deinen ungefähren Standort nur dann ermitteln, wenn sie im Vordergrund ausgeführt wird. Damit die App Standortdienste nutzen kann, müssen sie auf deinem Gerät aktiviert und verfügbar sein."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Wenn diese App verwendet wird, kann sie über die Standortdienste deinen ungefähren Standort ermitteln. Damit das funktioniert, müssen die Standortdienste auf deinem Gerät aktiviert sein."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"Im Hintergrund auf den Standort zugreifen"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Diese App kann bei Ausführung im Vorder- und Hintergrund auf den Standort zugreifen."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Diese App kann jederzeit auf den Standort zugreifen, auch wenn sie gerade nicht verwendet wird."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"Audio-Einstellungen ändern"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Ermöglicht der App, globale Audio-Einstellungen zu ändern, etwa die Lautstärke und den Lautsprecher für die Ausgabe."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"Audio aufnehmen"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"Bilder und Videos aufnehmen"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Diese App kann mit der Kamera jederzeit Bilder und Videos aufnehmen."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Einer App oder einem Dienst Zugriff auf Systemkameras erlauben, um Fotos und Videos aufnehmen zu können"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Diese privilegierte System-App kann jederzeit mit einer Systemkamera Bilder und Videos aufnehmen. Die App benötigt auch die Berechtigung \"android.permission.CAMERA\"."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Einer App oder einem Dienst den Empfang von Callbacks erlauben, wenn eine Kamera geöffnet oder geschlossen wird."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Diese App kann Callbacks empfangen, wenn eine der Kameras des Geräts von einer Anwendung geöffnet oder geschlossen wird."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"Vibrationsalarm steuern"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Ermöglicht der App, den Vibrationsalarm zu steuern"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Ermöglicht der App, auf den Vibrationsstatus zuzugreifen."</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Aktuelle Inhalte werden geprüft"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Neues Speichergerät (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Zum Einrichten tippen"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Zum Übertragen von Fotos und Medien"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problem mit <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tippen, um das Problem zu beheben"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> ist beschädigt. Zur Problembehebung auswählen."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> nicht unterstützt"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"<xliff:g id="NAME">%s</xliff:g> wird von diesem Gerät nicht unterstützt. Zum Einrichten in einem unterstützten Format tippen."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"<xliff:g id="NAME">%s</xliff:g> wird von diesem Gerät nicht unterstützt. Zur Einrichtung eines unterstützten Formats auswählen."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> wurde unerwartet entfernt"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Lass das Speichergerät vor dem Entfernen auswerfen, damit keine Daten verloren gehen"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> wurde entfernt"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Lautstärke über den Schwellenwert anheben?\n\nWenn du über einen längeren Zeitraum Musik in hoher Lautstärke hörst, kann dies dein Gehör schädigen."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Verknüpfung für Bedienungshilfen verwenden?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Wenn die Verknüpfung aktiviert ist, kannst du die beiden Lautstärketasten drei Sekunden lang gedrückt halten, um eine Bedienungshilfe zu starten."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Bedienungshilfen aktivieren?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Wenn du beide Lautstärketasten einige Sekunden lang gedrückt hältst, aktivierst du die Bedienungshilfen. Dadurch kann sich die Funktionsweise deines Geräts ändern.\n\nAktuelle Funktionen:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nDu kannst ausgewählte Funktionen unter \"Einstellungen\" > \"Bedienungshilfen\" ändern."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack aktivieren?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Wenn du beide Lautstärketasten einige Sekunden lang gedrückt hältst, aktivierst du TalkBack. Das ist ein sogenannter Screenreader, also eine Funktion, die Menschen mit eingeschränktem Sehvermögen und Blinden den Bildschirminhalt vorliest. Mit TalkBack ändert sich die Funktionsweise deines Geräts grundlegend.\n\nUnter \"Einstellungen > \"Bedienungshilfen\" kannst du dieser Verknüpfung eine andere Funktion zuweisen."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> aktivieren?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Wenn du beide Lautstärketasten einige Sekunden lang gedrückt hältst, aktivierst du die Bedienungshilfe \"<xliff:g id="SERVICE">%1$s</xliff:g>\". Dadurch kann sich die Funktionsweise deines Geräts ändern.\n\nUnter \"Einstellungen > \"Bedienungshilfen\" kannst du dieser Verknüpfung eine andere Funktion zuweisen."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktivieren"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nicht aktivieren"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> die vollständige Kontrolle über dein Gerät geben?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Wenn du <xliff:g id="SERVICE">%1$s</xliff:g> aktivierst, verwendet dein Gerät nicht die Displaysperre, um die Datenverschlüsselung zu verbessern."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Die vollständige Kontrolle sollte nur für die Apps aktiviert werden, die dir den Zugang zu den App-Funktionen erleichtern. Das ist in der Regel nur ein kleiner Teil der Apps."</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Zulassen"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Ablehnen"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Zum Auswählen der gewünschten Funktion tippen:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Funktionen auswählen, die du mit der Schaltfläche \"Bedienungshilfen\" verwenden möchtest"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Funktionen auswählen, die du mit der Verknüpfung für die Lautstärketaste verwenden möchtest"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> wurde deaktiviert"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Verknüpfungen bearbeiten"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Fertig"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Verknüpfung verwenden"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Farbumkehr"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Farbkorrektur"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lautstärketasten wurden gedrückt gehalten. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ist aktiviert."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Lautstärketasten wurden gedrückt gehalten. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ist deaktiviert."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Halten Sie beide Lautstärketasten drei Sekunden lang gedrückt, um <xliff:g id="SERVICE_NAME">%1$s</xliff:g> zu verwenden"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Wähle eine Funktion aus, die verwendet wird, wenn du auf die Schaltfläche \"Bedienungshilfen\" tippst:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Wähle die Funktion aus, die mit der Touch-Geste für die Bedienungshilfen verwendet werden soll (mit zwei Fingern vom unteren Bildschirmrand nach oben wischen):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Wähle eine Funktion aus, die mit der Touch-Geste für die Bedienungshilfen verwendet werden soll (mit drei Fingern vom unteren Bildschirmrand nach oben wischen):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Wenn du zwischen den Funktionen wechseln möchtest, halte die Schaltfläche \"Bedienungshilfen\" gedrückt."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Wenn du zwischen den Funktionen wechseln möchtest, wische mit zwei Fingern nach oben und halte."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Wenn du zwischen den Funktionen wechseln möchtest, wische mit drei Fingern nach oben und halte."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Vergrößerung"</string> <string name="user_switched" msgid="7249833311585228097">"Aktueller Nutzer <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Wechseln zu <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> und <xliff:g id="COUNT_3">%d</xliff:g> Dateien</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> und <xliff:g id="COUNT_1">%d</xliff:g> Datei</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Keine Personen zum Teilen empfohlen"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Liste der Apps"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Diese App hat noch keine Berechtigung zum Aufnehmen erhalten, könnte aber Audioaufnahmen über dieses USB-Gerät machen."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Startseite"</string> @@ -2073,249 +2049,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"Geschäftlich"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Private Ansicht"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Geschäftliche Ansicht"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Teilen mit geschäftlichen Apps nicht möglich"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"Dein IT-Administrator hat festgelegt, dass du diese Inhalte mit den Apps in deinem Arbeitsprofil nicht teilen darfst"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Öffnen mit geschäftlichen Apps nicht möglich"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"Dein IT-Administrator hat festgelegt, dass du diese Inhalte mit den Apps in deinem Arbeitsprofil nicht aufrufen darfst"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Teilen mit privaten Apps nicht möglich"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"Dein IT-Administrator hat festgelegt, dass du diese Inhalte mit den Apps in deinem privaten Profil nicht teilen darfst"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Öffnen mit privaten Apps nicht möglich"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"Dein IT-Administrator hat festgelegt, dass du diese Inhalte mit den Apps in deinem privaten Profil nicht aufrufen darfst"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Arbeitsprofil pausiert"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"Aktivieren"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Audio bei Telefonanrufen aufnehmen oder wiedergeben"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Ermöglicht dieser App das Aufnehmen und Wiedergeben von Audio bei Telefonanrufen, wenn sie als Standard-Telefon-App festgelegt wurde."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"Diese Inhalte werden von geschäftlichen Apps nicht unterstützt"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Diese Inhalte dürfen nicht mit geschäftlichen Apps geöffnet werden"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Diese Inhalte werden von privaten Apps nicht unterstützt"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Diese Inhalte dürfen nicht mit privaten Apps geöffnet werden"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Entsperr-PIN für Netz-SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Entsperr-PIN für Subnetz-SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Entsperr-PIN für Unternehmens-SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Entsperr-PIN für Mobilfunkanbieter-SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Entsperr-PIN für SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK eingeben"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK eingeben"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK eingeben"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK eingeben"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK eingeben"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Entsperr-PIN für Network1-RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Entsperr-PIN für Network2-RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Entsperr-PIN für HRPD-RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Entsperr-PIN für Unternehmens-RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Entsperr-PIN für Mobilfunkanbieter-RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Entsperr-PIN für RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK eingeben"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK eingeben"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK eingeben"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK eingeben"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK eingeben"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK eingeben"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Entsperr-PIN für SPN-SIM"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Entsperr-PIN für SP-Equivalent-Home-PLMN-SIM"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Entsperr-PIN für ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Entsperr-PIN für IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Entsperr-PIN für Subnetz- und Mobilfunkanbieter-SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Netz-SIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Subnetz-SIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Mobilfunkanbieter-SIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Unternehmens-SIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Entsperrung durch PUK-Eingabe wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Entsperrung durch PUK-Eingabe wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Entsperrung durch PUK-Eingabe wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Entsperrung durch PUK-Eingabe wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Entsperrung durch PUK-Eingabe wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Network1-RUIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Network2-RUIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"HRPD-RUIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Mobilfunkanbieter-RUIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Unternehmens-RUIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN-SIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP-Equivalent-Home-PLMN: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Subnetz- und Mobilfunkanbieter-SIM: Entsperrung wird angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM: Entsperrung angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Entsperrung durch PUK-Eingabe wird angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Entsperrung durch PUK-Eingabe wird angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Entsperrung durch PUK-Eingabe wird angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Entsperrung durch PUK-Eingabe wird angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Entsperrung durch PUK-Eingabe wird angefordert…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Entsperrung durch PUK-Eingabe wird angefordert…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Netz-SIM: Entsperrung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Subnetz-SIM: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Mobilfunkanbieter-SIM: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Unternehmens-SIM: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Network1-RUIM: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Network2-RUIM: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"HRPD-RUIM: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Unternehmens-RUIM: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Mobilfunkanbieter-RUIM: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Entsperrung durch PUK-Eingabe war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Entsperrung durch PUK-Eingabe war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Entsperrung durch PUK-Eingabe war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Entsperrung durch PUK-Eingabe war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Entsperrung durch PUK-Eingabe war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Entsperrung durch PUK-Eingabe war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Entsperrung durch PUK-Eingabe war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Entsperrung durch PUK-Eingabe war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Entsperrung durch PUK-Eingabe war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Entsperrung durch PUK-Eingabe war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Entsperrung durch PUK-Eingabe war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN-SIM: Entsperrungsanforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP-Equivalent-Home-PLMN: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI: Entsperrung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Subnetz- und Mobilfunkanbieter-SIM: Entsperranforderung war nicht erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Subnetz-SIM: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Subnetz-SIM: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Mobilfunkanbieter-SIM: Entsperranforderung war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Unternehmens-SIM: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Network1-RUIM: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Network2-RUIM: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"HRPD-RUIM: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Mobilfunkanbieter-RUIM: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Unternehmens-RUIM: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Entsperrung durch PUK-Eingabe war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Entsperrung durch PUK-Eingabe war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Entsperrung durch PUK-Eingabe war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Entsperrung durch PUK-Eingabe war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Entsperrung durch PUK-Eingabe war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Entsperrung durch PUK-Eingabe war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Entsperrung durch PUK-Eingabe war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Entsperrung durch PUK-Eingabe war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Entsperrung durch PUK-Eingabe war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Entsperrung durch PUK-Eingabe war erfolgreich."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Entsperrung durch PUK-Eingabe war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN-SIM: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP-Equivalent-Home-PLMN: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI: Entsperrung war erfolgreich."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Subnetz- und Mobilfunkanbieter-SIM: Entsperrung war erfolgreich."</string> </resources> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 10af8f245d7e..2c22a120efcd 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Συσκευή από την οποία αποσύρθηκε ο διαχειριστής για προσωπική χρήση"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Η συσκευή είναι διαχειριζόμενη"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Ο οργανισμός σας διαχειρίζεται αυτήν τη συσκευή και ενδέχεται να παρακολουθεί την επισκεψιμότητα δικτύου. Πατήστε για λεπτομέρειες."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Οι ρυθμίσεις τοποθεσίας άλλαξαν από τον διαχειριστή"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Πατήστε, για να δείτε τις ρυθμίσεις τοποθεσίας."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Οι εφαρμογές μπορούν να αποκτήσουν πρόσβαση στην τοποθεσία σας"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Μιλήστε με τον διαχειριστή IT, για να μάθετε περισσότερα."</string> <string name="country_detector" msgid="7023275114706088854">"Ανιχνευτής χώρας"</string> <string name="location_service" msgid="2439187616018455546">"Υπηρεσία τοποθεσίας"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Υπηρεσία ειδοποίησης αισθητήρα"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Η συσκευή σας θα διαγραφεί"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Δεν είναι δυνατή η χρήση της εφαρμογής διαχειριστή. Η συσκευή σας θα διαγραφεί.\n\nΕάν έχετε ερωτήσεις, επικοινωνήστε με τον διαχειριστή του οργανισμού σας."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Η εκτύπωση απενεργοποιήθηκε από τον χρήστη <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Κατ. αποκλ. προσ. εφαρμογών"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Αποκλεισμός εφαρμογών αύριο"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Ο διαχειριστής IT δεν επιτρέπει την παύση του προφίλ εργασίας σας για περισσότερες από <xliff:g id="DAYS">%1$d</xliff:g> ημέρες."</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Ενεργοποίηση προφίλ εργασίας"</string> <string name="me" msgid="6207584824693813140">"Για εμένα"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Επιλογές tablet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Επιλογές Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Επιλογές τηλεφώνου"</string> <string name="global_action_lock" msgid="6949357274257655383">"Κλείδωμα οθόνης"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Απενεργοποίηση"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Λειτουργία"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Επανεκκίνηση"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Κλήση έκτακτης ανάγκης"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Αναφορά σφαλμάτων"</string> <string name="global_action_logout" msgid="6093581310002476511">"Λήξη περιόδου σύνδεσης"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"έχει πρόσβαση σε επιπλέον εντολές παρόχου τοποθεσίας"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Επιτρέπει στην εφαρμογή την πρόσβαση σε επιπλέον εντολές παρόχου τοποθεσίας. Αυτό μπορεί να δώσει τη δυνατότητα στην εφαρμογή να παρέμβει στη λειτουργία του GPS ή άλλων πηγών τοποθεσίας."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"πρόσβαση στην ακριβή τοποθεσία μόνο στο προσκήνιο"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Αυτή η εφαρμογή μπορεί να ανιχνεύσει την ακριβή τοποθεσία σας μόνο όταν βρίσκεται στο προσκήνιο. Οι υπηρεσίες τοποθεσίας θα πρέπει να είναι ενεργοποιημένες και διαθέσιμες στη συσκευή σας, προκειμένου να μπορεί να τις χρησιμοποιήσει η εφαρμογή. Με την ενεργοποίηση αυτής της ρύθμισης, μπορεί να αυξηθεί η κατανάλωση μπαταρίας."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Αυτή η εφαρμογή έχει πρόσβαση στην ακριβή τοποθεσία από τις υπηρεσίες τοποθεσίας ενώ η εφαρμογή χρησιμοποιείται. Οι υπηρεσίες τοποθεσίας για τη συσκευή σας θα πρέπει να είναι ενεργοποιημένες έτσι ώστε η εφαρμογή να λάβει την τοποθεσία. Αυτό μπορεί να αυξήσει τη χρήση της μπαταρίας."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"πρόσβαση στην κατά προσέγγιση τοποθεσία μόνο στο προσκήνιο"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Αυτή η εφαρμογή έχει πρόσβαση στην τοποθεσία κατά προσέγγιση, μόνο όταν βρίσκεται στο προσκήνιο. Οι υπηρεσίες τοποθεσίας πρέπει να έχουν ενεργοποιηθεί και να είναι διαθέσιμες στη συσκευή σας, για να μπορεί να τις χρησιμοποιήσει η εφαρμογή."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Αυτή η εφαρμογή έχει πρόσβαση στην τοποθεσία κατά προσέγγιση από τις υπηρεσίες τοποθεσίας ενώ η εφαρμογή χρησιμοποιείται. Οι υπηρεσίες τοποθεσίας για τη συσκευή σας θα πρέπει να είναι ενεργοποιημένες έτσι ώστε η εφαρμογή να λάβει την τοποθεσία."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"πρόσβαση στην τοποθεσία στο παρασκήνιο"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Εκτός από την πρόσβαση τοποθεσίας ενώ βρίσκεται στο προσκήνιο, αυτή η εφαρμογή μπορεί να αποκτήσει πρόσβαση στην τοποθεσία ενώ εκτελείται στο παρασκήνιο."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Αυτή η εφαρμογή μπορεί να αποκτήσει πρόσβαση στην τοποθεσία ανά πάσα στιγμή, ακόμη και όταν συσκευή δεν χρησιμοποιείται."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"αλλάζει τις ρυθμίσεις ήχου"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Επιτρέπει στην εφαρμογή την τροποποίηση καθολικών ρυθμίσεων ήχου, όπως η ένταση και ποιο ηχείο χρησιμοποιείται για έξοδο."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"εγγράφει ήχο"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"κάνει λήψη φωτογραφιών και βίντεο"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Αυτή η εφαρμογή μπορεί να τραβήξει φωτογραφίες και βίντεο χρησιμοποιώντας την κάμερα, ανά πάσα στιγμή."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Παραχωρήστε σε μια εφαρμογή ή υπηρεσία πρόσβαση στις κάμερες του συστήματος για τη λήψη φωτογραφιών και βίντεο"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Αυτή η προνομιακή εφαρμογή ή εφαρμογή συστήματος μπορεί να τραβάει φωτογραφίες και να εγγράφει βίντεο, χρησιμοποιώντας μια κάμερα του συστήματος ανά πάσα στιγμή. Απαιτείται, επίσης, η εφαρμογή να έχει την άδεια android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Επιτρέψτε σε μια εφαρμογή ή μια υπηρεσία να λαμβάνει επανάκλησεις σχετικά με το άνοιγμα ή το κλείσιμο συσκευών κάμερας."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Αυτή η εφαρμογή μπορεί να λαμβάνει επανακλήσεις κατά το άνοιγμα οποιασδήποτε συσκευής κάμερας (από οποιαδήποτε εφαρμογή) ή κατά το κλείσιμο."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"ελέγχει τη δόνηση"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Επιτρέπει στην εφαρμογή τον έλεγχο της δόνησης."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Επιτρέπει στην εφαρμογή να έχει πρόσβαση στην κατάσταση δόνησης."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Έλεγχος τρέχοντος περιεχομένου"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Νέο <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Πατήστε για ρύθμιση"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Για μεταφορά φωτ./πολυμέσων"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Πρόβλημα με <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Πατήστε για επιδιόρθωση"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Το μέσο <xliff:g id="NAME">%s</xliff:g> έχει καταστραφεί. Επιλέξτε να γίνει επιδιόρθωση."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Η κάρτα <xliff:g id="NAME">%s</xliff:g> δεν υποστηρίζεται"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Αυτή η συσκευή δεν υποστηρίζει αυτό το μέσο <xliff:g id="NAME">%s</xliff:g>. Πατήστε για ρύθμιση σε μια υποστηριζόμενη μορφή."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Αυτή η συσκευή δεν υποστηρίζει το μέσο <xliff:g id="NAME">%s</xliff:g>. Επιλέξτε να ρυθμιστεί σε μια υποστηριζόμενη μορφή."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Αυτή η συσκευή δεν υποστηρίζει το <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Μη αναμενόμενη αφαίρεση <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Κάντε εξαγωγή των μέσων πριν τα καταργήσετε, για να μην χάσετε το περιεχόμενό σας"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Το <xliff:g id="NAME">%s</xliff:g> καταργήθηκε"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Αυξάνετε την ένταση ήχου πάνω από το επίπεδο ασφαλείας;\n\nΑν ακούτε μουσική σε υψηλή ένταση για μεγάλο χρονικό διάστημα ενδέχεται να προκληθεί βλάβη στην ακοή σας."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Να χρησιμοποιείται η συντόμευση προσβασιμότητας;"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Όταν η συντόμευση είναι ενεργοποιημένη, το πάτημα και των δύο κουμπιών έντασης ήχου για 3 δευτερόλεπτα θα ξεκινήσει μια λειτουργία προσβασιμότητας."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Θέλετε να ενεργοποιήσετε τις λειτουργίες προσβασιμότητας;"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Για να ενεργοποιήσετε τις λειτουργίες προσβασιμότητας, πατήστε παρατεταμένα τα δύο πλήκτρα έντασης για μερικά δευτερόλεπτα. Αυτό ενδέχεται να αλλάξει τον τρόπο λειτουργίας της συσκευής σας.\n\nΤρέχουσες λειτουργίες:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nΜπορείτε να αλλάξετε τις επιλεγμένες λειτουργίες στις Ρυθμίσεις > Προσβασιμότητα."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Θέλετε να ενεργοποιήσετε το TalkBack;"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Πατώντας παρατεταμένα ταυτόχρονα τα δύο πλήκτρα έντασης ήχου, μπορείτε να ενεργοποιήσετε το TalkBack, έναν αναγνώστη οθόνης σχεδιασμένο για άτομα με χαμηλή όραση. Το TalkBack αλλάζει εντελώς τον τρόπο λειτουργίας της συσκευής σας.\n\nΜπορείτε να αλλάξετε αυτή τη συντόμευση σε μια άλλη λειτουργία στις Ρυθμίσεις > Προσβασιμότητα."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Θέλετε να ενεργοποιήσετε τη λειτουργία <xliff:g id="SERVICE">%1$s</xliff:g>;"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Μπορείτε να ενεργοποιήσετε τη λειτουργία <xliff:g id="SERVICE">%1$s</xliff:g>, η οποία είναι μία από τις λειτουργίες προσβασιμότητας, πατώντας παρατεταμένα ταυτόχρονα τα δύο πλήκτρα έντασης ήχου για μερικά δευτερόλεπτα. Αυτό ενδέχεται να αλλάξει τον τρόπο λειτουργίας της συσκευής σας.\n\nΜπορείτε να αλλάξετε αυτή τη συντόμευση σε μια άλλη λειτουργία στις Ρυθμίσεις > Προσβασιμότητα."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Ενεργοποίηση"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Να μην ενεργοποιηθούν"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Να επιτρέπεται στην υπηρεσία <xliff:g id="SERVICE">%1$s</xliff:g> να έχει τον πλήρη έλεγχο της συσκευής σας;"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Εάν ενεργοποιήσετε την υπηρεσία <xliff:g id="SERVICE">%1$s</xliff:g>, η συσκευή σας δεν θα χρησιμοποιεί το κλείδωμα οθόνης για τη βελτίωση της κρυπτογράφησης δεδομένων."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Ο πλήρης έλεγχος είναι κατάλληλος για εφαρμογές που εξυπηρετούν τις ανάγκες προσβασιμότητάς σας, αλλά όχι για όλες τις εφαρμογές."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Ναι"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Όχι"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Πατήστε μια λειτουργία για να ξεκινήσετε να τη χρησιμοποιείτε:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Επιλέξτε τις λειτουργίες που θέλετε να χρησιμοποιείτε με το κουμπί προσβασιμότητας."</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Επιλέξτε τις λειτουργίες που θέλετε να χρησιμοποιείτε με τη συντόμευση κουμπιού έντασης ήχου"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Η υπηρεσία <xliff:g id="SERVICE_NAME">%s</xliff:g> έχει απενεργοποιηθεί."</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Επεξεργασία συντομεύσεων"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Τέλος"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Χρήση συντόμευσης"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Αντιστροφή χρωμάτων"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Διόρθωση χρωμάτων"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Τα πλήκτρα έντασης είναι πατημένα. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ενεργοποιήθηκε."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Τα πλήκτρα έντασης είναι πατημένα. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> απενεργοποιήθηκε."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Πατήστε παρατεταμένα και τα δύο κουμπιά έντασης ήχου για τρία δευτερόλεπτα, ώστε να χρησιμοποιήσετε την υπηρεσία <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Επιλέξτε μια λειτουργία που θα χρησιμοποιείται κατά το πάτημα του κουμπιού προσβασιμότητας:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Επιλέξτε μια λειτουργία που θα χρησιμοποιείται με την κίνηση προσβασιμότητας (σύρετε με δύο δάχτυλα προς τα επάνω από το κάτω μέρος της οθόνης):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Επιλέξτε μια λειτουργία που θα χρησιμοποιείται με την κίνηση προσβασιμότητας (σύρετε με τρία δάχτυλα προς τα επάνω από το κάτω μέρος της οθόνης):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Για εναλλαγή μεταξύ λειτουργιών, αγγίξτε παρατεταμένα το κουμπί προσβασιμότητας."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Για εναλλαγή μεταξύ λειτουργιών, σύρετε παρατεταμένα με δύο δάχτυλα προς τα επάνω."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Για εναλλαγή μεταξύ λειτουργιών, σύρετε παρατεταμένα με τρία δάχτυλα προς τα επάνω."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Μεγιστοποίηση"</string> <string name="user_switched" msgid="7249833311585228097">"Τρέχων χρήστης <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Εναλλαγή σε <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> αρχεία</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> αρχείο</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Δεν υπάρχουν προτεινόμενα άτομα για κοινοποίηση"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Λίστα εφαρμογών"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Δεν έχει εκχωρηθεί άδεια εγγραφής σε αυτήν την εφαρμογή, αλλά μέσω αυτής της συσκευής USB θα μπορεί να εγγράφει ήχο."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Αρχική οθόνη"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Καμία εφαρμογή εργασιών δεν μπορεί να ανοίξει αυτό το περιεχόμενο."</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Καμία προσωπική εφαρμογή δεν μπορεί να υποστηρίξει αυτό το περιεχόμενο."</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Καμία προσωπική εφαρμογή δεν μπορεί να ανοίξει αυτό το περιεχόμενο."</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Εγγραφή ή αναπαραγωγή ήχου σε τηλεφωνικές κλήσεις"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Επιτρέπει σε αυτήν την εφαρμογή, όταν ορίζεται ως προεπιλεγμένη εφαρμογή κλήσης, να εγγράφει ή να αναπαράγει ήχο σε τηλεφωνικές κλήσεις."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN ξεκλειδώματος δικτύου κάρτας SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN ξεκλειδώματος υποσυνόλου δικτύου κάρτας SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN ξεκλειδώματος εταιρικής SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN ξεκλειδώματος παρόχου υπηρεσιών κάρτας SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN ξεκλειδώματος κάρτας SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Εισαγάγετε τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Εισαγάγετε τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Εισαγάγετε τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Εισαγάγετε τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Εισαγάγετε τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN ξεκλειδώματος RUIM δικτύου 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN ξεκλειδώματος RUIM δικτύου 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN ξεκλειδώματος RUIM hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN ξεκλειδώματος RUIM για εταιρείες"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN ξεκλειδώματος παρόχου υπηρεσιών RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN ξεκλειδώματος RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Εισαγάγετε τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Εισαγάγετε τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Εισαγάγετε τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Εισαγάγετε τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Εισαγάγετε τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Εισαγάγετε τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN ξεκλειδώματος SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN ξεκλειδώματος οικιακού PLMN αντίστοιχου με SP"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN ξεκλειδώματος ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN ξεκλειδώματος IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN ξεκλειδώματος παρόχου υπηρεσιών υποσυνόλου δικτύου"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Υποβολή αιτήματος ξεκλειδώματος δικτύου κάρτας SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Υποβολή αιτήματος ξεκλειδώματος υποσυνόλου δικτύου κάρτας SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Υποβολή αιτήματος ξεκλειδώματος παρόχου υπηρεσιών κάρτας SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Υποβολή αιτήματος ξεκλειδώματος εταιρικής SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Υποβολή αιτήματος ξεκλειδώματος με κωδικό PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Υποβολή αιτήματος ξεκλειδώματος με κωδικό PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Υποβολή αιτήματος ξεκλειδώματος με κωδικό PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Υποβολή αιτήματος ξεκλειδώματος με κωδικό PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Υποβολή αιτήματος ξεκλειδώματος με κωδικό PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Υποβολή αιτήματος ξεκλειδώματος κάρτας SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Υποβολή αιτήματος ξεκλειδώματος RUIM δικτύου 1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Υποβολή αιτήματος ξεκλειδώματος RUIM δικτύου 2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Υποβολή αιτήματος ξεκλειδώματος RUIM hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Υποβολή αιτήματος ξεκλειδώματος παρόχου υπηρεσιών RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Υποβολή αιτήματος ξεκλειδώματος RUIM για εταιρείες…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Υποβολή αιτήματος ξεκλειδώματος SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Υποβολή αιτήματος ξεκλειδώματος οικιακού PLMN αντίστοιχου με SP…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Υποβολή αιτήματος ξεκλειδώματος ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Υποβολή αιτήματος ξεκλειδώματος IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Υποβολή αιτήματος ξεκλειδώματος παρόχου υπηρεσιών υποσυνόλου δικτύου…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Υποβολή αιτήματος ξεκλειδώματος RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Υποβολή αιτήματος ξεκλειδώματος με κωδικό PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Υποβολή αιτήματος ξεκλειδώματος με κωδικό PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Υποβολή αιτήματος ξεκλειδώματος με κωδικό PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Υποβολή αιτήματος ξεκλειδώματος με κωδικό PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Υποβολή αιτήματος ξεκλειδώματος με κωδικό PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Υποβολή αιτήματος ξεκλειδώματος με κωδικό PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Αποτυχία αιτήματος ξεκλειδώματος δικτύου κάρτας SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Αποτυχία αιτήματος ξεκλειδώματος υποσυνόλου δικτύου κάρτας SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Αποτυχία ξεκλειδώματος παρόχου υπηρεσιών κάρτας SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Αποτυχία αιτήματος ξεκλειδώματος εταιρικής SIM."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Αποτυχία αιτήματος ξεκλειδώματος κάρτας SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Αποτυχία αιτήματος ξεκλειδώματος RUIM δικτύου 1."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Αποτυχία αιτήματος ξεκλειδώματος του RUIM δικτύου 2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Αποτυχία αιτήματος ξεκλειδώματος RUIM hrpd."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Αποτυχία αιτήματος ξεκλειδώματος RUIM για εταιρείες."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Αποτυχία ξεκλειδώματος παρόχου υπηρεσιών RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Αποτυχία αιτήματος ξεκλειδώματος RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Αποτυχία ξεκλειδώματος με τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Αποτυχία ξεκλειδώματος με τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Αποτυχία ξεκλειδώματος με τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Αποτυχία ξεκλειδώματος με τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Αποτυχία ξεκλειδώματος με τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Αποτυχία ξεκλειδώματος με τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Αποτυχία ξεκλειδώματος με τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Αποτυχία ξεκλειδώματος με τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Αποτυχία ξεκλειδώματος με τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Αποτυχία ξεκλειδώματος με τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Αποτυχία ξεκλειδώματος με τον κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Αποτυχία αιτήματος ξεκλειδώματος SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Αποτυχία αιτήματος ξεκλειδώματος οικιακού PLMN αντίστοιχου με SP."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Αποτυχία αιτήματος ξεκλειδώματος ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Αποτυχία αιτήματος ξεκλειδώματος IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Αποτυχία αιτήματος ξεκλειδώματος παρόχου υπηρεσιών υποσυνόλου δικτύου."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Επιτυχία ξεκλειδώματος δικτύου κάρτας SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Επιτυχία ξεκλειδώματος υποσυνόλου δικτύου κάρτας SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Επιτυχία ξεκλειδώματος παρόχου υπηρεσιών κάρτας SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Επιτυχία ξεκλειδώματος εταιρικής SIM."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Επιτυχία ξεκλειδώματος κάρτας SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Επιτυχία ξεκλειδώματος RUIM δικτύου 1."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Επιτυχία ξεκλειδώματος RUIM δικτύου 2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Επιτυχία ξεκλειδώματος RUIM Hrpd."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Επιτυχία ξεκλειδώματος παρόχου υπηρεσιών RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Επιτυχία ξεκλειδώματος RUIM για εταιρείες."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Επιτυχία ξεκλειδώματος RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Επιτυχία ξεκλειδώματος με κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Επιτυχία ξεκλειδώματος με κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Επιτυχία ξεκλειδώματος με κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Επιτυχία ξεκλειδώματος με κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Επιτυχία ξεκλειδώματος με κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Επιτυχία ξεκλειδώματος με κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Επιτυχία ξεκλειδώματος με κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Επιτυχία ξεκλειδώματος με κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Επιτυχία ξεκλειδώματος με κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Επιτυχία ξεκλειδώματος με κωδικό PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Επιτυχία ξεκλειδώματος με κωδικό PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Επιτυχία ξεκλειδώματος SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Επιτυχία ξεκλειδώματος οικιακού PLMN αντίστοιχου με SP."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Επιτυχία ξεκλειδώματος ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Επιτυχία ξεκλειδώματος IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Επιτυχία ξεκλειδώματος παρόχου υπηρεσιών υποσυνόλου δικτύου."</string> </resources> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 5aa5d0b0b492..bcaff2ee5153 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Admin relinquished device for personal use"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Device is managed"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Location settings changed by your admin"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Tap to see your location settings."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Apps can access your location"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Contact your IT admin to find out more"</string> <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string> <string name="location_service" msgid="2439187616018455546">"Location Service"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string> <string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Unblock your personal apps"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Apps will be blocked tomorrow"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Your IT admin doesn’t allow your work profile to be paused for more than <xliff:g id="DAYS">%1$d</xliff:g> days"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Turn on work profile"</string> <string name="me" msgid="6207584824693813140">"Me"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet options"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV options"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Phone options"</string> <string name="global_action_lock" msgid="6949357274257655383">"Screen lock"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Power off"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Power"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Restart"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergency"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Bug report"</string> <string name="global_action_logout" msgid="6093581310002476511">"End session"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"access extra location provider commands"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Allows the app to access extra location provider commands. This may allow the app to interfere with the operation of the GPS or other location sources."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"access precise location only in the foreground"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"This app can get your exact location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"This app can get your precise location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location. This may increase battery usage."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"access approximate location only in the foreground"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"This app can get your approximate location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"This app can get your approximate location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"access location in the background"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"This app can access location while running in the background, in addition to foreground location access."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"This app can access location at any time, even while the app is not in use."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"change your audio settings"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Allows the app to modify global audio settings such as volume and which speaker is used for output."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"record audio"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"take pictures and videos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"This app can take pictures and record videos using the camera at any time."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Grant an application or service access to system cameras to take pictures and videos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"This privileged or system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Allow an application or service to receive callbacks about camera devices being opened or closed."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"This app can receive callbacks when any camera device is being opened (by what application) or closed."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"control vibration"</string> @@ -1349,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Reviewing current content"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"New <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Tap to set up"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"For transferring photos and media"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Issue with <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tap to fix"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> is corrupt. Select to fix."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Unsupported <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Tap to set up in a supported format."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Select to set up in a supported format."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> unexpectedly removed"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Eject media before removing to avoid losing content"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> removed"</string> @@ -1623,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for three seconds will start an accessibility feature."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Turn on accessibility features?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Holding down both volume keys for a few seconds turns on accessibility features. This may change how your device works.\n\nCurrent features:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nYou can change selected features in Settings > Accessibility."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Turn on TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Holding down both volume keys for a few seconds turns on TalkBack, a screen reader that is helpful for people who are blind or have low vision. TalkBack completely changes how your device works.\n\nYou can change this shortcut to another feature in Settings > Accessibility."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Turn on <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Holding down both volume keys for a few seconds turns on <xliff:g id="SERVICE">%1$s</xliff:g>, an accessibility feature. This may change how your device works.\n\nYou can change this shortcut to another feature in Settings > Accessibility."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Turn on"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Don’t turn on"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string> @@ -1651,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Allow"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Deny"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tap a feature to start using it:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Choose features to use with the Accessibility button"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Choose features to use with the volume key shortcut"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has been turned off"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit shortcuts"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Done"</string> @@ -1662,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Colour Correction"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Press and hold both volume keys for three seconds to use <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Choose a feature to use when you tap the Accessibility button:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Choose a feature to use with the accessibility gesture (swipe up from the bottom of the screen with two fingers):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Choose a feature to use with the accessibility gesture (swipe up from the bottom of the screen with three fingers):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"To switch between features, touch and hold the Accessibility button."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"To switch between features, swipe up with two fingers and hold."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"To switch between features, swipe up with three fingers and hold."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Magnification"</string> <string name="user_switched" msgid="7249833311585228097">"Current user <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Switching to <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2049,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> files</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> file</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"No recommended people to share with"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Apps list"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"This app has not been granted record permission but could capture audio through this USB device."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Home"</string> @@ -2086,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"No work apps can open this content"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"No personal apps can support this content"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"No personal apps can open this content"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Record or play audio in telephony calls"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Allows this app, when assigned as a default dialler application, to record or play audio in telephony calls."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM network unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM network subset unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM corporate unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM network1 unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM network2 unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM HRPD unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM corporate unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Network subset service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Requesting SIM network unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Requesting SIM network subset unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Requesting SIM service provider unlock…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Requesting SIM corporate unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Requesting SIM unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Requesting RUIM network1 unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Requesting RUIM network2 unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Requesting RUIM HRPD unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Requesting RUIM service provider unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Requesting RUIM corporate unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Requesting SPN unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Requesting SP Equivalent Home PLMN unlock…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Requesting ICCID unlock…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Requesting IMPI unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Requesting network subset service provider unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Requesting RUIM unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM network unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM network subset unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM corporate unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM network1 unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM network2 unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM HRPD unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM corporate unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Network subset service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM network unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM network subset unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM service provider unlock successful ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM corporate unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM network1 unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM network2 unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM HRPD unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM service provider unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM corporate unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Network subset service provider unlock successful."</string> </resources> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index 35f554b050d2..dfd80d440188 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Admin relinquished device for personal use"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Device is managed"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Location settings changed by your admin"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Tap to see your location settings."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Apps can access your location"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Contact your IT admin to find out more"</string> <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string> <string name="location_service" msgid="2439187616018455546">"Location Service"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string> <string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Unblock your personal apps"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Apps will be blocked tomorrow"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Your IT admin doesn’t allow your work profile to be paused for more than <xliff:g id="DAYS">%1$d</xliff:g> days"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Turn on work profile"</string> <string name="me" msgid="6207584824693813140">"Me"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet options"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV options"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Phone options"</string> <string name="global_action_lock" msgid="6949357274257655383">"Screen lock"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Power off"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Power"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Restart"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergency"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Bug report"</string> <string name="global_action_logout" msgid="6093581310002476511">"End session"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"access extra location provider commands"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Allows the app to access extra location provider commands. This may allow the app to interfere with the operation of the GPS or other location sources."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"access precise location only in the foreground"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"This app can get your exact location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"This app can get your precise location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location. This may increase battery usage."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"access approximate location only in the foreground"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"This app can get your approximate location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"This app can get your approximate location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"access location in the background"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"This app can access location while running in the background, in addition to foreground location access."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"This app can access location at any time, even while the app is not in use."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"change your audio settings"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Allows the app to modify global audio settings such as volume and which speaker is used for output."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"record audio"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"take pictures and videos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"This app can take pictures and record videos using the camera at any time."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Grant an application or service access to system cameras to take pictures and videos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"This privileged or system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Allow an application or service to receive callbacks about camera devices being opened or closed."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"This app can receive callbacks when any camera device is being opened (by what application) or closed."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"control vibration"</string> @@ -1349,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Reviewing current content"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"New <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Tap to set up"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"For transferring photos and media"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Issue with <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tap to fix"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> is corrupt. Select to fix."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Unsupported <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Tap to set up in a supported format."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Select to set up in a supported format."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> unexpectedly removed"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Eject media before removing to avoid losing content"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> removed"</string> @@ -1623,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for three seconds will start an accessibility feature."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Turn on accessibility features?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Holding down both volume keys for a few seconds turns on accessibility features. This may change how your device works.\n\nCurrent features:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nYou can change selected features in Settings > Accessibility."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Turn on TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Holding down both volume keys for a few seconds turns on TalkBack, a screen reader that is helpful for people who are blind or have low vision. TalkBack completely changes how your device works.\n\nYou can change this shortcut to another feature in Settings > Accessibility."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Turn on <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Holding down both volume keys for a few seconds turns on <xliff:g id="SERVICE">%1$s</xliff:g>, an accessibility feature. This may change how your device works.\n\nYou can change this shortcut to another feature in Settings > Accessibility."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Turn on"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Don’t turn on"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string> @@ -1651,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Allow"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Deny"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tap a feature to start using it:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Choose features to use with the Accessibility button"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Choose features to use with the volume key shortcut"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has been turned off"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit shortcuts"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Done"</string> @@ -1662,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Colour Correction"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Press and hold both volume keys for three seconds to use <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Choose a feature to use when you tap the Accessibility button:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Choose a feature to use with the accessibility gesture (swipe up from the bottom of the screen with two fingers):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Choose a feature to use with the accessibility gesture (swipe up from the bottom of the screen with three fingers):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"To switch between features, touch and hold the Accessibility button."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"To switch between features, swipe up with two fingers and hold."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"To switch between features, swipe up with three fingers and hold."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Magnification"</string> <string name="user_switched" msgid="7249833311585228097">"Current user <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Switching to <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2049,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> files</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> file</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"No recommended people to share with"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Apps list"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"This app has not been granted record permission but could capture audio through this USB device."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Home"</string> @@ -2086,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"No work apps can open this content"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"No personal apps can support this content"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"No personal apps can open this content"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Record or play audio in telephony calls"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Allows this app, when assigned as a default dialler application, to record or play audio in telephony calls."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM network unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM network subset unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM corporate unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM network1 unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM network2 unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM HRPD unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM corporate unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Network subset service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Requesting SIM network unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Requesting SIM network subset unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Requesting SIM service provider unlock…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Requesting SIM corporate unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Requesting SIM unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Requesting RUIM network1 unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Requesting RUIM network2 unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Requesting RUIM HRPD unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Requesting RUIM service provider unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Requesting RUIM corporate unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Requesting SPN unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Requesting SP Equivalent Home PLMN unlock…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Requesting ICCID unlock…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Requesting IMPI unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Requesting network subset service provider unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Requesting RUIM unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM network unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM network subset unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM corporate unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM network1 unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM network2 unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM HRPD unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM corporate unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Network subset service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM network unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM network subset unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM service provider unlock successful ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM corporate unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM network1 unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM network2 unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM HRPD unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM service provider unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM corporate unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Network subset service provider unlock successful."</string> </resources> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 5aa5d0b0b492..bcaff2ee5153 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Admin relinquished device for personal use"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Device is managed"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Location settings changed by your admin"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Tap to see your location settings."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Apps can access your location"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Contact your IT admin to find out more"</string> <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string> <string name="location_service" msgid="2439187616018455546">"Location Service"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string> <string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Unblock your personal apps"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Apps will be blocked tomorrow"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Your IT admin doesn’t allow your work profile to be paused for more than <xliff:g id="DAYS">%1$d</xliff:g> days"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Turn on work profile"</string> <string name="me" msgid="6207584824693813140">"Me"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet options"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV options"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Phone options"</string> <string name="global_action_lock" msgid="6949357274257655383">"Screen lock"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Power off"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Power"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Restart"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergency"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Bug report"</string> <string name="global_action_logout" msgid="6093581310002476511">"End session"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"access extra location provider commands"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Allows the app to access extra location provider commands. This may allow the app to interfere with the operation of the GPS or other location sources."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"access precise location only in the foreground"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"This app can get your exact location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"This app can get your precise location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location. This may increase battery usage."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"access approximate location only in the foreground"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"This app can get your approximate location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"This app can get your approximate location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"access location in the background"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"This app can access location while running in the background, in addition to foreground location access."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"This app can access location at any time, even while the app is not in use."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"change your audio settings"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Allows the app to modify global audio settings such as volume and which speaker is used for output."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"record audio"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"take pictures and videos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"This app can take pictures and record videos using the camera at any time."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Grant an application or service access to system cameras to take pictures and videos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"This privileged or system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Allow an application or service to receive callbacks about camera devices being opened or closed."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"This app can receive callbacks when any camera device is being opened (by what application) or closed."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"control vibration"</string> @@ -1349,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Reviewing current content"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"New <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Tap to set up"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"For transferring photos and media"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Issue with <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tap to fix"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> is corrupt. Select to fix."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Unsupported <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Tap to set up in a supported format."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Select to set up in a supported format."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> unexpectedly removed"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Eject media before removing to avoid losing content"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> removed"</string> @@ -1623,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for three seconds will start an accessibility feature."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Turn on accessibility features?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Holding down both volume keys for a few seconds turns on accessibility features. This may change how your device works.\n\nCurrent features:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nYou can change selected features in Settings > Accessibility."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Turn on TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Holding down both volume keys for a few seconds turns on TalkBack, a screen reader that is helpful for people who are blind or have low vision. TalkBack completely changes how your device works.\n\nYou can change this shortcut to another feature in Settings > Accessibility."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Turn on <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Holding down both volume keys for a few seconds turns on <xliff:g id="SERVICE">%1$s</xliff:g>, an accessibility feature. This may change how your device works.\n\nYou can change this shortcut to another feature in Settings > Accessibility."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Turn on"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Don’t turn on"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string> @@ -1651,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Allow"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Deny"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tap a feature to start using it:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Choose features to use with the Accessibility button"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Choose features to use with the volume key shortcut"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has been turned off"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit shortcuts"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Done"</string> @@ -1662,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Colour Correction"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Press and hold both volume keys for three seconds to use <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Choose a feature to use when you tap the Accessibility button:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Choose a feature to use with the accessibility gesture (swipe up from the bottom of the screen with two fingers):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Choose a feature to use with the accessibility gesture (swipe up from the bottom of the screen with three fingers):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"To switch between features, touch and hold the Accessibility button."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"To switch between features, swipe up with two fingers and hold."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"To switch between features, swipe up with three fingers and hold."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Magnification"</string> <string name="user_switched" msgid="7249833311585228097">"Current user <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Switching to <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2049,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> files</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> file</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"No recommended people to share with"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Apps list"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"This app has not been granted record permission but could capture audio through this USB device."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Home"</string> @@ -2086,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"No work apps can open this content"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"No personal apps can support this content"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"No personal apps can open this content"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Record or play audio in telephony calls"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Allows this app, when assigned as a default dialler application, to record or play audio in telephony calls."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM network unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM network subset unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM corporate unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM network1 unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM network2 unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM HRPD unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM corporate unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Network subset service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Requesting SIM network unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Requesting SIM network subset unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Requesting SIM service provider unlock…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Requesting SIM corporate unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Requesting SIM unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Requesting RUIM network1 unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Requesting RUIM network2 unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Requesting RUIM HRPD unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Requesting RUIM service provider unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Requesting RUIM corporate unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Requesting SPN unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Requesting SP Equivalent Home PLMN unlock…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Requesting ICCID unlock…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Requesting IMPI unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Requesting network subset service provider unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Requesting RUIM unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM network unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM network subset unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM corporate unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM network1 unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM network2 unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM HRPD unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM corporate unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Network subset service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM network unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM network subset unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM service provider unlock successful ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM corporate unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM network1 unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM network2 unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM HRPD unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM service provider unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM corporate unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Network subset service provider unlock successful."</string> </resources> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 5aa5d0b0b492..bcaff2ee5153 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Admin relinquished device for personal use"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Device is managed"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Location settings changed by your admin"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Tap to see your location settings."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Apps can access your location"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Contact your IT admin to find out more"</string> <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string> <string name="location_service" msgid="2439187616018455546">"Location Service"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string> <string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Unblock your personal apps"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Apps will be blocked tomorrow"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Your IT admin doesn’t allow your work profile to be paused for more than <xliff:g id="DAYS">%1$d</xliff:g> days"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Turn on work profile"</string> <string name="me" msgid="6207584824693813140">"Me"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet options"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV options"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Phone options"</string> <string name="global_action_lock" msgid="6949357274257655383">"Screen lock"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Power off"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Power"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Restart"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergency"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Bug report"</string> <string name="global_action_logout" msgid="6093581310002476511">"End session"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"access extra location provider commands"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Allows the app to access extra location provider commands. This may allow the app to interfere with the operation of the GPS or other location sources."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"access precise location only in the foreground"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"This app can get your exact location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"This app can get your precise location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location. This may increase battery usage."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"access approximate location only in the foreground"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"This app can get your approximate location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"This app can get your approximate location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"access location in the background"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"This app can access location while running in the background, in addition to foreground location access."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"This app can access location at any time, even while the app is not in use."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"change your audio settings"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Allows the app to modify global audio settings such as volume and which speaker is used for output."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"record audio"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"take pictures and videos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"This app can take pictures and record videos using the camera at any time."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Grant an application or service access to system cameras to take pictures and videos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"This privileged or system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Allow an application or service to receive callbacks about camera devices being opened or closed."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"This app can receive callbacks when any camera device is being opened (by what application) or closed."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"control vibration"</string> @@ -1349,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Reviewing current content"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"New <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Tap to set up"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"For transferring photos and media"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Issue with <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tap to fix"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> is corrupt. Select to fix."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Unsupported <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Tap to set up in a supported format."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Select to set up in a supported format."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> unexpectedly removed"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Eject media before removing to avoid losing content"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> removed"</string> @@ -1623,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for three seconds will start an accessibility feature."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Turn on accessibility features?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Holding down both volume keys for a few seconds turns on accessibility features. This may change how your device works.\n\nCurrent features:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nYou can change selected features in Settings > Accessibility."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Turn on TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Holding down both volume keys for a few seconds turns on TalkBack, a screen reader that is helpful for people who are blind or have low vision. TalkBack completely changes how your device works.\n\nYou can change this shortcut to another feature in Settings > Accessibility."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Turn on <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Holding down both volume keys for a few seconds turns on <xliff:g id="SERVICE">%1$s</xliff:g>, an accessibility feature. This may change how your device works.\n\nYou can change this shortcut to another feature in Settings > Accessibility."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Turn on"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Don’t turn on"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string> @@ -1651,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Allow"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Deny"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tap a feature to start using it:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Choose features to use with the Accessibility button"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Choose features to use with the volume key shortcut"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has been turned off"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit shortcuts"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Done"</string> @@ -1662,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Colour Correction"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Press and hold both volume keys for three seconds to use <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Choose a feature to use when you tap the Accessibility button:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Choose a feature to use with the accessibility gesture (swipe up from the bottom of the screen with two fingers):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Choose a feature to use with the accessibility gesture (swipe up from the bottom of the screen with three fingers):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"To switch between features, touch and hold the Accessibility button."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"To switch between features, swipe up with two fingers and hold."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"To switch between features, swipe up with three fingers and hold."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Magnification"</string> <string name="user_switched" msgid="7249833311585228097">"Current user <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Switching to <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2049,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> files</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> file</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"No recommended people to share with"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Apps list"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"This app has not been granted record permission but could capture audio through this USB device."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Home"</string> @@ -2086,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"No work apps can open this content"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"No personal apps can support this content"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"No personal apps can open this content"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Record or play audio in telephony calls"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Allows this app, when assigned as a default dialler application, to record or play audio in telephony calls."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM network unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM network subset unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM corporate unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM network1 unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM network2 unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM HRPD unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM corporate unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM unlock PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Enter PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Enter PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Network subset service provider unlock PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Requesting SIM network unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Requesting SIM network subset unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Requesting SIM service provider unlock…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Requesting SIM corporate unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Requesting SIM unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Requesting RUIM network1 unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Requesting RUIM network2 unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Requesting RUIM HRPD unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Requesting RUIM service provider unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Requesting RUIM corporate unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Requesting SPN unlock…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Requesting SP Equivalent Home PLMN unlock…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Requesting ICCID unlock…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Requesting IMPI unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Requesting network subset service provider unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Requesting RUIM unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Requesting PUK unlock…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM network unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM network subset unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM corporate unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM network1 unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM network2 unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM HRPD unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM corporate unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK unlock unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Network subset service provider unlock request unsuccessful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM network unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM network subset unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM service provider unlock successful ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM corporate unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM network1 unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM network2 unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM HRPD unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM service provider unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM corporate unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI unlock successful."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Network subset service provider unlock successful."</string> </resources> diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml index ec8301370b7e..96a983ed084c 100644 --- a/core/res/res/values-en-rXC/strings.xml +++ b/core/res/res/values-en-rXC/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Admin relinquished device for personal use"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Device is managed"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Your organization manages this device and may monitor network traffic. Tap for details."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Location settings changed by your admin"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Tap to see your location settings."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Apps can access your location"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Contact your IT admin to learn more"</string> <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string> <string name="location_service" msgid="2439187616018455546">"Location Service"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string> <string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organization\'s admin."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Unblock your personal apps"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Apps will be blocked tomorrow"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Your IT admin doesn’t allow your work profile to be paused for more than <xliff:g id="DAYS">%1$d</xliff:g> days"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Turn on work profile"</string> <string name="me" msgid="6207584824693813140">"Me"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet options"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV options"</string> @@ -426,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"access extra location provider commands"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Allows the app to access extra location provider commands. This may allow the app to interfere with the operation of the GPS or other location sources."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"access precise location only in the foreground"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"This app can get your exact location only when it is in the foreground. Location services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"access approximate location only in the foreground"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"This app can get your approximate location only when it is in the foreground. Location services must be turned on and available on your device for the app to be able to use them."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"access location in the background"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"This app can access location while running in the background, in addition to foreground location access."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"This app can access location at any time, even while the app is not in use."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"change your audio settings"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Allows the app to modify global audio settings such as volume and which speaker is used for output."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"record audio"</string> @@ -1346,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Reviewing current content"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"New <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Tap to set up"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"For transferring photos and media"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Issue with <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tap to fix"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> is corrupt. Select to fix."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Unsupported <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Tap to set up in a supported format."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Select to set up in a supported format."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> unexpectedly removed"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Eject media before removing to avoid losing content"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> removed"</string> @@ -2063,8 +2062,6 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"No work apps can open this content"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"No personal apps can support this content"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"No personal apps can open this content"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Record or play audio in telephony calls"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Allows this app, when assigned as default dialer application, to record or play audio in telephony calls."</string> <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM network unlock PIN"</string> <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM network subset unlock PIN"</string> <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM corporate unlock PIN"</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index a84c311768ac..f37ac16a9404 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"El administrador no permite hacer un uso personal del dispositivo"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Dispositivo administrado"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Tu organización administra este dispositivo y es posible que controle el tráfico de red. Presiona para obtener más información."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"El administrador cambió la configuración de la ubicación"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Presiona para ver la configuración de la ubicación."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Las apps pueden acceder a tu ubicación"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Para obtener más información, comunícate con tu administrador de TI"</string> <string name="country_detector" msgid="7023275114706088854">"Detector de país"</string> <string name="location_service" msgid="2439187616018455546">"Servicio de ubicación"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Servicio de notificaciones del sensor"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Se borrarán los datos del dispositivo"</string> <string name="factory_reset_message" msgid="2657049595153992213">"No se puede usar la app de administrador. Ahora se borrará tu dispositivo.\n\nSi tienes preguntas, comunícate con el administrador de tu organización."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> inhabilitó la impresión."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Desbloquea apps personales"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Las apps se bloquearán mañana"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Tu administrador de TI no permite que se pause el perfil de trabajo durante más de <xliff:g id="DAYS">%1$d</xliff:g> días"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Activar perfil de trabajo"</string> <string name="me" msgid="6207584824693813140">"Yo"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opciones de tablet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opciones de Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opciones de dispositivo"</string> <string name="global_action_lock" msgid="6949357274257655383">"Bloqueo de pantalla"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Apagar"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Encendido"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Reiniciar"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergencias"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Informe de errores"</string> <string name="global_action_logout" msgid="6093581310002476511">"Finalizar sesión"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acceder a comandos adicionales del proveedor del lugar"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que la aplicación acceda a comandos adicionales del proveedor de ubicación. Esto puede permitirle a la aplicación interferir con el funcionamiento del GPS o de otras fuentes de ubicación."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"acceder a la ubicación exacta solo en primer plano"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Esta app puede obtener tu ubicación exacta solo cuando está en primer plano. Los servicios de ubicación deben estar activados y disponibles en el dispositivo para que la app pueda usarlos. Es posible que aumente el consumo de batería."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Mientras la usas, esta app puede obtener tu ubicación exacta mediante los Servicios de ubicación, siempre y cuando el dispositivo los tenga activados. Es posible que esto aumente el uso de batería."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acceder a la ubicación aproximada solo en primer plano"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Esta app puede obtener tu ubicación aproximada únicamente cuando está en primer plano. Los servicios de ubicación deben estar activados y disponibles en el dispositivo para que la app pueda usarlos."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Mientras la usas, esta app puede obtener tu ubicación aproximada mediante los Servicios de ubicación, siempre y cuando el dispositivo los tenga activados."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"acceder a la ubicación en segundo plano"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esta app puede acceder a una ubicación mientras se ejecuta en segundo plano, además de proporcionar acceso a la ubicación en primer plano."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esta aplicación puede acceder a la ubicación en cualquier momento, aunque no la estés usando."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"cambiar tu configuración de audio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite que la aplicación modifique la configuración de audio global, por ejemplo, el volumen y el altavoz de salida."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"grabar audio"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"tomar fotografías y grabar videos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Esta app puede tomar fotos y grabar videos con la cámara en cualquier momento."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que una aplicación o un servicio accedan a las cámaras del sistema para tomar fotos y grabar videos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Esta app con privilegios o del sistema puede tomar fotografías y grabar videos con una cámara del sistema en cualquier momento. También se requiere que la app posea el permiso android.permission.CAMERA."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permite que una aplicación o un servicio reciba devoluciones de llamada cuando se abren o cierran dispositivos de cámara."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Esta app puede recibir devoluciones de llamada cuando se cierra o se abre cualquier dispositivo de cámara (y qué aplicación lo hace)."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"controlar la vibración"</string> @@ -1349,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Revisando el contenido actual"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nuevo dispositivo: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Presiona para configurar"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Para transferir fotos y contenido multimedia"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problema con <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Presiona para solucionar el problema"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> se dañó. Selecciona el medio para solucionar el problema."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> no es compatible"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"El dispositivo no es compatible con <xliff:g id="NAME">%s</xliff:g>. Presiona la pantalla para configurarlo en un formato compatible."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Este dispositivo no es compatible con: <xliff:g id="NAME">%s</xliff:g>. Selecciona para configurar el medio en un formato compatible."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Este dispositivo no es compatible con <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Se extrajo <xliff:g id="NAME">%s</xliff:g> de forma inesperada."</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Expulsa los dispositivos multimedia antes de extraerlos para evitar la pérdida de contenido"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Se quitó <xliff:g id="NAME">%s</xliff:g>"</string> @@ -1623,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"¿Quieres subir el volumen por encima del nivel recomendado?\n\nEscuchar a un alto volumen durante largos períodos puede dañar tu audición."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"¿Usar acceso directo de accesibilidad?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Cuando la combinación de teclas está activada, puedes presionar los botones de volumen durante 3 segundos para iniciar una función de accesibilidad."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"¿Quieres activar las funciones de accesibilidad?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Si mantienes presionadas ambas teclas de volumen durante unos segundos, se activan las funciones de accesibilidad. Esto podría cambiar la manera en que funciona tu dispositivo.\n\nFunciones actuales:\n<xliff:g id="SERVICE">%1$s</xliff:g>\npuedes cambiar las funciones seleccionadas en Configuración > Accesibilidad."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Cómo activar TalkBack"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Si mantienes presionadas ambas teclas de volumen durante unos segundos, se activa TalkBack, un lector de pantalla que ayuda a las personas ciegas o con visión reducida. TalkBack cambia por completo la manera en que funciona tu dispositivo.\n\nPuedes cambiar este acceso directo a otra función en Configuración > Accesibilidad."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Cómo activar <xliff:g id="SERVICE">%1$s</xliff:g>"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Si mantienes presionadas ambas teclas de volumen durante unos segundos, se activa <xliff:g id="SERVICE">%1$s</xliff:g>, un función de accesibilidad. Esto podría cambiar la forma en que funciona tu dispositivo.\n\nPuedes cambiar este acceso directo a otra función en Configuración > Accesibilidad."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activar"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"No activar"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"¿Deseas permitir que <xliff:g id="SERVICE">%1$s</xliff:g> tenga el control total del dispositivo?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si activas <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositivo no utilizará el bloqueo de pantalla para mejorar la encriptación de datos."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total es apropiado para las apps que te ayudan con las necesidades de accesibilidad, pero no para la mayoría de las apps."</string> @@ -1651,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Rechazar"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Presiona una función para comenzar a usarla:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Selecciona las funciones a utilizar con el botón de accesibilidad"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Selecciona las funciones a utilizar con el acceso directo de la tecla de volumen"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Se desactivó <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar accesos directos"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Listo"</string> @@ -1662,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar acceso directo"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de color"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corrección de color"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Mantuviste presionadas las teclas de volumen. Se activó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Mantuviste presionadas las teclas de volumen. Se desactivó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Mantén presionadas ambas teclas de volumen durante tres segundos para usar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Elige una función para usar cuando pulses el botón accesibilidad:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Elige la función que se usará cuando realices el gesto de accesibilidad (deslizar dos dedos hacia arriba desde la parte inferior de la pantalla):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Elige la función que se usará cuando realices el gesto de accesibilidad (deslizar tres dedos hacia arriba desde la parte inferior de la pantalla):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Para cambiar entre funciones, mantén pulsado el botón de accesibilidad."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Para cambiar de función, desliza dos dedos hacia arriba y mantenlos pulsados sobre la pantalla."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Para cambiar de función, desliza tres dedos hacia arriba y mantenlos pulsados sobre la pantalla."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliación"</string> <string name="user_switched" msgid="7249833311585228097">"Usuario actual: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Cambiando a <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2049,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> y <xliff:g id="COUNT_3">%d</xliff:g> archivos más</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> y <xliff:g id="COUNT_1">%d</xliff:g> archivo más</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"No hay personas recomendadas para compartir"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lista de apps"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Aunque no se le otorgó permiso de grabación a esta app, puede capturar audio con este dispositivo USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Página principal"</string> @@ -2072,249 +2048,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"Trabajo"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Vista personal"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Vista de trabajo"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"No se puede compartir con las apps de trabajo"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"Tu administrador de TI no te permite compartir este contenido con apps de tu perfil de trabajo"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"No se puede abrir con apps de trabajo"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"Tu administrador de TI no te permite abrir este contenido con apps de tu perfil de trabajo"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"No se puede compartir con las apps personales"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"Tu administrador de TI no te permite compartir este contenido con apps de tu perfil personal"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"No se puede abrir con apps personales"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"Tu administrador de TI no te permite abrir este contenido con apps de tu perfil personal"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"El perfil de trabajo está en pausa"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"Activar"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Graba o reproduce audio en llamadas de telefonía"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permite que esta app grabe o reproduzca audio en llamadas de telefonía cuando se la asigna como aplicación de teléfono predeterminada."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"Las apps de trabajo no pueden admitir este contenido"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Las apps de trabajo no pueden abrir este contenido"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Las apps personales no pueden admitir este contenido"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Las apps personales no pueden abrir este contenido"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN de desbloqueo de red de tarjeta SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN de desbloqueo de subconjunto de redes de tarjeta SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN de desbloqueo corporativo de tarjeta SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN de desbloqueo de proveedor de servicios de tarjeta SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN de desbloqueo de tarjeta SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Ingresar PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Ingresar PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Ingresar PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Ingresar PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Ingresar PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN de desbloqueo de red1 de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN de desbloqueo del RUIM de network2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN de desbloqueo de HRPD de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN de desbloqueo corporativo de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN de desbloqueo de proveedor de servicios de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN de desbloqueo de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Ingresar PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Ingresar PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Ingresar PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Ingresar PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Ingresar PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Ingresar PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN de desbloqueo de SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN de desbloqueo de PLMN del SP equivalente a la de hogar"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN de desbloqueo de ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN de desbloqueo de IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN de desbloqueo de proveedor de servicios de subconjunto de redes"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Solicitando desbloqueo de red de tarjeta SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Solicitando desbloqueo de subconjunto de redes de tarjeta SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Solicitando desbloqueo de proveedor de servicios de tarjeta SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Solicitando desbloqueo corporativo de tarjeta SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Solicitando desbloqueo de PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Solicitando desbloqueo de PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Solicitando desbloqueo de PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Solicitando desbloqueo de PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Solicitando desbloqueo de PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Solicitando desbloqueo de tarjeta SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Solicitando desbloqueo de red1 de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Solicitando desbloqueo de red2 de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Solicitando desbloqueo de HRPD de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Solicitando desbloqueo de proveedor de servicios de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Solicitando desbloqueo corporativo de RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Solicitando desbloqueo de SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Solicitando desbloqueo de PLMN del SP equivalente a la de hogar…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Solicitando desbloqueo de ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Solicitando desbloqueo de IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Solicitando desbloqueo de proveedor de servicios de subconjunto de redes…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Solicitando desbloqueo de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Solicitando desbloqueo de PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Solicitando desbloqueo de PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Solicitando desbloqueo de PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Solicitando desbloqueo de PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Solicitando desbloqueo de PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Solicitando desbloqueo de PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Se produjo un error al solicitar el desbloqueo de red de tarjeta SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Se produjo un error al solicitar el desbloqueo de subconjunto de redes de tarjeta SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Se produjo un error al solicitar el desbloqueo de proveedor de servicios de tarjeta SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Solicitud de desbloqueo corporativo de tarjeta SIM incorrecta."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Solicitud de desbloqueo de tarjeta SIM incorrecta."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Se produjo un error al solicitar el desbloqueo de red1 de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Se produjo un error al desbloquear el RUIM de Network2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Se produjo un error al solicitar el desbloqueo de HRPD de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Se produjo un error al solicitar el desbloqueo corporativo de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Se produjo un error al solicitar el desbloqueo del proveedor de servicios de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Se produjo un error al desbloquear el RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Se produjo un error al desbloquear el PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Se produjo un error al desbloquear el PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Se produjo un error al desbloquear el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Se produjo un error al desbloquear el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Se produjo un error al desbloquear el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Se produjo un error al desbloquear el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Se produjo un error al desbloquear el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Se produjo un error al desbloquear el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Se produjo un error al desbloquear el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Se produjo un error al desbloquear el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Se produjo un error al desbloquear el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Se produjo un error al solicitar el desbloqueo de SPN incorrecta."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Se produjo un error al solicitar el desbloqueo de PLMN del SP equivalente a la de hogar."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Se produjo un error al solicitar el desbloqueo de ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Se produjo un error al desbloquear el IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Se produjo error al solicitar el desbloqueo de proveedor de servicios de subconjunto de redes."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Se desbloqueó correctamente la red de la SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Se desbloqueó correctamente el subconjunto de redes de tarjeta SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Se desbloqueó correctamente el proveedor de servicios de tarjeta SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Desbloqueo corporativo de tarjeta SIM correcto."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Desbloqueo de tarjeta SIM correcto."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Se desbloqueó correctamente el RUIM de Network1."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Se desbloqueó correctamente el RUIM de Network 2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Se produjo un error al desbloquear el HRPD de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Se desbloqueó correctamente el proveedor de servicios de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Se desbloqueó correctamente el RUIM corporativo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Se desbloqueó correctamente el RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Se desbloqueó correctamente el PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Se desbloqueó correctamente el PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Se desbloqueó correctamente el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Se desbloqueó correctamente el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Se desbloqueó correctamente el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Se desbloqueó correctamente el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Se desbloqueó correctamente el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Se desbloqueó correctamente el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Se desbloqueó correctamente el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Se desbloqueó correctamente el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Se desbloqueó correctamente el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Desbloqueo de SPN correcto."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Se desbloqueó correctamente el PLMN del SP equivalente a la de hogar."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Se desbloqueó correctamente el ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Se desbloqueó correctamente el IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Se desbloqueó correctamente el proveedor de servicios de subconjunto de redes."</string> </resources> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index ac0152777802..d4dafdf22056 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"El administrador no permite hacer un uso personal del dispositivo"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"El dispositivo está administrado"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Tu organización administra este dispositivo y puede supervisar el tráfico de red. Toca la notificación para obtener más información."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Tu administrador ha cambiado los ajustes de ubicación"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Toca para ver tus ajustes de ubicación."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Las aplicaciones pueden acceder a tu ubicación"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Para obtener más información, ponte en contacto con tu administrador de TI"</string> <string name="country_detector" msgid="7023275114706088854">"Detector de país"</string> <string name="location_service" msgid="2439187616018455546">"Servicio de ubicación"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Servicio de notificación de sensor"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Tu dispositivo se borrará"</string> <string name="factory_reset_message" msgid="2657049595153992213">"No se puede utilizar la aplicación de administración. Se borrarán todos los datos del dispositivo.\n\nSi tienes alguna pregunta, ponte en contacto con el administrador de tu organización."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ha inhabilitado la impresión."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Desbloquear apps personales"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Las apps se bloquearán mañana"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Tu administrador de TI no te permite pausar el perfil de trabajo durante más de <xliff:g id="DAYS">%1$d</xliff:g> días"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Activar perfil de trabajo"</string> <string name="me" msgid="6207584824693813140">"Yo"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opciones del tablet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opciones de Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opciones del teléfono"</string> <string name="global_action_lock" msgid="6949357274257655383">"Bloqueo de pantalla"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Apagar"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Encender o apagar"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Reiniciar"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergencia"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Informe de error"</string> <string name="global_action_logout" msgid="6093581310002476511">"Finalizar sesión"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acceder a comandos de proveedor de ubicación adicional"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que la aplicación acceda a otros comandos del proveedor de ubicación. De esta forma, la aplicación podrá interferir en el funcionamiento del GPS o de otras fuentes de ubicación."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"acceder a la ubicación exacta solo en primer plano"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Esta aplicación solo puede obtener tu ubicación exacta cuando está en primer plano. Los servicios de ubicación deben estar activados y disponibles en tu dispositivo para que la aplicación pueda utilizarlos. Es posible que aumente el consumo de batería."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Mientras la utilizas, esta aplicación puede obtener tu ubicación exacta mediante servicios de ubicación, siempre que el dispositivo los tenga activados. Es posible que esto aumente el consumo de batería."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acceder a la ubicación aproximada solo al estar en primer plano"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Esta aplicación puede obtener tu ubicación aproximada solo cuando está en primer plano. Para que la aplicación pueda utilizar los servicios de ubicación, deben estar activados y disponibles en tu dispositivo."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Mientras la utilizas, esta aplicación puede obtener tu ubicación aproximada mediante servicios de ubicación, siempre que el dispositivo los tenga activados."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"acceder a la ubicación en segundo plano"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esta aplicación puede acceder a la ubicación tanto cuando se ejecuta en segundo plano como cuando está en primer plano."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esta aplicación puede acceder a la ubicación en cualquier momento, aunque no la estés utilizando."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"cambiar la configuración de audio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite que la aplicación modifique la configuración de audio global (por ejemplo, el volumen y el altavoz de salida)."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"grabar sonido"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"realizar fotografías y vídeos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Esta aplicación puede hacer fotografías y grabar vídeos con la cámara en cualquier momento."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que una aplicación o servicio acceda a las cámaras del sistema para hacer fotos y vídeos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Esta aplicación del sistema o con privilegios puede hacer fotos y grabar vídeos en cualquier momento con una cámara del sistema, aunque debe tener también el permiso android.permission.CAMERA para hacerlo"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permitir que una aplicación o servicio reciba retrollamadas cada vez que se abra o cierre una cámara."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Esta aplicación puede recibir retrollamadas cuando se abre o se cierra la cámara con cualquier aplicación."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"controlar la vibración"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Permite que la aplicación controle la función de vibración."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite que la aplicación acceda al ajuste de vibración."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Revisando el contenido actual"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nueva unidad: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Toca para configurar"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Para transferir fotos y multimedia"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problema con <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Toca para solucionar el problema"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> está dañada. Selecciónala para arreglarla."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Medio externo (<xliff:g id="NAME">%s</xliff:g>) no admitido"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"El dispositivo no admite este medio externo (<xliff:g id="NAME">%s</xliff:g>). Toca para configurarlo con un formato admitido."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"El dispositivo no admite esta <xliff:g id="NAME">%s</xliff:g>. Selecciónala para configurarla en un formato admitido."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"El dispositivo no admite este medio externo (<xliff:g id="NAME">%s</xliff:g>)."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Extracción inesperada de <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Extrae el dispositivo de forma segura antes de sacarlo para evitar perder contenido"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> se ha extraído"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"¿Quieres subir el volumen por encima del nivel recomendado?\n\nEscuchar sonidos fuertes durante mucho tiempo puede dañar los oídos."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"¿Utilizar acceso directo de accesibilidad?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Si el acceso directo está activado, pulsa los dos botones de volumen durante 3 segundos para iniciar una función de accesibilidad."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"¿Quieres activar las funciones de accesibilidad?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Al mantener pulsadas ambas teclas de volumen durante unos segundos, se activan las funciones de accesibilidad, que pueden cambiar el funcionamiento del dispositivo.\n\nFunciones actuales:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nPuedes cambiar las funciones seleccionadas en Ajustes > Accesibilidad."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"¿Quieres activar TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Al mantener pulsadas ambas teclas de volumen durante unos segundos se activa TalkBack, un lector de pantalla que ayuda a las personas invidentes o con visión reducida. TalkBack modifica completamente el funcionamiento del dispositivo.\n\nPuedes asignar este acceso directo a otra función en Ajustes > Accesibilidad."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"¿Quieres activar <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Al mantener pulsadas ambas teclas de volumen durante unos segundos se activa <xliff:g id="SERVICE">%1$s</xliff:g>, una función de accesibilidad. Esta función puede modificar el funcionamiento del dispositivo.\n\nPuedes asignar este acceso directo a otra función en Ajustes > Accesibilidad."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activar"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"No activar"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"¿Quieres permitir que <xliff:g id="SERVICE">%1$s</xliff:g> pueda controlar totalmente tu dispositivo?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si activas <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositivo no utilizará el bloqueo de pantalla para mejorar el cifrado de datos."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total es adecuado para las aplicaciones de accesibilidad, pero no para la mayoría de las aplicaciones."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Denegar"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toca una función para empezar a usarla:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Seleccionar qué funciones usar con el botón Accesibilidad"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Seleccionar qué funciones usar con la tecla de volumen"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Se ha desactivado <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar accesos directos"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Listo"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar acceso directo"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de color"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corrección de color"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Al mantener pulsadas las teclas de volumen, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> se ha activado."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Al mantener pulsadas las teclas de volumen, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> se ha desactivado."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Para utilizar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, mantén pulsadas ambas teclas de volumen durante 3 segundos"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Selecciona la función que se utilizará cuando toques el botón Accesibilidad:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Elige la función que se utilizará con el gesto de accesibilidad (deslizar dos dedos hacia arriba desde la parte inferior de la pantalla):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Elige la función que se utilizará con el gesto de accesibilidad (deslizar tres dedos hacia arriba desde la parte inferior de la pantalla):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Para cambiar de una función a otra, mantén pulsado el botón Accesibilidad."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Para cambiar de una función a otra, desliza dos dedos hacia arriba y mantén pulsada la pantalla."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Para cambiar de una función a otra, desliza tres dedos hacia arriba y mantén pulsada la pantalla."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliar"</string> <string name="user_switched" msgid="7249833311585228097">"Usuario actual: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Cambiando a <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> y <xliff:g id="COUNT_3">%d</xliff:g> archivos</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> y <xliff:g id="COUNT_1">%d</xliff:g> archivo</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"No hay personas recomendadas con las que compartir"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lista de aplicaciones"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Esta aplicación no tiene permiso para grabar, pero podría registrar audio con este dispositivo USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Inicio"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Ninguna aplicación de trabajo puede abrir este contenido"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Ninguna aplicación personal es compatible con este contenido"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Ninguna aplicación personal puede abrir este contenido"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Grabar o reproducir audio en llamadas telefónicas"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permite que la aplicación grabe o reproduzca audio en las llamadas telefónicas si está asignada como aplicación Teléfono predeterminada."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN de desbloqueo de red de tarjeta SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN de desbloqueo de subconjunto de red SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN de desbloqueo corporativo de SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN de desbloqueo del proveedor de servicios de SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN de desbloqueo de SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Introducir PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Introducir PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Introducir PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Introducir PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Introducir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN de desbloqueo de red1 de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN de desbloqueo de red2 de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN de desbloqueo HRPD de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN de desbloqueo corporativo de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN de desbloqueo del proveedor de servicios de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN de desbloqueo de RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Introducir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Introducir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Introducir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Introducir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Introducir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Introducir PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN de desbloqueo del SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN de desbloqueo de EHPLMN del SP"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN de desbloqueo de ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN de desbloqueo de IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN de desbloqueo del proveedor de servicios de subconjunto de red"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Solicitando desbloqueo de red SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Solicitando desbloqueo de subconjunto de red SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Solicitando desbloqueo del proveedor de servicios de SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Solicitando desbloqueo corporativo de SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Solicitando desbloqueo de SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Solicitando desbloqueo de red1 de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Solicitando desbloqueo de red2 de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Solicitando desbloqueo HRPD de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Solicitando desbloqueo del proveedor de servicios de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Solicitando desbloqueo corporativo de RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Solicitando desbloqueo del SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Solicitando desbloqueo de EHPLMN del SP…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Solicitando desbloqueo de ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Solicitando desbloqueo de IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Solicitando desbloqueo del proveedor de servicios de subconjunto de red…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Solicitando desbloqueo de RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"No se ha podido realizar el desbloqueo de red SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"La solicitud de desbloqueo de subconjunto de red SIM no se ha realizado correctamente."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"No se ha podido desbloquear el proveedor de servicios de SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"No se ha podido realizar el desbloqueo corporativo de SIM."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"No se ha podido desbloquear la SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"No se ha podido desbloquear la red1 de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"No se ha podido desbloquear la red2 de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"No se ha podido realizar el desbloqueo HRPD de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"La solicitud de desbloqueo corporativo de RUIM no se ha realizado correctamente."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"No se ha podido desbloquear el proveedor de servicios de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"No se ha podido realizar el desbloqueo de RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"No se ha podido desbloquear con el PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"No se ha podido desbloquear con el PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"No se ha podido desbloquear con el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"No se ha podido desbloquear con el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"No se ha podido desbloquear con el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"No se ha podido desbloquear con el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"No se ha podido desbloquear con el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"No se ha podido desbloquear con el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"No se ha podido desbloquear con el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"No se ha podido desbloquear con el PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"No se ha podido desbloquear con el PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"No se ha podido desbloquear el SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"No se ha podido desbloquear el EHPLMN del SP."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"No se ha podido realizar el desbloqueo de ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"No se ha podido realizar el desbloqueo de IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"No se ha podido desbloquear el proveedor de servicios de subconjunto de red."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Desbloqueo de red SIM correcto."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Desbloqueo de subconjunto de red SIM correcto."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Desbloqueo del proveedor de servicios de SIM correcto."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Desbloqueo corporativo de SIM correcto."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Desbloqueo de SIM correcto."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Desbloqueo de red1 de RUIM correcto."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Desbloqueo de red2 de RUIM correcto."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Desbloqueo HRPD de RUIM correcto."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Desbloqueo correcto del proveedor de servicios de RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Desbloqueo corporativo de RUIM correcto."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Desbloqueo de RUIM correcto."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Desbloqueo con PUK correcto."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Desbloqueo con PUK correcto."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Desbloqueo con PUK correcto."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Desbloqueo con PUK correcto."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Desbloqueo con PUK correcto."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Desbloqueo con PUK correcto."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Desbloqueo con PUK correcto."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Desbloqueo con PUK correcto."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Desbloqueo con PUK correcto."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Desbloqueo con PUK correcto."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Desbloqueo con PUK correcto."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Desbloqueo del SPN correcto."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Desbloqueo de EHPLMN del SP correcto."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Desbloqueo de ICCID correcto."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Desbloqueo de IMPI correcto."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Desbloqueo del proveedor de servicios de subconjunto de red correcto."</string> </resources> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 3af3c9be181f..26d918775609 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administraator keelas seadme isikliku kasutamise"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Seade on hallatud"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Teie organisatsioon haldab seda seadet ja võib jälgida võrguliiklust. Puudutage üksikasjade vaatamiseks."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Administraator muutis teie asukohaseadeid"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Puudutage oma asukohaseadete nägemiseks."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Rakendused pääsevad teie asukohale juurde"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Lisateabe saamiseks võtke ühendust IT-administraatoriga"</string> <string name="country_detector" msgid="7023275114706088854">"Riigi tuvastaja"</string> <string name="location_service" msgid="2439187616018455546">"Asukohateenus"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Anduri märguande teenus"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Seade kustutatakse"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Administraatori rakendust ei saa kasutada. Teie seade tühjendatakse nüüd.\n\nKui teil on küsimusi, võtke ühendust organisatsiooni administraatoriga."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Rakendus <xliff:g id="OWNER_APP">%s</xliff:g> on printimise keelanud."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Isiklike rakenduste deblokeerimine"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Rakendused blokeeritakse homme"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Teie IT-administraator lubab teie tööprofiili peatada vaid kuni <xliff:g id="DAYS">%1$d</xliff:g> päevaks"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Lülita tööprofiil sisse"</string> <string name="me" msgid="6207584824693813140">"Mina"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tahvelarvuti valikud"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV valikud"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Telefonivalikud"</string> <string name="global_action_lock" msgid="6949357274257655383">"Ekraanilukk"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Lülita välja"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Toide"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Taaskäivita"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Hädaabi"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Veaaruanne"</string> <string name="global_action_logout" msgid="6093581310002476511">"Seansi lõpp"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"juurdepääs asukohapakkuja lisakäskudele"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Võimaldab rakendusel juurde pääseda asukohapakkuja erikäskudele. See võib lubada rakendusel mõjutada GPS-i või muude asukohaallikate tööd."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"juurdepääs täpsele asukohale ainult esiplaanil"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"See rakendus hangib teie täpse asukoha ainult siis, kui see töötab esiplaanil. Asukohateenused peavad olema sisse lülitatud ja teie seadmes saadaval, et rakendus saaks neid kasutada. See võib suurendada akutoite tarbimist."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"See rakendus saab rakenduse kasutamise ajal asukohateenuste kaudu teada teie täpse asukoha. Selleks et rakendus saaks asukohateavet, peavad asukohateenused olema seadmes sisse lülitatud. See võib suurendada akukasutust."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"juurdepääs ligikaudsele asukohale ainult esiplaanil"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"See rakendus hangib teie ligikaudse asukoha ainult siis, kui see töötab esiplaanil. Asukohateenused peavad olema sisse lülitatud ja teie seadmes saadaval, et rakendus saaks neid kasutada."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"See rakendus saab rakenduse kasutamise ajal asukohateenuste kaudu teada teie ligikaudse asukoha. Selleks et rakendus saaks asukohateavet, peavad asukohateenused olema seadmes sisse lülitatud."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"juurdepääs asukohale taustal"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"See rakendus pääseb asukohale lisaks esiplaanil töötamise ajal juurde ka taustal töötamise ajal."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"See rakendus pääseb alati asukohateabele juurde (ka siis, kui te rakendust ei kasuta)."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"muuda heliseadeid"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Võimaldab rakendusel muuta üldiseid heliseadeid, näiteks helitugevust ja seda, millist kõlarit kasutatakse väljundiks."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"salvesta heli"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"piltide ja videote tegemine"</string> <string name="permdesc_camera" msgid="1354600178048761499">"See rakendus saab mis tahes ajal kaameraga pildistada ja videoid salvestada."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Rakendusel või teenusel lubatakse süsteemi kaameratele juurde pääseda, et pilte ja videoid jäädvustada"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"See privileegidega või süsteemirakendus saab süsteemi kaameraga alati pilte ja videoid jäädvustada. Rakendusel peab olema ka luba android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Lubab rakendusel või teenusel kaameraseadmete avamise või sulgemise kohta tagasikutseid vastu võtta."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"See rakendus saab mis tahes kaameraseadme avamisel (vastava rakendusega) või sulgemisel tagasikutseid vastu võtta."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"juhtige vibreerimist"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Võimaldab rakendusel juhtida vibreerimist."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Võimaldab rakendusel juurde pääseda vibreerimise olekule."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Kontrollitakse praegust sisu"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Uus üksus <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Puudutage seadistamiseks"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Fotode ja meedia ülekandmiseks"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Probleem üksusega <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Puudutage parandamiseks"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Kaart <xliff:g id="NAME">%s</xliff:g> on rikutud. Valige parandamiseks."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Toetamata <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"See seade ei toeta üksust <xliff:g id="NAME">%s</xliff:g>. Puudutage toetatud vormingus seadistamiseks."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"See seade ei toeta kaarti <xliff:g id="NAME">%s</xliff:g>. Valige toetatud vormingus seadistamiseks."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"See seade ei toeta üksust <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Üksus <xliff:g id="NAME">%s</xliff:g> eemaldati ootamatult"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Enne eemaldamist väljutage meedia, et vältida sisu kaotsiminekut"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> on eemaldatud"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Kas suurendada helitugevuse taset üle soovitatud taseme?\n\nPikaajaline valju helitugevusega kuulamine võib kuulmist kahjustada."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Kas kasutada juurdepääsetavuse otseteed?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kui otsetee on sisse lülitatud, käivitab mõlema helitugevuse nupu kolm sekundit all hoidmine juurdepääsetavuse funktsiooni."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Kas lülitada juurdepääsufunktsioonid sisse?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Hoidke mõlemat helitugevuse nuppu mõni sekund all, et juurdepääsufunktsioonid sisse lülitada. See võib teie seadme tööviisi muuta.\n\nPraegused funktsioonid:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nValitud funktsioone saab muuta jaotises Seaded > Juurdepääsetavus."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Kas lülitada TalkBack sisse?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Kui hoiate mõlemat helitugevuse nuppu mõni sekund all, lülitatakse sisse TalkBack, ekraanilugeja, mis on abiks pimedatele ja vaegnägijatele. TalkBack muudab teie seadme tööviisi täielikult.\n\nJaotises Seaded > Juurdepääsetavus saate sellele otseteele määrata muu funktsiooni."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Kas lülitada <xliff:g id="SERVICE">%1$s</xliff:g> sisse?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Kui hoiate mõlemat helitugevuse nuppu mõni sekund all, lülitatakse sisse juurdepääsufunktsioon <xliff:g id="SERVICE">%1$s</xliff:g>. See võib teie seadme tööviisi muuta.\n\nSelle otsetee saab asendada muu otseteega jaotises Seaded > Juurdepääsetavus."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Lülita sisse"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ära lülita sisse"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Kas anda teenusele <xliff:g id="SERVICE">%1$s</xliff:g> teie seadme üle täielik kontroll?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Kui lülitate sisse teenuse <xliff:g id="SERVICE">%1$s</xliff:g>, ei kasuta seade andmete krüpteerimise täiustamiseks ekraanilukku."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Täielik haldusõigus sobib rakendustele, mis pakuvad juurdepääsufunktsioone. Enamiku rakenduste puhul seda ei soovitata."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Luba"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Keela"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Puudutage funktsiooni, et selle kasutamist alustada."</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Valige funktsioonid, mida juurdepääsetavuse nupuga kasutada"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Valige funktsioonid, mida helitugevuse nupu otseteega kasutada"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> on välja lülitatud"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Muuda otseteid"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Valmis"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Kasuta otseteed"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Värvide ümberpööramine"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Värviparandus"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Helitugevuse nuppe hoiti all. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> lülitati sisse."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Helitugevuse nuppe hoiti all. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> lülitati välja."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Teenuse <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kasutamiseks hoidke kolm sekundit all mõlemat helitugevuse klahvi"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Valige, millist funktsiooni kasutada, kui vajutate juurdepääsetavuse nuppu:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Valige, millist funktsiooni juurdepääsetavuse liigutusega (kahe sõrmega ekraanikuval alt üles pühkimine) kasutada:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Valige, millist funktsiooni juurdepääsetavuse liigutusega (kolme sõrmega ekraanikuval alt üles pühkimine) kasutada:"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Funktsioonide vahel vahetamiseks vajutage pikalt juurdepääsetavuse nuppu."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Funktsioonide vahel vahetamiseks pühkige kahe sõrmega üles ja hoidke."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Funktsioonide vahel vahetamiseks pühkige kolme sõrmega üles ja hoidke."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Suurendus"</string> <string name="user_switched" msgid="7249833311585228097">"Praegune kasutaja <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Üleminek kasutajale <xliff:g id="NAME">%1$s</xliff:g> ..."</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> faili</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> fail</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Ei ole ühtki soovitatud inimest, kellega jagada"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Rakenduste loend"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Sellele rakendusele pole antud salvestamise luba, kuid see saab heli jäädvustada selle USB-seadme kaudu."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Avakuva"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Seda sisu ei saa töörakendustega avada"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Isiklikud rakendused ei toeta seda sisu"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Seda sisu ei saa isiklike rakendustega avada"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Telefonikõnede heli salvestamine ja esitamine"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Kui see rakendus on määratud helistamise vaikerakenduseks, lubatakse sellel salvestada ja esitada telefonikõnede heli."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM-kaardi võrgu avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM-kaardi võrgu alamhulga avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM-kaardi ettevõtte avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM-kaardi teenusepakkuja avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM-kaardi avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Sisestage PUK-kood"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Sisestage PUK-kood"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Sisestage PUK-kood"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Sisestage PUK-kood"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Sisestage PUK-kood"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM-i 1. võrgu avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM-i 2. võrgu avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM-i HRPD avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM-i ettevõtte avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM-i teenusepakkuja avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM-i avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Sisestage PUK-kood"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Sisestage PUK-kood"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Sisestage PUK-kood"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Sisestage PUK-kood"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Sisestage PUK-kood"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Sisestage PUK-kood"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN-i avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP koduse võrdväärse PLMN-i avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Võrgu alamhulga teenusepakkuja avamise PIN-kood"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM-kaardi võrgu avamine …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM-kaardi võrgu alamhulga avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM-kaardi teenusepakkuja avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"SIM-kaardi ettevõtte avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK-koodi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK-koodi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK-koodi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK-koodi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK-koodi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM-kaardi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM-i 1. võrgu avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM-i 2. võrgu avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM-i HRPD avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM-i teenusepakkuja avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM-i ettevõtte avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN-i avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP koduse võrdväärse PLMN-i avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Võrgu alamhulga teenusepakkuja avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM-i avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK-koodi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK-koodi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK-koodi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK-koodi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK-koodi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK-koodi avamise taotlemine …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM-kaardi võrgu avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM-kaardi võrgu alamhulga avamistaotlus nurjus"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM-kaardi teenusepakkuja avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM-kaardi ettevõtte avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM-kaardi avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM-i 1. võrgu avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM-i 2. võrgu avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM-i HRPD avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM-i ettevõtte avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM-i teenusepakkuja avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM-i avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK-koodi avamine nurjus."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK-koodi avamine nurjus."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK-koodi avamine nurjus."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK-koodi avamine nurjus."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK-koodi avamine nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK-koodi avamine nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK-koodi avamine nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK-koodi avamine nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK-koodi avamine nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK-koodi avamine nurjus."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK-koodi avamine nurjus."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN-i avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP koduse võrdväärse PLMN-i avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Võrgu alamhulga teenusepakkuja avamistaotlus nurjus."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM-kaardi võrgu avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM-kaardi võrgu alamhulga avamine nurjus."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM-kaardi teenusepakkuja avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM-kaardi ettevõtte avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM-kaardi lukust avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM-i 1. võrgu avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM-i 2. võrgu avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM-i HRPD avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM-i teenusepakkuja avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM-i ettevõtte avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM-i avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK-koodi avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK-koodi avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK-koodi avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK-koodi avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK-koodi avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK-koodi avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK-koodi avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK-koodi avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK-koodi avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK-koodi avamine õnnestus."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK-koodi avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN-i avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP koduse võrdväärse PLMN-i avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI avamine õnnestus."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Võrgu alamhulga teenusepakkuja avamise PIN-kood."</string> </resources> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index a3d5688c7bb9..e2e4433750e5 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Erabilera pertsonalerako utzi du gailua administratzaileak"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Jabeak kudeatzen du gailua"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Erakundeak kudeatzen du gailua eta baliteke sareko trafikoa gainbegiratzea. Sakatu hau xehetasunak ikusteko."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Administratzaileak kokapen-ezarpenak aldatu ditu"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Sakatu kokapen-ezarpenak ikusteko."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikazioek zure kokapena atzi dezakete"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Informazio gehiago lortzeko, jo IKT sailaren administratzailearengana"</string> <string name="country_detector" msgid="7023275114706088854">"Herrialde-hautemailea"</string> <string name="location_service" msgid="2439187616018455546">"Kokapen-zerbitzua"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sentsorearen jakinarazpen-zerbitzua"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Gailuko datuak ezabatu egingo dira"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Ezin da erabili administratzeko aplikazioa. Ezabatu egingo da gailuko eduki guztia.\n\nZalantzarik baduzu, jarri erakundeko administratzailearekin harremanetan."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> aplikazioak desgaitu egin du inprimatzeko aukera."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Desblokeatu aplikazio pertsonalak"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Bihar blokeatuko dira aplikazioak"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IKT sailaren administratzaileak ez du onartzen laneko profila <xliff:g id="DAYS">%1$d</xliff:g> egunean baino gehiagoan pausatuta egotea"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Aktibatu laneko profila"</string> <string name="me" msgid="6207584824693813140">"Ni"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tabletaren aukerak"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV gailuaren aukerak"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Telefonoaren aukerak"</string> <string name="global_action_lock" msgid="6949357274257655383">"Pantailaren blokeoa"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Itzali"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Itzaltzeko aukerak"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Berrabiarazi"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Larrialdi-deiak"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Akatsen txostena"</string> <string name="global_action_logout" msgid="6093581310002476511">"Amaitu saioa"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"atzitu kokapen-hornitzaileen komando gehigarriak"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Kokapen-hornitzailearen agindu gehigarriak atzitzeko baimena ematen die aplikazioei. Horrela, agian aplikazioek GPSaren edo bestelako kokapenaren iturburuen funtzionamenduan eragina izan dezakete."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"lortu kokapen zehatza aurreko planoan bakarrik"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Aplikazioak aurreko planoan funtzionatzen duenean bakarrik lor dezake zure kokapen zehatza. Kokapen-zerbitzuak aktibatuta eta erabilgarri eduki behar dituzu gailuan, aplikazioak erabil ditzan. Baliteke bateria gehiago erabiltzea."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Erabiltzen ari zarenean, aplikazioak kokapen zehatza lor dezake kokapen-zerbitzuen bidez. Aplikazioak kokapena lortu ahal izateko, kokapen-zerbitzuek aktibatuta egon behar dute gailuan. Bateria-erabilera areagotzen du horrek."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"atzitu gutxi gorabeherako kokapena aurreko planoan bakarrik"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Aplikazioak aurreko planoan funtzionatzen duenean bakarrik lor dezake zure gutxi gorabeherako kokapena. Kokapen-zerbitzuak aktibatuta eta erabilgarri eduki behar dituzu gailuan, aplikazioak erabil ditzan."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Erabiltzen ari zarenean, aplikazioak gutxi gorabeherako kokapena lor dezake kokapen-zerbitzuen bidez. Aplikazioak kokapena lortu ahal izateko, kokapen-zerbitzuek aktibatuta egon behar dute gailuan."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"atzitu kokapena atzeko planoan"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Aurreko planoan egotean bezala, aplikazioak kokapena atzi dezake atzeko planoan egotean."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplikazioak kokapena atzi dezake, baita aplikazioa erabiltzen ari ez zarenean ere."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"aldatu audio-ezarpenak"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Audio-ezarpen orokorrak aldatzeko baimena ematen dio; besteak beste, bolumena eta irteerarako zer bozgorailu erabiltzen den."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"grabatu audioa"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"atera argazkiak eta grabatu bideoak"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Aplikazioak edonoiz erabil dezake kamera argazkiak ateratzeko eta bideoak grabatzeko."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"onartu aplikazio edo zerbitzu bati sistemako kamerak atzitzea argazkiak eta bideoak ateratzeko"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Pribilegioa duen edo sistemakoa den aplikazio honek edonoiz erabil dezake kamera argazkiak ateratzeko eta bideoak grabatzeko. Halaber, android.permission.CAMERA baimena izan behar du aplikazioak."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"eman jakinarazpenak jasotzeko baimena aplikazioari edo zerbitzuari kamerak ireki edo ixten direnean."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Kamera ireki edo itxi dela (eta zer aplikaziorekin) dioten jakinarazpenak jaso ditzake aplikazio honek."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kontrolatu dardara"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Bibragailua kontrolatzeko aukera ematen die aplikazioei."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Dardara-egoera atzitzeko baimena ematen dio aplikazioari."</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Uneko edukia berrikusten"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Euskarri berria: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Sakatu konfiguratzeko"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Argazkiak eta multimedia-fitxategiak transferitzeko"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Arazo bat dago honekin: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Sakatu konpontzeko"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Hondatuta dago <xliff:g id="NAME">%s</xliff:g>. Hauta ezazu konpontzeko."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Ez da onartzen <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Gailuak ez du <xliff:g id="NAME">%s</xliff:g> onartzen. Sakatu onartzen den formatu batean konfiguratzeko."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Gailuak ez du <xliff:g id="NAME">%s</xliff:g> onartzen. Hauta ezazu onartzen den formatu batean konfiguratzeko."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> ustekabean kendu da"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Kendu aurretik, kanporatu euskarria edukirik ez galtzeko"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Kendu egin da <xliff:g id="NAME">%s</xliff:g>"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Bolumena gomendatutako mailatik gora igo nahi duzu?\n\nMusika bolumen handian eta denbora luzez entzuteak entzumena kalte diezazuke."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Erabilerraztasun-lasterbidea erabili nahi duzu?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Lasterbidea aktibatuta dagoenean, bi bolumen-botoiak hiru segundoz sakatuta abiaraziko da erabilerraztasun-eginbidea."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Erabilerraztasun-eginbideak aktibatu nahi dituzu?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Eduki sakatuta bolumen-teklak segundo batzuez erabilerraztasun-eginbideak aktibatzeko. Honen bidez, baliteke zure mugikorraren funtzionamendua aldatzea.\n\nUneko eginbideak:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nAukeratutako eginbideak aldatzeko, joan Ezarpenak > Erabilerraztasuna atalera."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack aktibatu nahi duzu?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Eduki sakatuta bolumen-teklak segundo batzuez TalkBack eginbidea aktibatzeko. Eginbide hori itsuak diren edo ikusmen urria duten pertsonentzako pantaila-irakurgailu lagungarri bat da. TalkBack eginbideak guztiz aldatzen du zure mugikorraren funtzionamendua.\n\nLasterbide hau beste eginbide batengatik aldatzeko, joan Ezarpenak > Erabilerraztasuna atalera."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> aktibatu nahi duzu?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Eduki sakatuta bolumen-teklak segundo batzuez <xliff:g id="SERVICE">%1$s</xliff:g> izeneko erabilerraztasun-eginbidea aktibatzeko. Honen bidez, baliteke zure mugikorraren funtzionamendua aldatzea.\n\nLasterbide hau beste eginbide batengatik aldatzeko, joan Ezarpenak > Erabilerraztasuna atalera."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktibatu"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ez aktibatu"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Gailua guztiz kontrolatzeko baimena eman nahi diozu <xliff:g id="SERVICE">%1$s</xliff:g> zerbitzuari?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> aktibatzen baduzu, gailuak ez du pantailaren blokeoa erabiliko datuen enkriptatzea hobetzeko."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Erabilerraztasun-beharrak asetzen dituzten aplikazioetan da egokia kontrol osoa, baina ez aplikazio gehienetan."</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Baimendu"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Ukatu"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Eginbide bat erabiltzen hasteko, saka ezazu:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Aukeratu zein eginbide erabili nahi duzun Erabilerraztasuna botoiarekin"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Aukeratu zein eginbide erabili nahi duzun bolumen-teklen lasterbidearekin"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Desaktibatu da <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editatu lasterbideak"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Eginda"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Erabili lasterbidea"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Koloreen alderantzikatzea"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Koloreen zuzenketa"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Eduki sakatuta bolumen-teklak. Aktibatu da <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Eduki sakatuta bolumen-teklak. Desaktibatu da <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> erabiltzeko, eduki sakatuta bolumen-tekla biak hiru segundoz"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Aukeratu zein eginbide erabili nahi duzun Erabilerraztasuna botoia sakatzean:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Aukeratu zein eginbide erabili nahi duzun erabilerraztasun-keinuarekin (hau da, bi hatz pantailaren behealdetik gora pasatzean):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Aukeratu zein eginbide erabili nahi duzun erabilerraztasun-keinuarekin (hau da, hiru hatz pantailaren behealdetik gora pasatzean):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Eginbide batetik bestera aldatzeko, eduki sakatuta Erabilerraztasuna botoia."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Eginbide batetik bestera aldatzeko, pasatu bi hatz pantailaren behealdetik gora eta eduki sakatuta une batez."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Eginbide batetik bestera aldatzeko, pasatu hiru hatz pantailaren behealdetik gora eta eduki sakatuta une batez."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Lupa"</string> <string name="user_switched" msgid="7249833311585228097">"Uneko erabiltzailea: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> erabiltzailera aldatzen…"</string> @@ -2050,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fitxategi</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> fitxategi</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Ez dago edukia partekatzeko pertsona gomendaturik"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Aplikazioen zerrenda"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Aplikazioak ez du grabatzeko baimenik, baina baliteke audioa grabatzea USB bidezko gailu horren bidez."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Pantaila nagusia"</string> @@ -2073,249 +2049,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"Lanekoa"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Ikuspegi pertsonala"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Laneko ikuspegia"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Ezin da partekatu laneko aplikazioekin"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"IKT saileko administratzaileak ez dizu ematen baimenik eduki hau zure laneko profileko aplikazioekin partekatzeko"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Ezin da ireki laneko aplikazioekin"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"IKT saileko administratzaileak ez dizu ematen baimenik eduki hau zure laneko profileko aplikazioekin irekitzeko"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Ezin da partekatu aplikazio pertsonalekin"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"IKT saileko administratzaileak ez dizu ematen baimenik eduki hau zure profil pertsonaleko aplikazioekin partekatzeko"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Ezin da ireki aplikazio pertsonalekin"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"IKT saileko administratzaileak ez dizu ematen baimenik eduki hau zure profil pertsonaleko aplikazioekin irekitzeko"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Laneko profila pausatuta dago"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"Aktibatu"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"grabatu edo erreproduzitu telefono-deietako audioa"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Aplikazio hau markagailu lehenetsia denean, telefono-deietako audioa grabatu edo erreproduzitzeko aukera ematen dio."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"Ez dago eduki honekin bateragarria den laneko aplikaziorik"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Ez dago eduki hau ireki dezakeen laneko aplikaziorik"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Ez dago eduki honekin bateragarria den aplikazio pertsonalik"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Ez dago eduki hau ireki dezakeen aplikazio pertsonalik"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIMaren sarearen bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIMaren sareko azpimultzoaren bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Enpresaren SIMaren bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIMaren zerbitzu-hornitzailearen bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIMaren bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Idatzi PUK kodea"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Idatzi PUK kodea"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Idatzi PUK kodea"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Idatzi PUK kodea"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Idatzi PUK kodea"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIMaren 1 motako sarearen bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIMaren 2 motako sarearen bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"HRPD sarearen bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Enpresaren RUIMaren bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIMaren zerbitzu-hornitzailearen bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIMaren bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Idatzi PUK kodea"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Idatzi PUK kodea"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Idatzi PUK kodea"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Idatzi PUK kodea"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Idatzi PUK kodea"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Idatzi PUK kodea"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPNaren bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Zerbitzu-hornitzailearen PLMN sare nagusi baliokidearen bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCIDaren bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPIaren bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Sareko azpimultzoaren zerbitzu-hornitzailearen bidez desblokeatzeko PIN kodea"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIMaren sarearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIMaren sareko azpimultzoaren bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIMaren zerbitzu-hornitzailearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Enpresaren SIMaren bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK kodearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK kodearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK kodearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK kodearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK kodearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIMaren bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIMaren 1 motako sarearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIMaren 2 motako sarearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"HRPD sarearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIMaren zerbitzu-hornitzailearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Enpresaren RUIMaren bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPNaren bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Zerbitzu-hornitzailearen PLMN sare nagusi baliokidearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCIDaren bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPIaren bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Sareko azpimultzoaren zerbitzu-hornitzailearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIMaren bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK kodearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK kodearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK kodearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK kodearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK kodearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK kodearen bidez desblokeatzeko eskatzen…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Ezin izan da eskatu SIMaren sarearen bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Ezin izan da eskatu SIMaren sareko azpimultzoaren bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Ezin izan da eskatu SIMaren zerbitzu-hornitzailearen bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Ezin izan da eskatu enpresaren SIMaren bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Ezin izan da eskatu SIMaren bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Ezin izan da eskatu RUIMaren 1 motako sarearen bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Ezin izan da eskatu RUIMaren 2 motako sarearen bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Ezin izan da eskatu HRPD sarearen bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Ezin izan da eskatu enpresaren RUIMaren bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Ezin izan da eskatu RUIMaren zerbitzu-hornitzailearen bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Ezin izan da eskatu RUIMaren bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Ezin izan da desblokeatu PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Ezin izan da desblokeatu PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Ezin izan da desblokeatu PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Ezin izan da desblokeatu PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Ezin izan da desblokeatu PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Ezin izan da desblokeatu PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Ezin izan da desblokeatu PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Ezin izan da desblokeatu PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Ezin izan da desblokeatu PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Ezin izan da desblokeatu PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Ezin izan da desblokeatu PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Ezin izan da eskatu SPNaren bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Ezin izan da eskatu zerbitzu-hornitzailearen PLMN sare nagusi baliokidearen bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Ezin izan da eskatu ICCIDaren bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Ezin izan da eskatu IMPIaren bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Ezin izan da eskatu sareko azpimultzoaren zerbitzu-hornitzailearen bidez desblokeatzeko."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Desblokeatu da SIMaren sarearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Desblokeatu da SIMaren sareko azpimultzoaren bidez."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Desblokeatu da SIMaren zerbitzu-hornitzailearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Desblokeatu da enpresaren SIMaren bidez."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Desblokeatu da SIMaren bidez."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Desblokeatu da RUIMaren 1 motako sarearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Desblokeatu da RUIMaren 2 motako sarearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Desblokeatu da HRPD sarearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Desblokeatu da RUIMaren zerbitzu-hornitzailearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Desblokeatu da enpresaren RUIMaren bidez."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Desblokeatu da RUIMaren bidez."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Desblokeatu da PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Desblokeatu da PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Desblokeatu da PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Desblokeatu da PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Desblokeatu da PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Desblokeatu da PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Desblokeatu da PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Desblokeatu da PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Desblokeatu da PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Desblokeatu da PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Desblokeatu da PUK kodearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Desblokeatu da SPNaren bidez."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Desblokeatu da zerbitzu-hornitzailearen PLMN sare nagusi baliokidearen bidez."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Desblokeatu da ICCIDaren bidez."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Desblokeatu da IMPIaren bidez."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Desblokeatu da sareko azpimultzoaren zerbitzu-hornitzailearen bidez."</string> </resources> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 14020eb282ed..710950bfcc3a 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"سرپرست از این دستگاه برای استفاده شخصی چشمپوشی کرد"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"دستگاه مدیریت میشود"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"سازمانتان این دستگاه را مدیریت میکند و ممکن است ترافیک شبکه را پایش کند. برای اطلاع از جزئیات، ضربه بزنید."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"سرپرست شما تنظیمات مکان را تغییر داده است"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"برای مشاهده تنظیمات مکان ضربه بزنید."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"برنامهها میتوانند به مکانتان دسترسی پیدا کنند"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"برای کسب اطلاعات بیشتر با سرپرست فناوری اطلاعات تماس بگیرید"</string> <string name="country_detector" msgid="7023275114706088854">"کشوریاب"</string> <string name="location_service" msgid="2439187616018455546">"خدمات مکان"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"سرویس اعلان حسگر"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"دستگاهتان پاک خواهد شد"</string> <string name="factory_reset_message" msgid="2657049595153992213">"برنامه سرپرست سیستم را نمیتوان استفاده کرد. دستگاه شما در این لحظه پاک میشود.\n\nاگر سؤالی دارید، با سرپرست سیستم سازمانتان تماس بگیرید."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> چاپ کردن را غیرفعال کرده است."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"لغو انسداد برنامههای شخصی"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"برنامهها فردا مسدود خواهند شد"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"سرپرست فناوری اطلاعات اجازه نمیدهد نمایه کاری شما بیشتر از <xliff:g id="DAYS">%1$d</xliff:g> روز بهطور موقت متوقف باشد"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"روشن کردن نمایه کاری"</string> <string name="me" msgid="6207584824693813140">"من"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"گزینههای رایانهٔ لوحی"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"گزینههای Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"گزینههای تلفن"</string> <string name="global_action_lock" msgid="6949357274257655383">"قفل صفحه"</string> <string name="global_action_power_off" msgid="4404936470711393203">"خاموش کردن"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"روشن/خاموش کردن"</string> + <string name="global_action_restart" msgid="4678451019561687074">"بازراهاندازی"</string> <string name="global_action_emergency" msgid="1387617624177105088">"اضطراری"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"گزارش اشکال"</string> <string name="global_action_logout" msgid="6093581310002476511">"پایان جلسه"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"دسترسی به فرمانهای بیشتر ارائه دهنده مکان"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"به برنامه اجازه میدهد به دستورات ارائهدهنده مکان تکمیلی دسترسی داشته باشد. این کار ممکن است به برنامه امکان دهد با کارکرد GPS یا منابع دیگر مکان تداخل داشته باشد."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"دسترسی به مکان دقیق فقط در پیشزمینه"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"این برنامه فقط زمانی میتواند موقعیت مکانی دقیق شما را دریافت کند که در پیشزمینه باشد. برای اینکه برنامه بتواند از خدمات مکان استفاده کند، این خدمات باید در دستگاهتان روشن و در دسترس باشد. ممکن است با این کار مصرف باتری افزایش یابد."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"این برنامه زمانی که درحال استفاده است میتواند ازطریق خدمات مکان، مکان دقیق شما را دریافت کند. برای اینکه برنامه بتواند موقعیت مکان را دریافت کند، خدمات مکان دستگاهتان باید روشن باشد. روشن بودن خدمات مکان ممکن است مصرف باتری را افزایش دهد."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"دسترسی به مکان تقریبی فقط در پیشزمینه"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"این برنامه فقط هنگامیکه در پیشزمینه است میتواند مکان تقریبی شما را دریافت کند. برای اینکه برنامه بتواند از خدمات مکان استفاده کند، این خدمات باید روشن و در دستگاهتان در دسترس باشند."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"این برنامه زمانی که درحال استفاده است میتواند ازطریق خدمات مکان، مکان تقریبی شما را دریافت کند. برای اینکه برنامه بتواند موقعیت مکان را دریافت کند، خدمات مکان دستگاهتان باید روشن باشد."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"دسترسی به مکان در پسزمینه"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"این برنامه علاوهبر دسترسی به مکان در پیشزمینه، میتواند هنگام اجرا در پسزمینه نیز به مکان دسترسی داشته باشد."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"این برنامه همیشه میتواند به مکان دسترسی داشته باشد، حتی زمانی که از آن برنامه استفاده نمیشود."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"تغییر تنظیمات صوتی"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"به برنامه امکان میدهد تنظیمات صوتی کلی مانند میزان صدا و بلندگوی مورد استفاده برای پخش صدا را تغییر دهد."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ضبط صدا"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"عکسبرداری و فیلمبرداری"</string> <string name="permdesc_camera" msgid="1354600178048761499">"این برنامه میتواند در هرزمانی با استفاده از دوربین عکس و فیلم بگیرد."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"به برنامه یا سرویسی اجازه دهید برای عکسبرداری و فیلمبرداری به دوربینهای سیستم دسترسی داشته باشد"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"این برنامه سیستم یا دارای امتیاز، میتواند با استفاده از دوربین سیستم در هرزمانی عکسبرداری و فیلمبرداری کند. برنامه به اجازه android.permission.CAMERA هم نیاز دارد."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"مجاز کردن برنامه یا سرویس برای دریافت پاسخ تماس درباره دستگاههای دوربینی که باز یا بسته میشوند."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"این برنامه میتواند هروقت دستگاه دوربین باز (براساس برنامه) یا بسته میشود، پاسخ تماس دریافت کند."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"کنترل لرزش"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"به برنامه اجازه میدهد تا لرزاننده را کنترل کند."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"به برنامه اجازه میدهد تا به وضعیت لرزاننده دسترسی داشته باشد."</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"درحال مرور محتوای کنونی"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> جدید"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"برای راهاندازی ضربه بزنید"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"برای انتقال عکسها و رسانه"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"مشکل مرتبط با <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"برای برطرف کردن مشکل، ضربه بزنید"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> خراب است. رفع خطا را انتخاب کنید."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> پشتیبانی نشده"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"این دستگاه از این <xliff:g id="NAME">%s</xliff:g> پشتیبانی نمیکند. برای نصب آن در قالب پشتیبانیشده ضربه بزنید."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"این دستگاه از این <xliff:g id="NAME">%s</xliff:g> پشتیبانی نمیکند. برای تنظیم در یک قالب پشتیبانیشده، آن را انتخاب کنید."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> بهطور غیرمنتظره جدا شد"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"برای جلوگیری از از دست رفتن محتوا، رسانه را قبل از برداشتن بیرون برانید"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> برداشته شد"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"میزان صدا را به بالاتر از حد توصیه شده افزایش میدهید؟\n\nگوش دادن به صداهای بلند برای مدت طولانی میتواند به شنواییتان آسیب وارد کند."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"از میانبر دسترسپذیری استفاده شود؟"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"وقتی میانبر روشن باشد، با فشار دادن هردو دکمه صدا بهمدت ۳ ثانیه ویژگی دسترسپذیری فعال میشود."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"ویژگیهای دسترسپذیری روشن شود؟"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"با پایین نگه داشتن هردو کلید میزان صدا بهمدت چند ثانیه، ویژگیهای دسترسپذیری روشن میشود. با این کار نحوه عملکرد دستگاهتان تغییر میکند.\n\nویژگیهای فعلی:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nمیتوانید ویژگیهای انتخابی را در «تنظیمات > دسترسپذیری» تغییر دهید."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack روشن شود؟"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"با پایین نگه داشتن هردو کلید میزان صدا بهمدت چند ثانیه، TalkBack روشن میشود که صفحهخوانی مفید برای افراد نابینا یا کمبینا است. TalkBack بهطور کامل نحوه عملکرد دستگاه را تغییر میدهد.\n\nمیتوانید در «تنظیمات > دسترسپذیری»، این میانبر را به ویژگی دیگری تغییر دهید."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> روشن شود؟"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"با پایین نگه داشتن هردو کلید میزان صدا بهمدت چند ثانیه، <xliff:g id="SERVICE">%1$s</xliff:g> (یکی از ویژگیهای دسترسپذیری) روشن میشود. با این کار نحوه عملکرد دستگاهتان تغییر میکند.\n\nمیتوانید در «تنظیمات > دسترسپذیری»،این میانبر را به ویژگی دیگری تغییر دهید."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"روشن کردن"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"روشن نشود"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"به <xliff:g id="SERVICE">%1$s</xliff:g> اجازه میدهید بر دستگاهتان کنترل کامل داشته باشد؟"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"اگر <xliff:g id="SERVICE">%1$s</xliff:g> را روشن کنید، دستگاه شما از قفل صفحه شما جهت بهبود رمزگذاری اطلاعات استفاده نخواهد کرد."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"کنترل کامل برای بیشتر برنامهها مناسب نیست، بهجز برنامههایی که به شما در زمینه نیازهای دسترسپذیری کمک میکند."</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"مجاز"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"رد کردن"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"برای استفاده از ویژگی، روی آن ضربه بزنید:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"انتخاب ویژگیهای موردنظر برای استفاده با دکمه دسترسپذیری"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"انتخاب ویژگیهای موردنظر برای استفاده با میانبر کلید میزان صدا"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> خاموش شده است"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ویرایش میانبرها"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"تمام"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"استفاده از میانبر"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"وارونگی رنگ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"تصحیح رنگ"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> روشن شد."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> خاموش شد."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"برای استفاده از <xliff:g id="SERVICE_NAME">%1$s</xliff:g>، هر دو کلید صدا را فشار دهید و سه ثانیه نگه دارید"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"ویژگی را انتخاب کنید که هنگام ضربه زدن روی دکمه دسترسپذیری استفاده میشود:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"ویژگی را برای استفاده با اشاره دسترسپذیری انتخاب کنید (با دو انگشت صفحه را از پایین تند به بالا بکشید):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"ویزگی را برای استفاده با اشاره دسترسپذیری انتخاب کنید (با سه انگشت صفحه را از پایین تند به بالا بکشید):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"برای جابهجایی بین ویژگیها، دکمه دسترسپذیری را لمس کنید و نگه دارید."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"برای جابهجایی بین ویژگیها، با دو انگشت صفحه را تند به بالا بکشید و نگه دارید."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"برای جابهجایی بین ویژگیها، با سه انگشت صفحه را تند به بالا بکشید و نگه دارید."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"درشتنمایی"</string> <string name="user_switched" msgid="7249833311585228097">"کاربر کنونی <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"در حالت تغییر به <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2027,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> فایل</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> فایل</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"هیچ فردی توصیه نشده است که با او همرسانی کنید"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"فهرست برنامهها"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"مجوز ضبط به این برنامه داده نشده است اما میتواند صدا را ازطریق این دستگاه USB ضبط کند."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"صفحه اصلی"</string> @@ -2087,222 +2063,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"هیچکدام از برنامههای کاری نمیتوانند این محتوا را باز کنند"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"هیچکدام از برنامههای شخصی نمیتوانند از این محتوا پشتیبانی کنند"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"هیچکدام از برنامههای شخصی نمیتوانند این محتوا را باز کنند"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ضبط یا پخش صدا در تماسهای تلفنی"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"به این برنامه اجازه میدهد وقتی بهعنوان برنامه شمارهگیر پیشفرض تنظیم شده است، در تماسهای تلفنی صدا ضبط یا پخش کند."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"پین باز کردن قفل شبکه سیمکارت"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"پین باز کردن قفل زیرمجموعه شبکه سیمکارت"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"پین باز کردن قفل شرکت سیمکارت"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"پین باز کردن قفل ارائهدهنده خدمات سیمکارت"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"پین باز کردن قفل سیمکارت"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK را وارد کنید"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK را وارد کنید"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK را وارد کنید"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK را وارد کنید"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK را وارد کنید"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"پین باز کردن قفل شبکه ۱ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"پین باز کردن قفل شبکه ۲ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"پین باز کردن قفل RUIM hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"پین باز کردن قفل شرکت RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"پین باز کردن قفل ارائهدهنده خدمات RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"پین باز کردن قفل RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK را وارد کنید"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK را وارد کنید"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK را وارد کنید"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK را وارد کنید"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK را وارد کنید"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK را وارد کنید"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"پین باز کردن قفل SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"پین باز کردن قفل SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"پین باز کردن قفل ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"پین باز کردن قفل IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"پین باز کردن قفل ارائهدهنده خدمات زیرمجموعه شبکه"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"درحال درخواست باز کردن قفل شبکه سیمکارت…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"درحال درخواست باز کردن قفل زیرمجموعه شبکه سیمکارت…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"درحال درخواست باز کردم قفل ارائهدهنده خدمات سیمکارت…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"درحال درخواست باز کردن قفل شرکت سیمکارت…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"درحال درخواست باز کردن قفل PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"درحال درخواست باز کردن قفل PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"درحال درخواست باز کردن قفل PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"درحال درخواست باز کردن قفل PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"درحال درخواست باز کردن قفل PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"درحال درخواست باز کردن قفل سیمکارت…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"درحال درخواست باز کردن قفل شبکه ۱ RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"درحال درخواست باز کردن قفل شبکه ۲ RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"درحال درخواست باز کردن قفل RUIM hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"درحال درخواست باز کردن قفل ارائهدهنده خدمات RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"درحال درخواست باز کردن قفل شرکت RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"درحال درخواست باز کردن قفل SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"درحال درخواست باز کردن قفل SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"درحال درخواست باز کردن قفل ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"درحال درخواست باز کردن قفل IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"درحال درخواست باز کردن قفل ارائهدهنده خدمات زیرمجموعه شبکه…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"درحال درخواست باز کردن قفل RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"درحال درخواست باز کردن قفل PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"درحال درخواست باز کردن قفل PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"درحال درخواست باز کردن قفل PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"درحال درخواست باز کردن قفل PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"درحال درخواست باز کردن قفل PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"درحال درخواست باز کردن قفل PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"درخواست باز کرد قفل شبکه سیمکارت انجام نشد."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"درخواست باز کردن قفل زیرمجموعه شبکه سیمکارت انجام نشد."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"درخواست باز کردن قفل ارائهدهنده خدمات سیمکارت انجام نشد."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"درخواست باز کردن قفل شرکت سیمکارت انجام شد."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"درخواست باز کردن قفل سیمکارت انجام نشد."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"درخواست باز کردن قفل شبکه ۱ RUIM انجام نشد."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"درخواست باز کردن قفل شبکه ۲ RUIM انجام نشد."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"درخواست باز کردن قفل RUIM Hrpd انجام نشد."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"درخواست باز کردن قفل شرکت RUIM انجام نشد."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"درخواست باز کردن قفل ارائهدهنده خدمات RUIM انجام نشد."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"درخواست باز کردن قفل RUIM انجام نشد."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"قفل PUK باز نشد."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"قفل PUK باز نشد."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"قفل PUK باز نشد."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"قفل PUK باز نشد."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"قفل PUK باز نشد."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"قفل PUK باز نشد."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"قفل PUK باز نشد."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"قفل PUK باز نشد."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"قفل PUK باز نشد."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"قفل PUK باز نشد."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"قفل PUK باز نشد."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"درخواست باز کردن قفل SPN انجام نشد."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"درخواست باز کردن قفل SP Equivalent Home PLMN انجام نشد."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"درخواست باز کردن قفل ICCID انجام نشد."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"درخواست باز کردن قفل IMPI انجام نشد."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"درخواست باز کردن قفل ارائهدهنده خدمات زیرمجموعه شبکه انجام نشد."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"قفل شبکه سیمکارت باز شد."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"قفل زیرمجموعه شبکه سیمکارت باز شد."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"قفل ارائهدهنده خدمات سیمکارت باز شد."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"قفل شرکت سیمکارت باز شد."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"قفل سیمکارت باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"قفل شبکه ۱ RUIM باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"قفل شبکه ۲ RUIM باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"قفل RUIM Hrpd باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"قفل ارائهدهنده خدمات RUIM باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"قفل شرکت RUIM باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"قفل RUIM باز شد."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"قفل PUK باز شد."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"قفل PUK باز شد."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"قفل PUK باز شد."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"قفل PUK باز شد."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"قفل PUK باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"قفل PUK باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"قفل PUK باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"قفل PUK باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"قفل PUK باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"قفل PUK باز شد."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"قفل PUK باز شد."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"قفل SPN باز شد."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"قفل SP Equivalent Home PLMN باز شد."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"قفل ICCID باز شد."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"قفل IMPI باز شد."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"قفل ارائهدهنده خدمات زیرمجموعه شبکه باز شد."</string> </resources> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 8251fc04deca..6883b2392bcd 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Järjestelmänvalvoja luovutti laitteen henkilökohtaiseen käyttöön"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Hallinnoitu laite"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Organisaatiosi hallinnoi tätä laitetta ja voi tarkkailla verkkoliikennettä. Katso lisätietoja napauttamalla."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Järjestelmänvalvoja muutti sijaintiasetuksia"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Katso sijaintiasetukset napauttamalla."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Sovellukset voivat käyttää sijaintiasi"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Saat lisätietoja järjestelmänvalvojalta."</string> <string name="country_detector" msgid="7023275114706088854">"Maan tunnistin"</string> <string name="location_service" msgid="2439187616018455546">"Sijaintipalvelu"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Anturin ilmoituspalvelu"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Laitteen tiedot poistetaan"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Hallintasovellusta ei voi käyttää. Laitteen tiedot pyyhitään.\n\nPyydä ohjeita järjestelmänvalvojaltasi."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> on poistanut tulostuksen käytöstä."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Kumoa omien sovellusten esto"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Sovellukset estetään huomenna"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT-järjestelmänvalvoja ei anna keskeyttää työprofiiliasi yli <xliff:g id="DAYS">%1$d</xliff:g> päiväksi"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Laita työprofiili päälle"</string> <string name="me" msgid="6207584824693813140">"Minä"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet-laitteen asetukset"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ‑vaihtoehdot"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Puhelimen asetukset"</string> <string name="global_action_lock" msgid="6949357274257655383">"Näytön lukitus"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Katkaise virta"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Virta"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Uudelleenkäynnistys"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Hätäpuhelu"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Virheraportti"</string> <string name="global_action_logout" msgid="6093581310002476511">"Lopeta käyttökerta"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"käytä lisää sijainnintarjoajakomentoja"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Antaa sovelluksen käyttää ylimääräisiä sijaintipalvelukomentoja. Sovellus saattaa tällöin häiritä GPS:n tai muiden sijaintilähteiden toimintaa."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"käyttää tarkkaa sijaintia vain etualalla"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Tämä sovellus saa tarkat sijaintitietosi käyttöönsä vain etualalla. Sijaintipalveluiden tulee olla päällä ja käytettävissä laitteella, jotta sovellus voi käyttää niitä. Tämä voi lisätä akun kulutusta."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Tämä sovellus saa täsmällisen sijaintisi sijaintipalveluista, kun sovellusta käytetään. Laitteesi sijaintipalveluiden on oltava päällä, jotta sovellus saa sijaintisi. Tämä voi lisätä akun käyttöä."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"käyttää karkeaa sijaintia vain etualalla"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Tämä sovellus saa karkean sijaintisi käyttöönsä vain ollessaan etualalla. Sijaintipalveluiden tulee olla päällä ja käytettävissä laitteellasi, jotta sovellus voi käyttää niitä."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Tämä sovellus saa likimääräisen sijaintisi sijaintipalveluista, kun sovellusta käytetään. Laitteesi sijaintipalveluiden on oltava päällä, jotta sovellus saa sijaintisi."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"käytä sijaintia taustalla"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Tämä sovellus voi käyttää sijaintia taustalla ja etualalla."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Tällä sovelluksella on pääsy sijaintitietoihin milloin tahansa, myös silloin kun sovellusta ei käytetä."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"muuta ääniasetuksia"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Antaa sovelluksen muokata yleisiä ääniasetuksia, kuten äänenvoimakkuutta ja käytettävää kaiutinta."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"tallentaa ääntä"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"ota kuvia ja videoita"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Tämä sovellus voi ottaa kameralla kuvia ja videoita koska tahansa."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Salli sovellukselle tai palvelulle pääsy järjestelmän kameroihin, jotta se voi ottaa kuvia ja nauhoittaa videoita"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Tämä oikeutettu tai järjestelmäsovellus voi ottaa järjestelmän kameralla kuvia ja videoita koska tahansa. Sovelluksella on oltava myös android.permission.CAMERA-lupa"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Salli sovelluksen tai palvelun vastaanottaa vastakutsuja kameralaitteiden avaamisesta tai sulkemisesta."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Tämä sovellus voi saada vastakutsuja, kun jokin kameralaite avataan tai suljetaan (jollakin sovelluksella)."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"hallita värinää"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Antaa sovelluksen hallita värinää."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Sallii sovelluksen käyttää värinätilaa."</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Tarkastetaan nykyistä sisältöä"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Uusi <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Määritä koskettamalla."</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Kuvien ja median siirtämiseen"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Ongelma: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Korjaa napauttamalla."</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> on viallinen. Korjaa valitsemalla."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Epäyhteensopiva <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"<xliff:g id="NAME">%s</xliff:g> ei ole yhteensopiva tämän laitteen kanssa. Ota se käyttöön tuetussa tilassa napauttamalla."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Tämä laite ei tue laitetta <xliff:g id="NAME">%s</xliff:g>. Valitse laite, niin voit suorittaa määrityksen tuetussa muodossa."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> poistettiin yllättäen"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Poista media ennen sen irrottamista, niin et menetä sisältöä."</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> poistettu"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Nostetaanko äänenvoimakkuus suositellun tason yläpuolelle?\n\nPitkäkestoinen kova äänenvoimakkuus saattaa heikentää kuuloa."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Käytetäänkö esteettömyyden pikanäppäintä?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kun pikanäppäin on käytössä, voit käynnistää esteettömyystoiminnon pitämällä molempia äänenvoimakkuuspainikkeita painettuna kolmen sekunnin ajan."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Laitetaanko esteettömyysominaisuudet päälle?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Molempien äänenvoimakkuuspainikkeiden painaminen muutaman sekunnin ajan laittaa esteettömyysominaisuudet päälle. Tämä voi muuttaa laitteesi toimintaa.\n\nNykyiset ominaisuudet:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nVoit muuttaa valittuja ominaisuuksia kohdassa Asetukset > Esteettömyys."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Laitetaanko TalkBack päälle?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Molempien äänenvoimakkuuspainikkeiden pitkään painaminen laittaa päälle TalkBackin, eli näytönlukuohjelman, josta on hyötyä sokeille ja heikkonäköisille. TalkBack muuttaa laitteesi toiminnan täysin.\n\nVoit muuttaa tätä pikanäppäintä kohdassa Asetukset > Esteettömyys."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Laitetaanko <xliff:g id="SERVICE">%1$s</xliff:g> päälle?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Molempien äänenvoimakkuuspainikkeiden pitkään painaminen laittaa päälle esteettömyysominaisuuden <xliff:g id="SERVICE">%1$s</xliff:g>. Tämä voi muuttaa laitteesi toimintaa.\n\nVoit muuttaa tätä pikanäppäintä kohdassa Asetukset > Esteettömyys."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Laita päälle"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Älä laita päälle"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Saako <xliff:g id="SERVICE">%1$s</xliff:g> laitteesi täyden käyttöoikeuden?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jos <xliff:g id="SERVICE">%1$s</xliff:g> otetaan käyttöön, laitteesi ei käytä näytön lukitusta tiedon salauksen parantamiseen."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Täysi käyttöoikeus sopii esteettömyyssovelluksille, mutta ei useimmille sovelluksille."</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Salli"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Estä"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Aloita ominaisuuden käyttö napauttamalla sitä:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Valitse ominaisuudet, joita käytetään esteettömyyspainikkeella"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Valitse ominaisuudet, joita käytetään äänenvoimakkuuspikanäppäimellä"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> on laitettu pois päältä"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Muokkaa pikakuvakkeita"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Valmis"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Käytä pikanäppäintä"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Käänteiset värit"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Värinkorjaus"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Äänenvoimakkuuspainikkeita painettiin pitkään. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> laitettiin päälle."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Äänenvoimakkuuspainikkeita painettiin pitkään. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> laitettiin pois päältä."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Voit käyttää palvelua <xliff:g id="SERVICE_NAME">%1$s</xliff:g> painamalla molempia äänenvoimakkuuspainikkeita kolmen sekunnin ajan"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Valitse ominaisuus, jonka esteettömyyspainike aktivoi:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Valitse ominaisuus, jota käytetään esteettömyyseleellä (pyyhkäise näytön alalaidasta ylös kahdella sormella):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Valitse ominaisuus, jota käytetään esteettömyyseleellä (pyyhkäise näytön alalaidasta ylös kolmella sormella):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Vaihda ominaisuuksien välillä painamalla esteettömyyspainiketta pitkään."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Vaihda ominaisuuksien välillä pyyhkäisemällä ylös kahdella sormella ja koskettamalla pitkään."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Vaihda ominaisuuksien välillä pyyhkäisemällä ylös kolmella sormella ja koskettamalla pitkään."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Suurennus"</string> <string name="user_switched" msgid="7249833311585228097">"Nykyinen käyttäjä: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Vaihdetaan käyttäjään <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> tiedostoa</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> tiedosto</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Ei suosituksia ihmisistä, joille tämän voisi jakaa"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Sovellusluettelo"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Sovellus ei ole saanut tallennuslupaa mutta voi tallentaa ääntä tämän USB-laitteen avulla."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Aloitusnäyttö"</string> @@ -2087,222 +2063,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Työsovelluksilla ei voi avata tätä sisältöä"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Henkilökohtaiset sovellukset eivät voi tukea tätä sisältöä"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Henkilökohtaisilla sovelluksilla ei voi avata tätä sisältöä"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Äänen tallentaminen tai toistaminen puheluiden aikana"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Sallii tämän sovelluksen tallentaa tai toistaa ääntä puheluiden aikana, kun sovellus on valittu oletuspuhelusovellukseksi."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM-kortin verkkoversion lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM-kortin verkkoversion alijoukon lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM-kortin yritysversion lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM-kortin palveluntarjoajaversion lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM-kortin lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Lisää PUK-koodi"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Lisää PUK-koodi"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Lisää PUK-koodi"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Lisää PUK-koodi"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Lisää PUK-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM-kortin hrpd-version lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM-kortin verkko1-version lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM-kortin hrpd-version lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM-kortin yritysversion lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM-kortin palveluntarjoajaversion lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM-kortin lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Lisää PUK-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Lisää PUK-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Lisää PUK-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Lisää PUK-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Lisää PUK-koodi"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Lisää PUK-koodi"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN:n lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP:tä vastaavan koti-PLMN:n lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID:n lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI:n lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Verkon alijoukon palveluntarjoajan lukituksen avaamisen PIN-koodi"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Pyydetään SIM-kortin verkkoversion lukituksen avaamista…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Pyydetään SIM-kortin verkkoversion alijoukon lukituksen avaamista…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Pyydetään SIM-kortin palveluntarjoajaversion lukituksen avaamista…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Pyydetään SIM-kortin yritysversion lukituksen avaamista…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Pyydetään lukituksen avausta PUK-koodilla…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Pyydetään lukituksen avausta PUK-koodilla…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Pyydetään lukituksen avausta PUK-koodilla…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Pyydetään lukituksen avausta PUK-koodilla…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Pyydetään lukituksen avausta PUK-koodilla…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Pyydetään SIM-kortin lukituksen avausta…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Pyydetään RUIM-kortin verkko1-version lukituksen avaamista…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Pyydetään RUIM-kortin verkko2-version lukituksen avaamista…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Pyydetään RUIM-kortin hrpd-version lukituksen avaamista…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Pyydetään RUIM-kortin palveluntarjoajaversion lukituksen avaamista…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Pyydetään RUIM-kortin yritysversion lukituksen avaamista…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Pyydetään SPN:n lukituksen avausta…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Pyydetään SP:tä vastaavan koti-PLMN:n lukituksen avaamista…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Pyydetään ICCID:n lukituksen avausta…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Pyydetään IMPI:n lukituksen avausta…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Pyydetään verkon alijoukon palveluntarjoajan lukituksen avaamista…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Pyydetään RUIM-kortin lukituksen avausta…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Pyydetään lukituksen avausta PUK-koodilla…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Pyydetään lukituksen avausta PUK-koodilla…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Pyydetään lukituksen avausta PUK-koodilla…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Pyydetään lukituksen avausta PUK-koodilla…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Pyydetään lukituksen avausta PUK-koodilla…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Pyydetään lukituksen avausta PUK-koodilla…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM-kortin verkkoversion lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM-kortin verkkoversion alijoukon lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM-kortin palveluntarjoajaversion lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM-kortin yritysversion lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM-kortin lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM-kortin verkko1-version lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM-kortin verkko2-version lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM-kortin hrpd-version lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM-kortin yritysversion lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM-kortin palveluntarjoajaversion lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM-kortin lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN:n lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP:tä vastaavan koti-PLMN:n lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID:n lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI:n lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Verkon alijoukon palveluntarjoajan lukituksen avauspyyntö ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM-kortin verkkoversion lukituksen avaus onnistui."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM-kortin verkkoversion alijoukon lukituksen avaus onnistui."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM-kortin palveluntarjoajaversion lukituksen avaus onnistui."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM-kortin yritysversion lukituksen avaus onnistui."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM-kortin lukituksen avaaminen onnistui."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM-kortin verkko1-version lukituksen avaus onnistui."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM-kortin verkko2-version lukituksen avaus onnistui."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM-kortin hrpd-version lukituksen avaus onnistui."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM-kortin palveluntarjoajaversion lukituksen avaus onnistui."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM-kortin yritysversion lukituksen avaus onnistui."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM-kortin lukituksen avaaminen onnistui."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Lukituksen avaus PUK-koodilla ei onnistunut."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN:n lukituksen avaaminen onnistui."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP:tä vastaavan koti-PLMN:n lukituksen avauspyyntö onnistui."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID:n lukituksen avaaminen onnistui."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI:n lukituksen avaaminen onnistui."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Verkon alijoukon palveluntarjoajan lukituksen avaaminen onnistui."</string> </resources> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index d6ec47c93ce3..0e64840ab77b 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"L\'administrateur a libéré l\'appareil pour un usage personnel"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"L\'appareil est géré"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Votre organisation gère cet appareil et peut surveiller le trafic réseau. Touchez ici pour obtenir plus d\'information."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Les paramètres de localisation ont été changés par votre administrateur"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Touchez l\'écran pour voir vos paramètres de localisation."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Les applications peuvent accéder à votre position"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Communiquez avec votre administrateur informatique pour en savoir plus"</string> <string name="country_detector" msgid="7023275114706088854">"Détecteur de pays"</string> <string name="location_service" msgid="2439187616018455546">"Service de localisation"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Service de notification de capteur"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Le contenu de votre appareil sera effacé"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Impossible d\'utiliser l\'application d\'administration. Les données de votre appareil vont maintenant être effacées.\n\nSi vous avez des questions, communiquez avec l\'administrateur de votre organisation."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Impression désactivée par <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Débloquer applis personnelles"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Les applis seront bloquées demain"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Votre administrateur informatique ne vous permet pas d\'interrompre le profil professionnel pendant plus de <xliff:g id="DAYS">%1$d</xliff:g> jours"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Activer le profil professionnel"</string> <string name="me" msgid="6207584824693813140">"Moi"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Options de la tablette"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Options d\'Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Options du téléphone"</string> <string name="global_action_lock" msgid="6949357274257655383">"Verrouillage de l\'écran"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Éteindre"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Alimentation"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Redémarrer"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Urgence"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Rapport de bogue"</string> <string name="global_action_logout" msgid="6093581310002476511">"Fermer la session"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"accéder aux commandes de fournisseur de position géographique supplémentaires"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permet à l\'application d\'accéder à des commandes de localisation supplémentaires offertes par le fournisseur. Elle est ainsi susceptible d\'interférer avec le bon fonctionnement du GPS ou de toute autre source de localisation."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"accéder à votre position précise seulement en avant-plan"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Cette application peut obtenir votre position exacte seulement lorsqu\'elle fonctionne en avant-plan. Les services de localisation doivent être activés et accessibles sur votre appareil pour que l\'application puisse les utiliser. Cela peut entraîner une utilisation accrue de la pile."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Cette application peut obtenir votre position précise des services de localisation lorsque vous utilisez l\'application. Les services de localisation doivent être activés sur votre appareil pour que l\'application puisse obtenir votre position. Cela pourrait accroître l\'utilisation de la pile."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"accéder à votre position approximative seulement en avant-plan"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Cette application peut seulement obtenir votre position approximative lorsqu\'elle fonctionne en avant-plan. Les services de localisation doivent être activés et accessibles sur votre appareil pour que l\'application puisse les utiliser."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Cette application peut obtenir votre position approximative des services de localisation lorsque vous utilisez l\'application. Les services de localisation doivent être activés sur votre appareil pour que l\'application puisse obtenir votre position."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"accès à la localisation en arrière-plan"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Cette application peut accéder à la position en arrière-plan, en plus d\'en avant-plan."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Cette application peut accéder à votre position en tout temps, même lorsque vous n\'utilisez pas l\'application."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"modifier vos paramètres audio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permet à l\'application de modifier les paramètres audio généraux, tels que le volume et la sortie audio utilisée."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"enregistrer des fichiers audio"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"prendre des photos et filmer des vidéos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Cette application peut prendre des photos et enregistrer des vidéos à l\'aide de l\'appareil photo en tout temps."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Autoriser une application ou un service à accéder aux appareils photo système pour prendre des photos et filmer des vidéos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Cette application privilégiée ou système peut prendre des photos ou filmer des vidéos à l\'aide d\'un appareil photo système en tout temps. L\'application doit également posséder l\'autorisation android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Autoriser une application ou un service de recevoir des rappels relatifs à l\'ouverture ou à la fermeture des appareils photos."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Cette application peut recevoir des rappels lorsque l\'appareil photo est ouvert ou fermé (par l\'application en question)."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"gérer le vibreur"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Permet à l\'application de gérer le vibreur de l\'appareil."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permet à l\'application d\'accéder au mode vibration."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Vérification du contenu actuel"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nouveau périphérique <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Toucher pour configurer"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Pour transférer des photos et d\'autres fichiers"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Il y a un problème avec <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Touchez la notification pour corriger la situation"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Le média « <xliff:g id="NAME">%s</xliff:g> » est corrompu. Sélectionnez-le pour corriger la situation."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> non compatible"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Cet appareil n\'est pas compatible avec la mémoire de stockage « <xliff:g id="NAME">%s</xliff:g> ». Touchez pour la configurer dans un format compatible."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Cet appareil ne prend pas en charge ce média « <xliff:g id="NAME">%s</xliff:g> ». Sélectionnez-le pour le configurer dans un format compatible."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Cet appareil ne prend pas en charge ce média <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Retrait inattendu de la mémoire « <xliff:g id="NAME">%s</xliff:g> »"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Éjectez les périphériques avant de les retirer pour éviter toute perte de données."</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> retiré(e)"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Augmenter le volume au-dessus du niveau recommandé?\n\nL\'écoute prolongée à un volume élevé peut endommager vos facultés auditives."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Utiliser le raccourci d\'accessibilité?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quand le raccourci est activé, appuyez sur les deux boutons de volume pendant trois secondes pour lancer une fonctionnalité d\'accessibilité."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Activer les fonctionnalités d\'accessibilité?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Si vous maintenez enfoncées les deux touches de volume pendant quelques secondes, vous activez les fonctionnalités d\'accessibilité. Cela peut modifier le fonctionnement de votre appareil.\n\nFonctionnalités actuellement utilisées :\n<xliff:g id="SERVICE">%1$s</xliff:g>\nPour les modifier, sélectionnez Paramètres > Accessibilité."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Activer TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Si vous maintenez enfoncées les deux touches de volume pendant quelques secondes, vous activez TalkBack, un lecteur d\'écran très pratique pour les personnes aveugles ou malvoyantes. TalkBack change complètement le fonctionnement de votre appareil.\n\nPour attribuer ce raccourci à une autre fonctionnalité, sélectionnez Paramètres > Accessibilité."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Activer <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Si vous maintenez enfoncées les deux touches de volume pendant quelques secondes, vous activez la fonctionnalité d\'accessibilité <xliff:g id="SERVICE">%1$s</xliff:g>. Cela peut modifier le fonctionnement de votre appareil.\n\nPour attribuer ce raccourci à une autre fonctionnalité, sélectionnez Paramètres > Accessibilité."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activer"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ne pas activer"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permettre à <xliff:g id="SERVICE">%1$s</xliff:g> de commander complètement votre appareil?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si vous activez <xliff:g id="SERVICE">%1$s</xliff:g>, votre appareil n\'utilisera pas le verrouillage de l\'écran pour améliorer le chiffrement des données."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Le contrôle total convient aux applications qui répondent à vos besoins d\'accessibilité. Il ne convient pas à la plupart des applications."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Autoriser"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Refuser"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toucher une fonctionnalité pour commencer à l\'utiliser :"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Choisir les fonctionnalités à utiliser à l\'aide du bouton d\'accessibilité"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Choisir les fonctionnalités à utiliser avec le raccourci des touches de volume"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> a été désactivé"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Modifier les raccourcis"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"OK"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utiliser le raccourci"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversion des couleurs"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correction des couleurs"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume maintenues enfoncées. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Touches de volume maintenues enfoncées. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> désactivé."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Maintenez enfoncées les deux touches de volume pendant trois secondes pour utiliser <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Choisissez une fonctionnalité à utiliser lorsque vous touchez le bouton d\'accessibilité :"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Choisissez une fonctionnalité à utiliser lorsque vous utilisez le geste d\'accessibilité (balayer l\'écran de bas en haut avec deux doigts) :"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Choisissez une fonctionnalité à utiliser lorsque vous utilisez le geste d\'accessibilité (balayer l\'écran de bas en haut avec trois doigts) :"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Pour basculer entre les fonctionnalités, maintenez le doigt sur le bouton d\'accessibilité."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Pour basculer entre les fonctionnalités, balayez l\'écran vers le haut avec deux doigts et maintenez-les-y."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Pour basculer entre les fonctionnalités, balayez l\'écran vers le haut avec trois doigts et maintenez-les-y."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Zoom"</string> <string name="user_switched" msgid="7249833311585228097">"Utilisateur actuel : <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Changement d\'utilisateur (<xliff:g id="NAME">%1$s</xliff:g>) en cours…"</string> @@ -2050,8 +2026,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fichier</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fichiers</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Aucune recommandation de personne pour le partage direct"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Liste des applications"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Cette application n\'a pas été autorisée à effectuer des enregistrements, mais elle pourrait capturer du contenu audio par l\'intermédiaire de cet appareil USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Accueil"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Aucune de vos applications professionnelles ne peut ouvrir ce contenu"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Aucune de vos applications personnelles ne prend en charge ce contenu"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Aucune de vos applications personnelles ne peut ouvrir ce contenu"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Enregistrer ou lire du contenu audio lors des appels téléphoniques"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permet à cette application, lorsqu\'elle est définie comme composeur par défaut, d\'enregistrer ou de lire du contenu audio lors des appels téléphoniques."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"NIP de déverrouillage du réseau associé au module SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"NIP de déverrouillage du sous-ensemble du réseau associé au module SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"NIP de déverrouillage du module SIM professionnel"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"NIP de déverrouillage du module SIM du fournisseur de services"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Code de déverrouillage du module SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Entrer le code PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Entrer le code PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Entrer le code PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Entrer le code PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Entrer le code PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"NIP de déverrouillage du module RUIM pour type de réseau 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"NIP de déverrouillage du module RUIM pour type de réseau 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"NIP de déverrouillage du module RUIM HRPD"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"NIP de déverrouillage pour module RUIM professionnel"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"NIP de déverrouillage du module RUIM du fournisseur de services"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"NIP de déverrouillage du module RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Entrer le code PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Entrer le code PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Entrer le code PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Entrer le code PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Entrer le code PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Entrer le code PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"NIP de déverrouillage SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"NIP de déverrouillage SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"NIP de déverrouillage ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"NIP de déverrouillage IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"NIP de déverrouillage du sous-ensemble du réseau du fournisseur de services"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Demande de déverrouillage du réseau associé au module SIM en cours…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Demande de déverrouillage du sous-ensemble du réseau associé au module SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Demande de déverrouillage du module SIM du fournisseur de services en cours…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Demande de déverrouillage du module SIM professionnel en cours…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Demande de déverrouillage avec le code PUK en cours…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Demande de déverrouillage avec le code PUK en cours…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Demande de déverrouillage avec le code PUK en cours…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Demande de déverrouillage avec le code PUK en cours…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Demande de déverrouillage avec le code PUK en cours…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Demande de déverrouillage du module SIM en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Demande de déverrouillage du module RUIM pour type de réseau 1 en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Demande de déverrouillage du module RUIM pour type de réseau 2 en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Demande de déverrouillage du module RUIM HRPD en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Demande de déverrouillage du module RUIM du fournisseur de services en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Demande de déverrouillage du module RUIM professionnel…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Demande de déverrouillage SPN en cours…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Demande de déverrouillage SP Equivalent Home PLMN en cours…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Demande de déverrouillage ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Demande de déverrouillage IMPI en cours…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Demande de déverrouillage du sous-ensemble du réseau du fournisseur de services en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Demande de déverrouillage du module RUIM en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Demande de déverrouillage avec le code PUK en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Demande de déverrouillage avec le code PUK en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Demande de déverrouillage avec le code PUK en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Demande de déverrouillage avec le code PUK en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Demande de déverrouillage avec le code PUK en cours…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Demande de déverrouillage avec le code PUK en cours…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Échec de la demande de déverrouillage du réseau associé au module SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Échec de la demande de déverrouillage du sous-ensemble du réseau associé au module SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Échec de la demande de déverrouillage du module SIM du fournisseur de services."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Échec de la demande de déverrouillage du module SIM professionnel."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Échec de la demande de déverrouillage du module SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Échec de la demande de déverrouillage du module RUIM pour type de réseau 1."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Échec de la demande de déverrouillage du module RUIM pour type de réseau 2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Échec de la demande de déverrouillage du module RUIM HRPD."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Échec de la demande de déverrouillage du module RUIM professionnel."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Échec de la demande de déverrouillage du module RUIM du fournisseur de services."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Échec de la demande de déverrouillage du module RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Échec du déverrouillage avec le code PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Échec du déverrouillage avec le code PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Échec du déverrouillage avec le code PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Échec du déverrouillage avec le code PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Échec du déverrouillage avec le code PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Échec du déverrouillage avec le code PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Échec du déverrouillage avec le code PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Échec du déverrouillage avec le code PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Échec du déverrouillage avec le code PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Échec du déverrouillage avec le code PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Échec du déverrouillage avec le code PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Échec de la demande de déverrouillage SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Échec de la demande de déverrouillage SP Equivalent Home PLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Échec de la demande de déverrouillage ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Échec de la demande de déverrouillage IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Échec de la demande de déverrouillage du sous-ensemble du réseau du fournisseur de services."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Déverrouillage du réseau associé au module SIM effectué."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Déverrouillage du sous-ensemble du réseau associé au module SIM effectué."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Déverrouillage du module SIM du fournisseur de services effectué."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Déverrouillage du module SIM professionnel effectué."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Déverrouillage du module SIM effectué."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Déverrouillage du module RUIM pour type de réseau 1 effectué."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Déverrouillage du module RUIM pour type de réseau 2 effectué."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Déverrouillage du module RUIM HRPD effectué."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Déverrouillage du module RUIM du fournisseur de services effectué."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Déverrouillage du module RUIM professionnel effectué."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Déverrouillage du module RUIM effectué."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Déverrouillage avec le code PUK effectué."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Déverrouillage avec le code PUK effectué."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Déverrouillage avec le code PUK effectué."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Déverrouillage avec le code PUK effectué."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Déverrouillage avec le code PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Déverrouillage avec le code PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Déverrouillage avec le code PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Déverrouillage avec le code PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Déverrouillage avec le code PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Déverrouillage avec le code PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Déverrouillage avec le code PUK effectué."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Déverrouillage SPN effectué."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Déverrouillage SP Equivalent Home PLMN effectué."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Déverrouillage ICCID effectué."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Déverrouillage IMPI effectué."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Déverrouillage du sous-ensemble du réseau du fournisseur de services effectué."</string> </resources> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 5066289bf356..0a310f87b85c 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"L\'administrateur a mis l\'appareil à disposition pour un usage personnel"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"L\'appareil est géré"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Votre organisation gère cet appareil et peut surveiller le trafic réseau. Appuyez ici pour obtenir plus d\'informations."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Paramètres de localisation modifiés par l\'administrateur"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Appuyez pour afficher les paramètres de localisation."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Des application peuvent accéder à votre position"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Contactez l\'administrateur informatique pour en savoir plus"</string> <string name="country_detector" msgid="7023275114706088854">"Détecteur de pays"</string> <string name="location_service" msgid="2439187616018455546">"Service de localisation"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Service de notification du capteur"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Les données de votre appareil vont être effacées"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Impossible d\'utiliser l\'application d\'administration. Les données de votre appareil vont maintenant être effacées.\n\nSi vous avez des questions, contactez l\'administrateur de votre organisation."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Impression désactivée par <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Débloquez vos applis perso"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Applis seront bloquées demain"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Votre administrateur informatique ne vous autorise pas à mettre en pause votre profil professionnel pendant plus de <xliff:g id="DAYS">%1$d</xliff:g> jours"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Activer le profil professionnel"</string> <string name="me" msgid="6207584824693813140">"Moi"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Options de la tablette"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Options Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Options du téléphone"</string> <string name="global_action_lock" msgid="6949357274257655383">"Verrouillage de l\'écran"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Éteindre"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Marche/Arrêt"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Redémarrer"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Urgences"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Rapport de bug"</string> <string name="global_action_logout" msgid="6093581310002476511">"Fermer la session"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"Accès aux commandes de fournisseur de position géographique supplémentaires"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permet à l\'application d\'accéder à des commandes de localisation supplémentaires offertes par le fournisseur. Elle est ainsi susceptible d\'interférer avec le bon fonctionnement du GPS ou de toute autre source de localisation."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"accéder à la position exacte au premier plan uniquement"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Cette application peut obtenir votre position exacte uniquement lorsqu\'elle s\'exécute au premier plan. Les services de localisation doivent être activés et disponibles sur votre appareil pour que l\'application puisse les utiliser. Ceci peut réduire l\'autonomie de la batterie."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Cette application peut accéder à votre position précise via les services de localisation lorsque vous l\'utilisez. Pour cela, vous devez activer les services de localisation sur votre appareil au préalable. Cela risque de solliciter davantage la batterie."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"accéder à la position approximative au premier plan uniquement"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Cette application peut obtenir votre position approximative uniquement lorsqu\'elle s\'exécute au premier plan. Les services de localisation doivent être activés et disponibles sur votre appareil pour que l\'application puisse les utiliser."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Cette application peut obtenir votre position approximative via les services de localisation lorsque vous l\'utilisez. Pour cela, vous devez activer les services de localisation sur votre appareil au préalable."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"accéder à la position en arrière-plan"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"En plus de l\'accès à la position en premier plan, cette application peut y accéder lorsqu\'elle s\'exécute en arrière-plan."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Cette application peut accéder à votre position à tout moment, y compris lorsque vous ne l\'utilisez pas."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"modifier vos paramètres audio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permet à l\'application de modifier les paramètres audio généraux, tels que le volume et la sortie audio utilisée."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"enregistrer des fichiers audio"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"prendre des photos et enregistrer des vidéos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Cette application peut utiliser l\'appareil photo pour prendre des photos et enregistrer des vidéos à tout moment."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Autoriser une application ou un service à accéder aux caméras système pour prendre des photos et enregistrer des vidéos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Cette application privilégiée ou système peut utiliser une caméra photo système pour prendre des photos et enregistrer des vidéos à tout moment. Pour cela, l\'application doit également disposer de l\'autorisation android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Autoriser une application ou un service à recevoir des rappels liés à l\'ouverture ou à la fermeture de caméras"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Cette application peut recevoir des rappels lors de la fermeture ou de l\'ouverture d\'une caméra (par une application)."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"contrôler le vibreur"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Permet à l\'application de contrôler le vibreur."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permet à l\'application d\'accéder à l\'état du vibreur."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Vérification du contenu actuel"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nouveau périphérique : <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Appuyer pour configurer"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Pour transférer photos et fichiers"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problème avec : <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Appuyez sur la notification pour résoudre le problème"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"La <xliff:g id="NAME">%s</xliff:g> est corrompue. Sélectionnez cette option pour résoudre le problème."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> non compatible"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Cet appareil n\'est pas compatible avec le support \"<xliff:g id="NAME">%s</xliff:g>\". Appuyez ici pour le configurer dans un format accepté."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Cet appareil n\'est pas compatible avec cette <xliff:g id="NAME">%s</xliff:g>. Sélectionnez cette option pour la configurer dans un format accepté."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Cet appareil n\'est pas compatible avec le support \"<xliff:g id="NAME">%s</xliff:g>\"."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Retrait inattendu de mémoire \"<xliff:g id="NAME">%s</xliff:g>\""</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Éjectez le périphérique externe avant de le retirer pour éviter toute perte de contenu"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> supprimé"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Augmenter le volume au dessus du niveau recommandé ?\n\nL\'écoute prolongée à un volume élevé peut endommager vos facultés auditives."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Utiliser le raccourci d\'accessibilité ?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quand le raccourci est activé, appuyez sur les deux boutons de volume pendant trois secondes pour démarrer une fonctionnalité d\'accessibilité."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Activer les fonctionnalités d\'accessibilité ?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Si vous appuyez sur les deux touches de volume pendant quelques secondes, vous activez des fonctionnalités d\'accessibilité. Cela peut affecter le fonctionnement de votre appareil.\n\nFonctionnalités actuellement utilisées :\n<xliff:g id="SERVICE">%1$s</xliff:g>\nPour les modifier, accédez à Paramètres > Accessibilité."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Activer TalkBack ?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Si vous appuyez sur les deux touches de volume pendant quelques secondes, vous activez TalkBack, un lecteur d\'écran très pratique pour les personnes aveugles ou malvoyantes. TalkBack change complètement le fonctionnement de votre appareil.\n\nPour attribuer ce raccourci à une autre fonctionnalité, accédez à Paramètres > Accessibilité."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Activer <xliff:g id="SERVICE">%1$s</xliff:g> ?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Si vous appuyez sur les deux touches de volume pendant quelques secondes, vous activez la fonctionnalité d\'accessibilité <xliff:g id="SERVICE">%1$s</xliff:g>. Cela peut affecter le fonctionnement de votre appareil.\n\nPour attribuer ce raccourci à une autre fonctionnalité, accédez à Paramètres > Accessibilité."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activer"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ne pas activer"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Accorder le contrôle total de votre appareil au service <xliff:g id="SERVICE">%1$s</xliff:g> ?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si vous activez <xliff:g id="SERVICE">%1$s</xliff:g>, votre appareil n\'utilisera pas le verrouillage de l\'écran pour améliorer le chiffrement des données."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Le contrôle total convient aux applications qui répondent à vos besoins d\'accessibilité. Il ne convient pas à la plupart des applications."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Autoriser"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Refuser"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Appuyez sur une fonctionnalité pour commencer à l\'utiliser :"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Choisir les fonctionnalités à utiliser avec le bouton Accessibilité"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Choisir les fonctionnalités à utiliser avec le raccourci des touches de volume"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Le service <xliff:g id="SERVICE_NAME">%s</xliff:g> a été désactivé"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Modifier les raccourcis"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"OK"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utiliser le raccourci"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversion des couleurs"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correction des couleurs"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume appuyées de manière prolongée. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Touches de volume appuyées de manière prolongée. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> désactivé."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Appuyez de manière prolongée sur les deux touches de volume pendant trois secondes pour utiliser <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Choisissez une fonctionnalité à utiliser lorsque vous appuyez sur le bouton Accessibilité :"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Choisissez une fonctionnalité à utiliser avec le geste d\'accessibilité (balayez l\'écran de bas en haut avec deux doigts) :"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Choisissez une fonctionnalité à utiliser avec le geste d\'accessibilité (balayer l\'écran de bas en haut avec trois doigts) :"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Pour changer de fonctionnalité, appuyez de manière prolongée sur le bouton Accessibilité."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Pour changer de fonctionnement, balayez l\'écran vers le haut avec deux doigts et appuyez de manière prolongée."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Pour changer de fonctionnalité, balayez l\'écran vers le haut avec trois doigts et appuyez de manière prolongée."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Agrandissement"</string> <string name="user_switched" msgid="7249833311585228097">"Utilisateur actuel : <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Chargement du profil de <xliff:g id="NAME">%1$s</xliff:g>..."</string> @@ -2050,8 +2026,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fichier</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fichiers</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Aucune personne trouvée pour le partage direct"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Liste des applications"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Cette application n\'a pas reçu l\'autorisation d\'enregistrer des contenus audio, mais peut le faire via ce périphérique USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Accueil"</string> @@ -2073,249 +2048,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"Professionnel"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Vue personnelle"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Vue professionnelle"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Impossible de partager ce contenu avec les applications professionnelles"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"Votre administrateur informatique ne vous autorise pas à partager ce contenu avec les applications de votre profil professionnel"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Impossible d\'ouvrir ce contenu avec les applications professionnelles"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"Votre administrateur informatique ne vous autorise pas à ouvrir ce contenu avec les applications de votre profil professionnel"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Impossible de partager ce contenu avec les applications personnelles"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"Votre administrateur informatique ne vous autorise pas à partager ce contenu avec les applications de votre profil personnel"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Impossible d\'ouvrir ce contenu avec les applications personnelles"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"Votre administrateur informatique ne vous autorise pas à ouvrir ce contenu avec les applications de votre profil personnel"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Profil professionnel en pause"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"Activer"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Enregistrer ou lire du contenu audio lors des appels téléphoniques"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permet à cette application d\'enregistrer ou de lire du contenu audio lors des appels téléphoniques lorsqu\'elle est définie comme clavier par défaut."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"Aucune application professionnelle ne prend en charge ce contenu"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Aucune application professionnelle ne peut ouvrir ce contenu"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Aucune application personnelle ne prend en charge ce contenu"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Aucune application personnelle ne peut ouvrir ce contenu"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Code PIN de déblocage du réseau SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Code PIN de déblocage du sous-ensemble du réseau SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Code PIN de déblocage de la carte SIM d\'entreprise"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Code PIN de déblocage de la carte SIM du fournisseur de services."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Code de déblocage de la carte SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Saisir la clé PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Saisir la clé PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Saisir la clé PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Saisir la clé PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Saisir la clé PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Code PIN de déblocage de la carte RUIM Network1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Code PIN de déblocage de la carte RUIM Network2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Code PIN de déblocage de la carte RUIM HRPD"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Code PIN de déblocage de la carte RUIM d\'entreprise"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Code PIN de déblocage de la carte RUIM du fournisseur de services"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Code PIN de déblocage de la carte RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Saisir la clé PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Saisir la clé PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Saisir la clé PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Saisir la clé PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Saisir la clé PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Saisir la clé PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Code PIN de déblocage SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Code PIN de déblocage SP EHPLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Code de déblocage ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Code PIN de déblocage IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Code PIN de déblocage du sous-réseau du fournisseur de services."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Demande de déblocage du réseau SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Demande de déblocage du sous-ensemble du réseau SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Demande de déblocage de la carte SIM du fournisseur de services…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Demande de déblocage de la carte SIM d\'entreprise…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Demande de déblocage avec la clé PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Demande de déblocage avec la clé PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Demande de déblocage avec la clé PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Demande de déblocage avec la clé PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Demande de déblocage avec la clé PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Demande de déblocage de la carte SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Demande de déblocage de la carte RUIM Network1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Demande de déblocage de la carte RUIM Network2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Demande de déblocage de la carte RUIM HRPD…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Demande de déblocage de la carte RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Demande de déblocage de la carte RUIM d\'entreprise…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Demande de déblocage SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Demande de déblocage SP EHPLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Demande de déblocage ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Demande de déblocage IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Demande de déblocage du sous-réseau du fournisseur de services…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Demande de déblocage de la carte RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Demande de déblocage avec la clé PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Demande de déblocage avec la clé PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Demande de déblocage avec la clé PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Demande de déblocage avec la clé PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Demande de déblocage avec la clé PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Demande de déblocage avec la clé PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Échec de la demande de déblocage du réseau SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Échec de la demande de déblocage du sous-ensemble du réseau SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Échec de la demande de déblocage de la carte SIM du fournisseur de services."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Échec de la demande de déblocage de la carte SIM d\'entreprise."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Échec de la demande de déblocage de la carte SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Échec de la demande de déblocage de la carte RUIM Network1."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Échec de la demande de déblocage de la carte RUIM Network2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Échec de la demande de déblocage de la carte RUIM HRPD."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Échec de la demande de déblocage de la carte RUIM d\'entreprise."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Échec de la demande de déblocage de la carte RUIM du fournisseur de services."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Échec de la demande de déblocage de la carte RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Échec du déblocage avec la clé PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Échec du déblocage avec la clé PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Échec du déblocage avec la clé PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Échec du déblocage avec la clé PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Échec du déblocage avec la clé PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Échec du déblocage avec la clé PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Échec du déblocage avec la clé PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Échec du déblocage avec la clé PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Échec du déblocage avec la clé PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Échec du déblocage avec la clé PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Échec du déblocage avec la clé PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Échec de la demande de déblocage SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Échec de la demande de déblocage SP EHPLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Échec de la demande de déblocage ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Échec de la demande de déblocage IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Échec de la demande de déblocage du sous-réseau du fournisseur de services."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Déblocage du réseau SIM effectué."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Déblocage du sous-ensemble du réseau SIM effectué."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Déblocage de la carte SIM du fournisseur de services effectué."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Déblocage de la carte SIM d\'entreprise effectué."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Déblocage de la carte SIM effectué."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Déblocage de la carte RUIM Network1 effectué."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Déblocage de la carte RUIM Network2 effectué."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Déblocage de la carte RUIM HRPD effectué."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Déblocage de la carte RUIM du fournisseur de services effectué."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Déblocage de la carte RUIM d\'entreprise effectué."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Déblocage de la carte RUIM effectué."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Déblocage avec la clé PUK effectué."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Déblocage avec la clé PUK effectué."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Déblocage avec la clé PUK effectué."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Déblocage avec la clé PUK effectué."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Déblocage avec la clé PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Déblocage avec la clé PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Déblocage avec la clé PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Déblocage avec la clé PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Déblocage avec la clé PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Déblocage avec la clé PUK effectué."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Déblocage avec la clé PUK effectué."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Déblocage SPN effectué."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Déblocage SP EHPLMN effectué."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Déblocage ICCID effectué."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Déblocage IMPI effectué."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Déblocage du sous-réseau du fournisseur de services effectué."</string> </resources> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index fe5a9d66145d..ad3f4789b139 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"O administrador renunciou ao dispositivo para uso persoal"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"O dispositivo está xestionado"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"A túa organización xestiona este dispositivo e pode controlar o tráfico de rede. Toca para obter máis detalles."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"O administrador cambiou a configuración de localización"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Toca para ver a configuración de localización."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"As aplicacións poden acceder á túa localización"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Contacta co teu administrador de TI para obter máis información"</string> <string name="country_detector" msgid="7023275114706088854">"Detector do país"</string> <string name="location_service" msgid="2439187616018455546">"Servizo de localización"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Servizo de notificacións dos sensores"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Borrarase o teu dispositivo"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Non se pode utilizar a aplicación de administración. Borrarase o teu dispositivo.\n\nSe tes preguntas, contacta co administrador da organización."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> desactivou a impresión."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Desbloquea as apps persoais"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"As apps bloquearanse mañá"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"O teu administrador de TI non permite que o teu perfil de traballo se poña en pausa máis de <xliff:g id="DAYS">%1$d</xliff:g> días"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Activar perfil de traballo"</string> <string name="me" msgid="6207584824693813140">"Eu"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcións da tableta"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcións de Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opcións de teléfono"</string> <string name="global_action_lock" msgid="6949357274257655383">"Bloqueo de pantalla"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Apagar"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Acendido e apagado"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Reiniciar"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emerxencia"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Informe de erros"</string> <string name="global_action_logout" msgid="6093581310002476511">"Finalizar a sesión"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acceder a comandos adicionais do provedor de localización"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite á aplicación acceder a comandos adicionais de fornecedor de localizacións. É posible que isto provoque que a aplicación interfira co funcionamento do GPS ou doutras fontes da localización."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"acceder á localización exacta só en primeiro plano"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Esta aplicación pode obter a túa localización exacta só cando se atope en primeiro plano. É necesario activar os servizos de localización e deben estar dispoñibles no teléfono para que a aplicación poida utilizalos. Ademais, poden supoñer un aumento do consumo de batería."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Mentres a utilizas, esta aplicación pode obter a túa localización exacta a través dos servizos de localización. Para facelo, os servizos mencionados deben estar activados no teu dispositivo. Isto pode aumentar o uso da batería."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acceder á localización aproximada só en primeiro plano"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Esta aplicación pode obter a túa localización aproximada, pero só mentres está en primeiro plano. Para que a aplicación poida utilizar os servizos de localización, deben estar activados e dispoñibles no teu dispositivo."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Mentres a utilizas, esta aplicación pode obter a túa localización aproximada a través dos servizos de localización. Para facelo, os servizos mencionados deben estar activados no teu dispositivo."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"acceder á localización en segundo plano"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esta aplicación pode acceder á localización mentres se executa en segundo plano, ademais de acceder á localización en primeiro plano."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esta aplicación pode acceder á localización en calquera momento, aínda que non a esteas utilizando."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"cambiar a configuración de son"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite á aplicación modificar a configuración de audio global, como o volume e que altofalante se utiliza para a saída."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"gravar audio"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"facer fotos e vídeos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Esta aplicación pode utilizar a cámara en calquera momento para sacar fotos e gravar vídeos."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que unha aplicación ou un servizo acceda ás cámaras do sistema para sacar fotos e gravar vídeos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Esta aplicación do sistema con privilexios pode utilizar unha cámara do sistema en calquera momento para tirar fotos e gravar vídeos. Require que a aplicación tamén teña o permiso android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permitir que unha aplicación ou servizo reciba retrochamadas cando se abran ou se pechen dispositivos con cámara."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Esta aplicación pode recibir retrochamadas cando outra aplicación abra ou peche un dispositivo con cámara."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"controlar a vibración"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Permite á aplicación controlar o vibrador."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite que a aplicación acceda ao estado de vibrador"</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Revisando contido actual"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nova <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Toca para configurar"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Para transferir fotos e contidos multimedia"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Produciuse un problema coa <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Toca para solucionalo"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"A <xliff:g id="NAME">%s</xliff:g> está danada. Selecciona para corrixir o problema."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> incompatible"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Este dispositivo non é compatible con esta <xliff:g id="NAME">%s</xliff:g>. Toca para configurala nun formato compatible."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Este dispositivo non é compatible con esta <xliff:g id="NAME">%s</xliff:g>. Selecciona para configurala nun formato compatible."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Este dispositivo non é compatible con: <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Retirouse a <xliff:g id="NAME">%s</xliff:g> de forma inesperada"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Para evitar perder contido, expulsa os dispositivos multimedia antes de quitalos"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Quitouse a <xliff:g id="NAME">%s</xliff:g>"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Queres subir o volume máis do nivel recomendado?\n\nA reprodución de son a un volume elevado durante moito tempo pode provocar danos nos oídos."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Queres utilizar o atallo de accesibilidade?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Cando o atallo está activado, podes premer os dous botóns de volume durante 3 segundos para iniciar unha función de accesibilidade."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Queres activar as funcións de accesibilidade?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Ao manter as dúas teclas de volume premidas durante uns segundos actívanse as funcións de accesibilidade. Esta acción pode cambiar o funcionamento do dispositivo.\n\nFuncións activadas actualmente:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nPodes cambiar as funcións seleccionadas en Configuración > Accesibilidade."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Queres activar TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Ao manter as dúas teclas de volume premidas durante uns segundos actívase TalkBack, un lector de pantalla útil para as persoas cegas ou con visión reducida. TalkBack cambia completamente o funcionamento do dispositivo.\n\nPodes cambiar o uso deste atallo para outra función en Configuración > Accesibilidade."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Queres activar <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ao manter as dúas teclas de volume premidas durante uns segundos actívase <xliff:g id="SERVICE">%1$s</xliff:g>, unha función de accesibilidade. Esta acción pode cambiar o funcionamento do dispositivo.\n\nPodes cambiar o uso deste atallo para outra función en Configuración > Accesibilidade."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activar"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Non activar"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Queres permitir que <xliff:g id="SERVICE">%1$s</xliff:g> poida controlar totalmente o teu dispositivo?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se activas <xliff:g id="SERVICE">%1$s</xliff:g>, o dispositivo non utilizará o teu bloqueo de pantalla para mellorar a encriptación de datos."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"O control total é adecuado para as aplicacións que che axudan coa accesibilidade, pero non para a maioría das aplicacións."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Denegar"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tocar unha función para comezar a utilizala:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Escoller as funcións que queres utilizar co botón Accesibilidade"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Escoller as funcións que queres utilizar co atallo da tecla de volume"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g>: desactivouse"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar atallos"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Feito"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atallo"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de cor"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corrección de cor"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume premidas. Servizo <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activado."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume premidas. Servizo <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desactivado."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Mantén premidas as teclas do volume durante tres segudos para usar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Escolle a función que queres utilizar cando toques o botón Accesibilidade:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Escolle a función que queres usar co xesto de accesibilidade (pasa dous dedos cara arriba desde a parte inferior da pantalla):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Escolle a función que queres usar co xesto de accesibilidade (pasa tres dedos cara arriba desde a parte inferior da pantalla):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Para cambiar de función, mantén premido o botón Accesibilidade."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Para cambiar de función, pasa dous dedos cara arriba pola pantalla e mantén premido."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Para cambiar de función, pasa tres dedos cara arriba pola pantalla e mantén premido."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliación"</string> <string name="user_switched" msgid="7249833311585228097">"Usuario actual <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Cambiando a <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> ficheiros</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> ficheiro</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Non hai persoas recomendadas coas que compartir contido"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lista de aplicacións"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Esta aplicación non está autorizada a realizar gravacións, pero pode capturar audio a través deste dispositivo USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Inicio"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Ningunha aplicación do traballo pode abrir este contido"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Ningunha aplicación persoal admite este contido"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Ningunha aplicación persoal pode abrir este contido"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Gravar ou reproducir audio en chamadas telefónicas"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permite que esta aplicación, cando está asignada como aplicación predeterminada do marcador, grave e reproduza audio en chamadas telefónicas."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN de desbloqueo da rede SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN de desbloqueo do subconxunto da rede SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN de desbloqueo corporativo da SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN de desbloqueo do fornecedor de servizo da SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN de desbloqueo da SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Escribir PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Escribir PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Escribir PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Escribir PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Escribir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN de desbloqueo da RUIM da rede 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN de desbloqueo da RUIM da rede 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN de desbloqueo da rede HRPD"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN de desbloqueo corporativo da RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN de desbloqueo do fornecedor de servizo da RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN de desbloqueo da RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Escribir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Escribir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Escribir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Escribir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Escribir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Escribir PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN de desbloqueo do SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN de desbloqueo de SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN de desbloqueo do ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN de desbloqueo da IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN de desbloqueo do fornecedor de servizo do subconxunto da rede"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Solicitando desbloqueo da rede SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Solicitando desbloqueo do subconxunto da rede SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Solicitando desbloqueo do fornecedor de servizo da SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Solicitando desbloqueo corporativo da SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Solicitando desbloqueo da SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Solicitando desbloqueo da RUIM da rede 1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Solicitando desbloqueo da RUIM da rede 2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Solicitando desbloqueo da rede HRPD…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Solicitando desbloqueo do fornecedor de servizo da RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Solicitando desbloqueo corporativo da RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Solicitando desbloqueo do SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Solicitando desbloqueo de SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Solicitando desbloqueo do ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Solicitando desbloqueo da IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Solicitando desbloqueo do fornecedor de servizo do subconxunto da rede…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Solicitando desbloqueo da RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Solicitando desbloqueo mediante PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Produciuse un erro na solicitude de desbloqueo da rede SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Produciuse un erro na solicitude de desbloqueo do subconxunto da rede SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Produciuse un erro na solicitude de desbloqueo do fornecedor de servizo da SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Produciuse un erro na solicitude de desbloqueo corporativo da SIM."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Produciuse un erro na solicitude de desbloqueo da SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Produciuse un erro na solicitude de desbloqueo da RUIM da rede 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Produciuse un erro na solicitude de desbloqueo da RUIM da rede 2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Produciuse un erro na solicitude de desbloqueo da rede HRPD."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Produciuse un erro na solicitude de desbloqueo corporativo da RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Produciuse un erro na solicitude de desbloqueo do fornecedor de servizo da RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Produciuse un erro na solicitude de desbloqueo da RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Produciuse un erro no desbloqueo mediante PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Produciuse un erro no desbloqueo mediante PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Produciuse un erro no desbloqueo mediante PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Produciuse un erro no desbloqueo mediante PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Produciuse un erro no desbloqueo mediante PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Produciuse un erro no desbloqueo mediante PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Produciuse un erro no desbloqueo mediante PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Produciuse un erro no desbloqueo mediante PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Produciuse un erro no desbloqueo mediante PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Produciuse un erro no desbloqueo mediante PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Produciuse un erro no desbloqueo mediante PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Produciuse un erro na solicitude de desbloqueo do SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Produciuse un erro na solicitude de desbloqueo de SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Produciuse un erro na solicitude de desbloqueo do ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Produciuse un erro na solicitude de desbloqueo da IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Produciuse un erro na solicitude de desbloqueo do fornecedor de servizo do subconxunto da rede."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"O desbloqueo da rede SIM realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"O desbloqueo do subconxunto da rede SIM realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"O desbloqueo do fornecedor de servizo da SIM realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Produciuse un erro no desbloqueo corporativo da SIM."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"O desbloqueo da SIM realizouse correctamente."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Produciuse un erro no desbloqueo da RUIM da rede 1."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"O desbloqueo da RUIM da rede 2 realizouse correctamente."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"O desbloqueo da rede HRPD realizouse correctamente."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Produciuse un erro no desbloqueo do fornecedor de servizo da RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"O desbloqueo corporativo da RUIM realizouse correctamente."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"O desbloqueo da RUIM realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"O desbloqueo mediante PUK realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"O desbloqueo mediante PUK realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"O desbloqueo mediante PUK realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"O desbloqueo mediante PUK realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"O desbloqueo mediante PUK realizouse correctamente."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"O desbloqueo mediante PUK realizouse correctamente."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"O desbloqueo mediante PUK realizouse correctamente."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"O desbloqueo mediante PUK realizouse correctamente."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"O desbloqueo mediante PUK realizouse correctamente."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"O desbloqueo mediante PUK realizouse correctamente."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"O desbloqueo mediante PUK realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"O desbloqueo do SPN realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"O desbloqueo de SP Equivalent Home PLMN realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"O desbloqueo do ICCID realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"O desbloqueo da IMPI realizouse correctamente."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"O desbloqueo do fornecedor de servizo do subconxunto da rede realizouse correctamente."</string> </resources> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index 1baf26b3ecb7..90c23f8d04ff 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"વ્યવસ્થાપકે ડિવાઇસ વ્યક્તિગત ઉપયોગ માટે આપી દીધું છે"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"ઉપકરણ સંચાલિત છે"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"તમારી સંસ્થા આ ઉપકરણનું સંચાલન કરે છે અને નેટવર્ક ટ્રાફિફનું નિયમન કરી શકે છે. વિગતો માટે ટૅપ કરો."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"તમારા વ્યવસ્થાપક દ્વારા સ્થાન સેટિંગ બદલવામાં આવ્યાં"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"તમારા સ્થાન સેટિંગને જોવા માટે ટૅપ કરો."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"ઍપ તમારા સ્થાનને ઍક્સેસ કરી શકે છે"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"વધુ જાણવા માટે તમારા IT વ્યવસ્થાપકનો સંપર્ક કરો"</string> <string name="country_detector" msgid="7023275114706088854">"દેશને ઓળખાવનારી સુવિધા"</string> <string name="location_service" msgid="2439187616018455546">"સ્થાન સેવા"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"સેન્સર નોટિફિકેશન સેવા"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"તમારું ઉપકરણ કાઢી નાખવામાં આવશે"</string> <string name="factory_reset_message" msgid="2657049595153992213">"વ્યવસ્થાપક ઍપનો ઉપયોગ કરી શકાશે નહીં. તમારું ઉપકરણ હવે કાઢી નાખવામાં આવશે.\n\nજો તમને પ્રશ્નો હોય, તો તમારી સંસ્થાના વ્યવસ્થાપકનો સંપર્ક કરો."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> દ્વારા પ્રિન્ટ કરવાનું બંધ કરાયું છે."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"તમારી ખાનગી ઍપને અનબ્લૉક કરો"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"ઍપ આવતીકાલે બ્લૉક કરાશે"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"તમારા IT વ્યવસ્થાપક તમારી કાર્યાલયની પ્રોફાઇલને <xliff:g id="DAYS">%1$d</xliff:g>થી વધુ દિવસ થોભાવી રાખવાની મંજૂરી આપતા નથી"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"કાર્યાલયની પ્રોફાઇલ ચાલુ કરો"</string> <string name="me" msgid="6207584824693813140">"હું"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ટેબ્લેટ વિકલ્પો"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TVના વિકલ્પો"</string> @@ -428,11 +424,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"વધારાના સ્થાન પ્રદાતા આદેશોને ઍક્સેસ કરો"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"એપ્લિકેશનને વધારાના સ્થાન પ્રદાતા આદેશોને ઍક્સેસ કરવાની મંજૂરી આપે છે. આ એપ્લિકેશનને GPS અથવા અન્ય સ્થાન સ્રોતોના ઓપરેશનમાં દખલ કરવાની મંજૂરી આપી શકે છે."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"ફૉરગ્રાઉન્ડમાં ફક્ત ચોક્કસ સ્થાન ઍક્સેસ કરો"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"આ ઍપ ફક્ત ફૉરગ્રાઉન્ડમાંમાં હોય ત્યારે જ તમારું ચોક્કસ સ્થાન મેળવી શકે છે. ઍપ આ સ્થાન સેવાઓનો ઉપયોગ કરી શકે તે માટે તે સેવાઓ ચાલુ કરેલી અને તમારા ડિવાઇસમાં ઉપલબ્ધ હોવી જોઈએ. આ બૅટરી વપરાશ વધારી શકે છે."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ઍપ ઉપયોગમાં હોય તે વખતે સ્થાન સેવાઓમાંથી આ ઍપ તમારું ચોક્કસ સ્થાન મેળવી શકે છે. ઍપ સ્થાન મેળવી શકે તે માટે તમારા ડિવાઇસમાં સ્થાન સેવાઓ ચાલુ કરેલી હોવી જરૂરી છે. આનાથી બૅટરીનો વપરાશ વધી શકે છે."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ફૉરગ્રાઉન્ડમાં ફક્ત અંદાજિત સ્થાન ઍક્સેસ કરો"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"આ ઍપ ફોરગ્રાઉન્ડમાં હોય, ત્યારે જ તે તમારું અંદાજિત સ્થાન મેળવી શકે છે. ઍપ આ સ્થાન સેવાઓનો ઉપયોગ કરી શકે તે માટે તે સેવાઓ ચાલુ કરેલી અને તમારા ડિવાઇસમાં ઉપલબ્ધ હોવી જોઈએ."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ઍપ ઉપયોગમાં હોય તે વખતે સ્થાન સેવાઓમાંથી આ ઍપ તમારું અંદાજિત સ્થાન મેળવી શકે છે. ઍપ સ્થાન મેળવી શકે તે માટે તમારા ડિવાઇસમાં સ્થાન સેવાઓ ચાલુ કરેલી હોવી જરૂરી છે."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"બૅકગ્રાઉન્ડમાં સ્થાન ઍક્સેસ કરો"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"આ ઍપ ફૉરગ્રાઉન્ડમાં સ્થાનને ઍક્સેસ કરવા ઉપરાંત બૅકગ્રાઉન્ડમાં ચાલતી હોય ત્યારે પણ સ્થાનને ઍક્સેસ કરી શકે છે."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"આ ઍપ કોઈપણ સમયે સ્થાનને ઍક્સેસ કરી શકે છે, પછી ભલેને આ ઍપ ઉપયોગમાં ન હોય."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"તમારી ઑડિઓ સેટિંગ્સ બદલો"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"એપ્લિકેશનને વૈશ્વિક ઑડિઓ સેટિંગ્સને સંશોધિત કરવાની મંજૂરી આપે છે, જેમ કે વૉલ્યૂમ અને આઉટપુટ માટે કયા સ્પીકરનો ઉપયોગ કરવો."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ઑડિઓ રેકોર્ડ કરવાની"</string> @@ -447,7 +443,7 @@ <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> <skip /> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"કૅમેરા ડિવાઇસ ચાલુ કે બંધ થવા વિશે કૉલબૅક પ્રાપ્ત કરવાની ઍપ્લિકેશન કે સેવાને મંજૂરી આપો."</string> - <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"જ્યારે કોઈ કૅમેરા ડિવાઇસ (કયા ઍપ્લિકેશન વડે) ખોલવા કે બંધ કરવામાં આવે, ત્યારે આ વિશેષ ઍપ કૉલબૅક પ્રાપ્ત કરી શકે છે."</string> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"જ્યારે કોઈ કૅમેરા ડિવાઇસ (કયા ઍપ્લિકેશન વડે) ખોલવા કે બંધ કરવામાં આવે, ત્યારે આ ઍપ કૉલબૅક પ્રાપ્ત કરી શકે છે."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"વાઇબ્રેશન નિયંત્રિત કરો"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"એપ્લિકેશનને વાઇબ્રેટરને નિયંત્રિત કરવાની મંજૂરી આપે છે."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"ઍપને વાઇબ્રેટર સ્થિતિને ઍક્સેસ કરવાની મંજૂરી આપે છે."</string> @@ -769,7 +765,7 @@ <string name="phoneTypeTtyTdd" msgid="532038552105328779">"TTY TDD"</string> <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"કાર્યાલય મોબાઇલ"</string> <string name="phoneTypeWorkPager" msgid="3748332310638505234">"કાર્ય પેજર"</string> - <string name="phoneTypeAssistant" msgid="757550783842231039">"સહાયક"</string> + <string name="phoneTypeAssistant" msgid="757550783842231039">"Assistant"</string> <string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string> <string name="eventTypeCustom" msgid="3257367158986466481">"કસ્ટમ"</string> <string name="eventTypeBirthday" msgid="7770026752793912283">"જન્મદિવસ"</string> @@ -802,7 +798,7 @@ <string name="orgTypeOther" msgid="5450675258408005553">"અન્ય"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"કસ્ટમ"</string> <string name="relationTypeCustom" msgid="282938315217441351">"કસ્ટમ"</string> - <string name="relationTypeAssistant" msgid="4057605157116589315">"સહાયક"</string> + <string name="relationTypeAssistant" msgid="4057605157116589315">"Assistant"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"ભાઈ"</string> <string name="relationTypeChild" msgid="9076258911292693601">"બાળક"</string> <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"ઘરેલું ભાગીદાર"</string> @@ -1349,13 +1345,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"હાલના કન્ટેન્ટને રિવ્યૂ કરવું"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"નવું <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"સેટ કરવા માટે ટૅપ કરો"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ફોટો અને મીડિયા ટ્રાન્સફર કરવા માટે"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g>ની સમસ્યા"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"ઠીક કરવા માટે ટૅપ કરો"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> દૂષિત છે. સુધારવા માટે પસંદ કરો."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"અસમર્થિત <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"આ ઉપકરણ આ <xliff:g id="NAME">%s</xliff:g> નું સમર્થન કરતું નથી. સમર્થિત ફોર્મેટમાં સેટ કરવા માટે ટૅપ કરો."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"આ ઉપકરણ આ <xliff:g id="NAME">%s</xliff:g> નું સમર્થન કરતું નથી. સમર્થિત ફૉર્મેટમાં સેટ કરવા માટે પસંદ કરો."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> અનપેક્ષિત રીતે દૂર કર્યું"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"કન્ટેન્ટ ગુમાવવાનું ટાળવા માટે મીડિયાને દૂર કરતા પહેલાં બહાર કાઢો"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> કાઢી નાખ્યું"</string> @@ -2086,8 +2086,6 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"કોઈ ઑફિસ માટેની ઍપ આ કન્ટેન્ટ ખોલી શકતી નથી"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"કોઈ વ્યક્તિગત ઍપ આ કન્ટેન્ટને સપોર્ટ કરી શકતી નથી"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"કોઈ વ્યક્તિગત ઍપ આ કન્ટેન્ટ ખોલી શકતી નથી"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ટેલિફોની કૉલમાં ઑડિયો રેકૉર્ડ કરો અથવા ચલાવો"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ડિફૉલ્ટ ડાયલર ઍપ તરીકે સોંપણી કરવામાં આવવા પર આ ઍપને ટેલિફોની કૉલમાં ઑડિયો રેકૉર્ડ કરવાની અથવા ચલાવવાની મંજૂરી આપે છે."</string> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> <skip /> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> diff --git a/core/res/res/values-h480dp/bools.xml b/core/res/res/values-h480dp/bools.xml index 65e3ae6e71ec..7896d9bfe2b1 100644 --- a/core/res/res/values-h480dp/bools.xml +++ b/core/res/res/values-h480dp/bools.xml @@ -16,5 +16,5 @@ --> <resources> - <bool name="sharesheet_show_content_preview">true</bool> + <bool name="resolver_landscape_phone">false</bool> </resources>
\ No newline at end of file diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index c9cbd2600c6f..862f29b4615e 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"एडमिन ने निजी इस्तेमाल के लिए डिवाइस दे दिया है"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"डिवाइस प्रबंधित है"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"आपका संगठन इस डिवाइस का प्रबंधन करता है और वह नेटवर्क ट्रैफ़िक की निगरानी भी कर सकता है. विवरण के लिए टैप करें."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"आपके एडमिन ने जगह की सेटिंग बदली है"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"जगह की सेटिंग देखने के लिए टैप करें."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"ऐप्लिकेशन आपकी जगह की जानकारी ऐक्सेस कर सकते हैं"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"ज़्यादा जानने के लिए अपने आईटी एडमिन से संपर्क करें"</string> <string name="country_detector" msgid="7023275114706088854">"देश की पहचान करने वाली सुविधा"</string> <string name="location_service" msgid="2439187616018455546">"जगह की जानकारी"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"सेंसर से जुड़ी सूचना सेवा"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"आपके डिवाइस को मिटा दिया जाएगा"</string> <string name="factory_reset_message" msgid="2657049595153992213">"एडमिन ऐप्लिकेशन का इस्तेमाल नहीं किया जा सकता. आपके डिवाइस पर मौजूद डेटा अब मिटा दिया जाएगा.\n\nअगर आप कुछ पूछना चाहते हैं तो, अपने संगठन के एडमिन से संपर्क करें."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ने प्रिंटिंग सुविधा बंद कर दी है."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"अपने निजी ऐप अनब्लॉक करें"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"ऐप कल ब्लॉक कर दिए जाएंगे"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"आपका आईटी एडमिन आपकी वर्क प्रोफ़ाइल को <xliff:g id="DAYS">%1$d</xliff:g> दिनों से ज़्यादा रोकने की अनुमति नहीं देता"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"वर्क प्रोफ़ाइल चालू करें"</string> <string name="me" msgid="6207584824693813140">"मैं"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"टैबलेट विकल्प"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV डिवाइस में फ़ोन से जुड़े विकल्प"</string> @@ -233,7 +229,7 @@ <string name="shutdown_confirm" product="default" msgid="136816458966692315">"आपका फ़ोन शट डाउन हो जाएगा."</string> <string name="shutdown_confirm_question" msgid="796151167261608447">"क्या आप शट डाउन करना चाहते हैं?"</string> <string name="reboot_safemode_title" msgid="5853949122655346734">"सुरक्षित मोड में रीबूट करें"</string> - <string name="reboot_safemode_confirm" msgid="1658357874737219624">"क्या आप सुरक्षित मोड में रीबूट करना चाहते हैं? इससे आपके इंस्टॉल किए हुए सभी तृतीय पक्ष ऐप्स अक्षम हो जाएंगे. जब आप फिर से रीबूट करेंगे तो वे पुनर्स्थापित हो जाएंगे."</string> + <string name="reboot_safemode_confirm" msgid="1658357874737219624">"क्या आप सुरक्षित मोड में रीबूट करना चाहते हैं? इससे तीसरे पक्ष के सभी ऐप्लिकेशन बंद हो जाएंगे जो आपने इंस्टॉल किए थे. जब आप फिर से रीबूट करेंगे, तब वे वापस आ जाएंगे."</string> <string name="recent_tasks_title" msgid="8183172372995396653">"हाल के"</string> <string name="no_recent_tasks" msgid="9063946524312275906">"कोई हाल ही के ऐप्स नहीं."</string> <string name="global_actions" product="tablet" msgid="4412132498517933867">"टैबलेट विकल्प"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"फ़ोन विकल्प"</string> <string name="global_action_lock" msgid="6949357274257655383">"स्क्रीन लॉक"</string> <string name="global_action_power_off" msgid="4404936470711393203">"पावर बंद"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"पावर"</string> + <string name="global_action_restart" msgid="4678451019561687074">"रीस्टार्ट करें"</string> <string name="global_action_emergency" msgid="1387617624177105088">"आपातकाल"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"गड़बड़ी की रिपोर्ट"</string> <string name="global_action_logout" msgid="6093581310002476511">"सत्र खत्म करें"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"कुछ और जगह बताने वाले आदेशों तक पहुंच"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ऐप को कुछ और जगह की जानकारी देने वाले आदेशों की पहुंच पाने देता है. इससे ऐप जीपीएस या जगह की जानकारी देने वाले दूसरे स्रोतों के काम में रोक-टोक कर सकता है."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"ऐप्लिकेशन \'जगह की सटीक जानकारी\' सिर्फ़ सामने खुली होने पर ऐक्सेस करे"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"यह ऐप्लिकेशन सिर्फ़ तब आपकी जगह की सटीक जानकारी का इस्तेमाल कर सकता है, जब यह स्क्रीन पर खुला हो. यह ज़रूरी है कि जगह की जानकारी वाली ये सुविधाएं आपके फ़ोन में मौजूद हों और चालू की गई हों, ताकि ऐप्लिकेशन उनका इस्तेमाल कर पाए. ऐसा करने से ज़्यादा बैटरी खर्च हो सकती है."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"जब ऐप्लिकेशन काम कर रहा हो, तब जगह की जानकारी की सुविधा का इस्तेमाल करके, यह आपकी जगह की सटीक जानकारी ऐक्सेस कर सकता है. अपने डिवाइस पर जगह की जानकारी की सेटिंग चालू करें, ताकि ऐप्लिकेशन जगह की जानकारी ऐक्सेस कर सके. इससे बैटरी खर्च बढ़ सकता है."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"अनुमानित जगह की जानकारी सिर्फ़ तब ऐक्सेस करें, जब ऐप्लिकेशन स्क्रीन पर खुला हो"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"यह ऐप्लिकेशन आपकी अनुमानित जगह की जानकारी का इस्तेमाल सिर्फ़ तब कर सकता है, जब यह स्क्रीन पर दिखाई दे रहा हो. यह ज़रूरी है कि आपके डिवाइस में, जगह की जानकारी वाली सुविधाएं हों और उन्हें चालू किया गया हो, ताकि ऐप्लिकेशन उनका इस्तेमाल कर पाए."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"जब ऐप्लिकेशन काम कर रहा हो, तब जगह की जानकारी की सुविधा का इस्तेमाल करके, यह आपकी अनुमानित जगह की जानकारी ऐक्सेस कर सकता है. अपने डिवाइस पर जगह की जानकारी की सेटिंग चालू करें, ताकि ऐप्लिकेशन जगह की जानकारी ऐक्सेस कर सके."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"बैकग्राउंड में जगह की जानकारी ऐक्सेस करना"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"यह ऐप्लिकेशन स्क्रीन पर खुले होने के साथ-साथ बैकग्राउंड में चलते हुए भी जगह की जानकारी ऐक्सेस कर सकता है."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"यह ऐप्लिकेशन जगह की जानकारी का ऐक्सेस किसी भी समय कर सकता है, भले ही आप उसका इस्तेमाल न कर रहे हों."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"अपनी ऑडियो सेटिंग बदलें"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ऐप्स को वैश्विक ऑडियो सेटिंग, जैसे वॉल्यूम और कौन-सा स्पीकर आउटपुट के लिए उपयोग किया गया, संशोधित करने देता है."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ऑडियो रिकॉर्ड करने"</string> @@ -444,12 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"चित्र और वीडियो लें"</string> <string name="permdesc_camera" msgid="1354600178048761499">"यह ऐप्लिकेशन किसी भी समय कैमरे का उपयोग करके चित्र ले सकता है और वीडियो रिकॉर्ड कर सकता है."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"तस्वीरें और वीडियो लेने के लिए ऐप्लिकेशन या सेवा को सिस्टम के कैमरे का ऐक्सेस दें"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> - <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) --> - <skip /> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"यह खास या सिस्टम ऐप्लिकेशन जब चाहे, तस्वीरें लेने और वीडियो रिकॉर्ड करने के लिए सिस्टम के कैमरे का इस्तेमाल कर सकता है. इसके लिए ऐप्लिकेशन को android.permission.CAMERA की अनुमति देना भी ज़रूरी है"</string> + <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"डिवाइस का कैमरे चालू या बंद होने पर, किसी ऐप्लिकेशन या सेवा को कॉलबैक पाने की मंज़ूरी दें."</string> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"यह ऐप्लिकेशन, डिवाइस के कैमरे को चालू या बंद करते समय (किसी ऐप्लिकेशन से) कॉलबैक पा सकता है."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"कंपन (वाइब्रेशन) को नियंत्रित करें"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"ऐप्स को कंपनकर्ता नियंत्रित करने देता है."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"इससे ऐप्लिकेशन, डिवाइस का वाइब्रेटर ऐक्सेस कर पाएगा."</string> @@ -771,7 +762,7 @@ <string name="phoneTypeTtyTdd" msgid="532038552105328779">"टेलीटाइपराइटर (TTY) टीडीडी (TDD)"</string> <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"कार्यालय का मोबाइल"</string> <string name="phoneTypeWorkPager" msgid="3748332310638505234">"कार्यालय का पेजर"</string> - <string name="phoneTypeAssistant" msgid="757550783842231039">"सहायक"</string> + <string name="phoneTypeAssistant" msgid="757550783842231039">"Assistant"</string> <string name="phoneTypeMms" msgid="1799747455131365989">"मल्टीमीडिया मैसेज (एमएमएस)"</string> <string name="eventTypeCustom" msgid="3257367158986466481">"कस्टम"</string> <string name="eventTypeBirthday" msgid="7770026752793912283">"जन्मदिन"</string> @@ -804,7 +795,7 @@ <string name="orgTypeOther" msgid="5450675258408005553">"अन्य"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"कस्टम"</string> <string name="relationTypeCustom" msgid="282938315217441351">"कस्टम"</string> - <string name="relationTypeAssistant" msgid="4057605157116589315">"सहायक"</string> + <string name="relationTypeAssistant" msgid="4057605157116589315">"असिस्टेंट"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"भाई"</string> <string name="relationTypeChild" msgid="9076258911292693601">"बच्चा"</string> <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"हमसफ़र"</string> @@ -1351,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"मौजूदा सामग्री की जाँच की जा रही है"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"नया <xliff:g id="NAME">%s</xliff:g> लगाया गया"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"सेटअप करने के लिए टैप करें"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"फ़ोटो और मीडिया ट्रांसफर करने के लिए"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> में गड़बड़ी है"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"समस्या ठीक करने के लिए टैप करें"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> काम नहीं कर रहा है. ठीक करने के लिए चुनें."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"असमर्थित <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"यह डिवाइस इस <xliff:g id="NAME">%s</xliff:g> का समर्थन नहीं करता है. समर्थित प्रारूप में सेट करने के लिए टैप करें."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"इस डिवाइस पर <xliff:g id="NAME">%s</xliff:g> काम नहीं करता है. काम करने वाले प्रारूप में सेट अप करने के लिए चुनें."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> अप्रत्याशित रूप से निकाला गया"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"पहले मीडिया डिवाइस निकालने का विकल्प चुनें, फिर उसे निकालें ताकि आपकी सामग्री सुरक्षित रहे"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> निकाला गया."</string> @@ -1558,7 +1553,7 @@ <string name="default_audio_route_name_dock_speakers" msgid="1551166029093995289">"डॉक स्पीकर"</string> <string name="default_audio_route_name_hdmi" msgid="5474470558160717850">"HDMI"</string> <string name="default_audio_route_name_headphones" msgid="6954070994792640762">"हेडफ़ोन"</string> - <string name="default_audio_route_name_usb" msgid="895668743163316932">"USB"</string> + <string name="default_audio_route_name_usb" msgid="895668743163316932">"यूएसबी"</string> <string name="default_audio_route_category_name" msgid="5241740395748134483">"सिस्टम"</string> <string name="bluetooth_a2dp_audio_route_name" msgid="4214648773120426288">"ब्लूटूथ ऑडियो"</string> <string name="wireless_display_route_description" msgid="8297563323032966831">"वायरलेस डिसप्ले"</string> @@ -1625,28 +1620,17 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"वॉल्यूम को सुझाए गए स्तर से ऊपर बढ़ाएं?\n\nअत्यधिक वॉल्यूम पर ज़्यादा समय तक सुनने से आपकी सुनने की क्षमता को नुकसान हो सकता है."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"सुलभता शॉर्टकट का इस्तेमाल करना चाहते हैं?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"शॉर्टकट के चालू होने पर, दाेनाें वॉल्यूम बटन (आवाज़ कम या ज़्यादा करने वाले बटन) को तीन सेकंड तक दबाने से, सुलभता सुविधा शुरू हाे जाएगी."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> - <!-- no translation found for accessibility_enable_service_title (3931558336268541484) --> - <skip /> - <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"सुलभता सुविधाएं चालू करना चाहते हैं?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"आवाज़ कम और ज़्यादा करने वाले दोनों बटन को कुछ सेकंड तक दबाकर रखने से सुलभता सुविधाएं चालू हो जाती हैं. ऐसा करने से आपके डिवाइस के काम करने के तरीके में बदलाव हो सकता है.\n\nमौजूदा सुविधाएं:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nआप सेटिंग और सुलभता में जाकर चुनी हुई सुविधाएं बदल सकते हैं."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"टॉकबैक की सुविधा चालू करना चाहते हैं?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"आवाज़ कम और ज़्यादा करने वाले दोनों बटन को कुछ सेकंड तक दबाकर रखने से टॉकबैक चालू हो जाती है. यह एक स्क्रीन रीडर है जो दृष्टिहीन और कम दृष्टि वाले व्यक्तियों के लिए उपयोगी होती है. टॉकबैक की सुविधा चालू करने से आपके डिवाइस के काम करने का तरीका पूरी तरह से बदल जाता है.\n\nआप सेटिंग और सुलभता में जाकर इस शॉर्टकट को किसी दूसरी सुविधा के लिए बदल सकते हैं."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> चालू करना चाहते हैं?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"आवाज़ कम और ज़्यादा करने वाले दोनों बटन को कुछ सेकंड तक दबाकर रखने से <xliff:g id="SERVICE">%1$s</xliff:g> चालू हो जाती है, जो एक सुलभता सुविधा है. ऐसा करने से आपके डिवाइस के काम करने के तरीके में बदलाव हो सकता है.\n\nआप सेटिंग और सुलभता में जाकर इस शॉर्टकट को किसी दूसरी सुविधा के लिए बदल सकते हैं."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"चालू करें"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"चालू न करें"</string> + <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> को अपना डिवाइस पूरी तरह कंट्रोल करने की मंज़ूरी दें?"</string> + <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"अगर आप <xliff:g id="SERVICE">%1$s</xliff:g> को चालू करते हैं, तो डेटा को एन्क्रिप्ट (सुरक्षित) करने के तरीके को बेहतर बनाने के लिए आपका डिवाइस सेट किए गए स्क्रीन लॉक का इस्तेमाल नहीं करेगा."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"पूरी तरह नियंत्रित करने की अनुमति उन ऐप्लिकेशन के लिए ठीक है जो सुलभता से जुड़ी ज़रूरतों के लिए बने हैं, लेकिन ज़्यादातर ऐप्लिकेशन के लिए यह ठीक नहीं है."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रीन को देखें और नियंत्रित करें"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"यह स्क्रीन पर दिखने वाली हर तरह की सामग्री को पढ़ सकता है और उसे दूसरे ऐप्लिकेशन पर दिखा सकता है."</string> @@ -1654,38 +1638,25 @@ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"यह आपके और किसी ऐप्लिकेशन या हार्डवेयर सेंसर के बीच होने वाले इंटरैक्शन को ट्रैक कर सकता है और आपकी तरफ़ से ऐप्लिकेशन के साथ इंटरैक्ट कर सकता है."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"अनुमति दें"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"इंकार करें"</string> - <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> - <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) --> - <skip /> + <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"किसी सुविधा का इस्तेमाल करने के लिए, उस पर टैप करें:"</string> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"सुलभता बटन पर टैप करके, इस्तेमाल करने के लिए सुविधाएं चुनें"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"चुनें कि आवाज़ कम या ज़्यादा करने वाले बटन के शॉर्टकट से आप किन सुविधाओं का इस्तेमाल करना चाहते हैं"</string> + <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> को बंद कर दिया गया है"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"शॉर्टकट में बदलाव करें"</string> - <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) --> - <skip /> + <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"हो गया"</string> <string name="disable_accessibility_shortcut" msgid="5806091378745232383">"शॉर्टकट बंद करें"</string> <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"शॉर्टकट का उपयोग करें"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"रंग बदलने की सुविधा"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"रंग में सुधार करने की सुविधा"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"आवाज़ कम-ज़्यादा करने वाले बटन को दबाकर रखें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को चालू कर दिया गया."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"आवाज़ कम-ज़्यादा करने वाले बटन को दबाकर रखें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को बंद कर दिया गया."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> इस्तेमाल करने के लिए आवाज़ वाले दोनों बटन तीन सेकंड तक दबाकर रखें"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"सुलभता बटन पर टैप करके, इस्तेमाल करने के लिए सुविधा चुनें:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"सुलभता वाले जेस्चर के साथ इस्तेमाल करने के लिए सुविधा चुनें (दो उंगलियों से स्क्रीन पर सबसे नीचे से ऊपर की ओर स्वाइप करें):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"सुलभता वाले जेस्चर के साथ इस्तेमाल करने के लिए सुविधा चुनें (तीन उंगलियों से स्क्रीन पर सबसे नीचे से ऊपर की ओर स्वाइप करें):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"एक सुविधा से दूसरी सुविधा पर जाने के लिए, सुलभता बटन दबाकर रखें."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"एक सुविधा से दूसरी सुविधा पर जाने के लिए, स्क्रीन पर दो उंगलियों से ऊपर की ओर स्वाइप करें और थोड़ी देर तक स्क्रीन पर उंगलियां रखे रहें."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"एक सुविधा से दूसरी सुविधा पर जाने के लिए, स्क्रीन पर तीन उंगलियों से ऊपर की ओर स्वाइप करें और थोड़ी देर तक स्क्रीन पर उंगलियां रखे रहें."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"बड़ा करना"</string> <string name="user_switched" msgid="7249833311585228097">"मौजूदा उपयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> पर स्विच किया जा रहा है…"</string> @@ -2056,8 +2027,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> फ़ाइलें</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> फ़ाइलें</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"शेयर करने के लिए किसी व्यक्ति का सुझाव नहीं दिया गया है"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"ऐप्लिकेशन की सूची"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"इस ऐप्लिकेशन को रिकॉर्ड करने की अनुमति नहीं दी गई है. हालांकि, ऐप्लिकेशन इस यूएसबी डिवाइस से ऐसा कर सकता है."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"होम"</string> @@ -2091,224 +2061,114 @@ <string name="resolver_switch_on_work" msgid="2873009160846966379">"चालू करें"</string> <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"इस सामग्री का इस्तेमाल, ऑफ़िस के काम से जुड़े किसी भी ऐप्लिकेशन पर नहीं किया जा सकता"</string> <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"ऑफ़िस के काम से जुड़े किसी भी ऐप्लिकेशन का इस्तेमाल करके, इस सामग्री को खोला नहीं जा सकता"</string> - <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"इस सामग्री का इस्तेमाल किसी भी निजी ऐप्लिकेशन पर नहीं किया जा सकता"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"इस सामग्री का इस्तेमाल, किसी भी निजी ऐप्लिकेशन पर नहीं किया जा सकता"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"किसी भी निजी ऐप्लिकेशन का इस्तेमाल करके, इस सामग्री को खोला नहीं जा सकता"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"फ़ोन कॉल के दौरान, ऑडियो रिकॉर्ड करने या उसे चलाने की अनुमति"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"डिफ़ॉल्ट डायलर ऐप्लिकेशन के तौर पर असाइन होने पर, इस ऐप्लिकेशन को फ़ोन कॉल के दौरान ऑडियो रिकॉर्ड करने और उसे चलाने की मंज़ूरी मिल जाती है."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"सिम नेटवर्क को अनलॉक करने का पिन"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"सिम नेटवर्क के सबसेट को अनलॉक नहीं किया जा सका"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"कारोबार के लिए इस्तेमाल होने वाले सिम को अनलॉक करने का पिन"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"सिम नेटवर्क को अनलॉक करने का पिन"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"सिम को अनलॉक करने का पिन"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK डालें"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK डालें"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK डालें"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK डालें"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK डालें"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM कार्ड के network1 को अनलॉक करने वाला पिन"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM कार्ड के network2 को अनलॉक करने वाला पिन"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"hrpd नेटवर्क वाले RUIM कार्ड को अनलॉक करने वाला पिन"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"कारोबार के लिए इस्तेमाल होने वाले RUIM कार्ड को अनलॉक करने वाला पिन"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM कार्ड की सेवा देने वाली कंपनी के लॉक को अनलॉक करने का पिन"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM कार्ड को अनलॉक करने का पिन"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK डालें"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK डालें"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK डालें"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK डालें"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK डालें"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK डालें"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"एसपीएन को अनलॉक करने का पिन"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"एसपी इक्वेवेलेंट होम पीएलएमएन को अनलॉक करने का पिन"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"आईसीसीआईडी को अनलॉक करने का पिन"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"आईएमपीआई को अनलॉक करने का पिन"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"नेटवर्क के सबसेट की सेवा देने वाली कंपनी के लॉक को अनलॉक करने का पिन"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"कारोबार के लिए इस्तेमाल होने वाले सिम को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"सिम नेटवर्क के सबसेट को अनलॉक करने का अनुरोध किया जा रहा है …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"सिम नेटवर्क को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"कारोबार के लिए इस्तेमाल होने वाले सिम को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"सिम को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM कार्ड के network1 को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM कार्ड के network2 को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"hrpd नेटवर्क वाले RUIM कार्ड को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM कार्ड की सेवा देने वाली कंपनी के लॉक को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"कारोबार के लिए इस्तेमाल होने वाले RUIM कार्ड को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"एसपीएन को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"एसपी इक्वेवेलेंट होम पीएलएमएन को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"आईसीसीआईडी को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"आईएमपीआई को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"नेटवर्क के सबसेट की सेवा देने वाली कंपनी के लॉक को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM कार्ड को अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK अनलॉक करने का अनुरोध किया जा रहा है…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"सिम नेटवर्क को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"सिम नेटवर्क के सबसेट को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"सिम नेटवर्क को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"कारोबार के लिए इस्तेमाल होने वाले सिम को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"सिम को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM कार्ड के Network1 को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM कार्ड के network2 को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"hrpd नेटवर्क वाले RUIM कार्ड को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"कारोबार के लिए इस्तेमाल होने वाले RUIM कार्ड को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM कार्ड की सेवा देने वाली कंपनी के लॉक को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM कार्ड को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK को अनलॉक नहीं किया जा सका."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK को अनलॉक नहीं किया जा सका."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK को अनलॉक नहीं किया जा सका."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK को अनलॉक नहीं किया जा सका."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK को अनलॉक नहीं किया जा सका."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK को अनलॉक नहीं किया जा सका."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK को अनलॉक नहीं किया जा सका."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK को अनलॉक नहीं किया जा सका."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK को अनलॉक नहीं किया जा सका."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK को अनलॉक नहीं किया जा सका."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK को अनलॉक नहीं किया जा सका."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"एसपीएन को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"एसपी इक्वेवेलेंट होम पीएलएमएन को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"आईसीसीआईडी को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"आईएमपीआई को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"नेटवर्क के सबसेट की सेवा देने वाली कंपनी के लॉक को अनलॉक करने का अनुरोध पूरा नहीं हो सका."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"सिम नेटवर्क को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"सिम नेटवर्क के सबसेट को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"सिम नेटवर्क को अनलॉक किया गया ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"कारोबार के लिए इस्तेमाल होने वाले सिम को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"सिम को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM कार्ड के network1 को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM कार्ड के network2 को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"hrpd नेटवर्क वाले RUIM कार्ड को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM कार्ड की सेवा देने वाली कंपनी के लॉक को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"कारोबार के लिए इस्तेमाल होने वाले RUIM कार्ड को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM कार्ड को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"एसपीएन को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"एसपी इक्वेवेलेंट होम पीएलएमएन को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"आईसीसीआईडी को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"आईएमपीआई को अनलॉक किया गया."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"नेटवर्क के सबसेट की सेवा देने वाली कंपनी के लॉक को अनलॉक किया गया."</string> </resources> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index 54a5cfdec32b..cfd4ff09c1dd 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -193,8 +193,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrator je ustupio uređaj za osobnu upotrebu"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Uređaj je upravljan"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizacija upravlja ovim uređajem i može nadzirati mrežni promet. Dodirnite za pojedinosti."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Postavke lokacije koje je promijenio administrator"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Dodirnite da biste vidjeli svoje postavke lokacije."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikacije mogu pristupiti vašoj lokaciji"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Obratite se svojem IT administratoru da biste saznali više"</string> <string name="country_detector" msgid="7023275114706088854">"Detektor zemlje"</string> <string name="location_service" msgid="2439187616018455546">"Usluga lokacije"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Usluga Obavijesti senzora"</string> @@ -202,14 +202,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će se izbrisati"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Administratorska aplikacija ne može se upotrebljavati. Uređaj će se izbrisati.\n\nAko imate pitanja, obratite se administratoru organizacije."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Ispis je onemogućila aplikacija <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Deblokiranje osob. aplikacija"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Sutra se blokiraju aplikacije"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Vaš IT administrator ne dopušta pauziranje poslovnog profila dulje od <xliff:g id="DAYS">%1$d</xliff:g> dana"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Uključi poslovni profil"</string> <string name="me" msgid="6207584824693813140">"Ja"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcije tabletnog uređaja"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcije Android TV-a"</string> @@ -243,10 +239,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opcije telefona"</string> <string name="global_action_lock" msgid="6949357274257655383">"Zaključavanje zaslona"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Isključi"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Napajanje"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Ponovo pokreni"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Hitne službe"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Izvješće o bugovima"</string> <string name="global_action_logout" msgid="6093581310002476511">"Završi sesiju"</string> @@ -431,11 +425,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"pristup dodatnim naredbama davatelja lokacije"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Omogućuje aplikaciji pristup dodatnim naredbama davatelja usluga lokacije. To može omogućiti aplikaciji ometanje rada GPS-a ili drugih izvora lokacije."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"pristupiti preciznoj lokaciji samo u prednjem planu"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Aplikacija može dobiti vašu točnu lokaciju samo kad je u prednjem planu. Usluge lokacije moraju biti uključene i dostupne na uređaju da bi ih aplikacija mogla upotrebljavati. To može pojačati potrošnju baterije."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Aplikacija može dobiti vašu točnu lokaciju od Usluga lokacije dok se aplikacija koristi. Morate uključiti Usluge lokacije za svoj uređaj da bi aplikacija dohvatila lokaciju. Ovo može povećati potrošnju baterije."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"pristupiti približnoj lokaciji samo u prednjem planu"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Aplikacija može dobiti vašu približnu lokaciju samo kad je u prednjem planu. Usluge lokacije moraju biti uključene i dostupne na uređaju da bi ih aplikacija mogla upotrebljavati."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Aplikacija može dobiti vašu približnu lokaciju od Usluga lokacije dok se aplikacija ne koristi. Morate uključiti Usluge lokacije za svoj uređaj da bi aplikacija dohvatila lokaciju."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"pristup lokaciji u pozadini"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ta aplikacija može pristupiti lokaciji dok se izvodi u pozadini, uz pristup lokaciji u prednjem planu."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplikacija može uvijek pristupiti lokaciji, čak i dok se aplikacija ne koristi."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"promjena postavki zvuka"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Aplikaciji omogućuje izmjenu globalnih postavki zvuka, primjerice glasnoće i zvučnika koji se upotrebljava za izlaz."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"snimanje zvuka"</string> @@ -447,11 +441,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"snimi fotografije i videozapise"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Aplikacija u svakom trenutku može snimati fotografije i videozapise fotoaparatom."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Dopustite aplikaciji ili usluzi da pristupa kamerama sustava radi snimanja fotografija i videozapisa"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ova povlaštena aplikacija ili aplikacija sustava u svakom trenutku može snimati fotografije i videozapise kamerom sustava. Aplikacija mora imati i dopuštenje android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Dopustite aplikaciji ili usluzi da prima povratne pozive o otvaranju ili zatvaranju fotoaparata."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ta aplikacija može primati povratne pozive prilikom otvaranja (putem neke aplikacije) ili zatvaranja fotoaparata."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"upravljanje vibracijom"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Aplikaciji omogućuje nadzor nad vibratorom."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Aplikaciji omogućuje da pristupi stanju vibracije."</string> @@ -1370,13 +1362,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Pregled trenutačnog sadržaja"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Novi medij <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Dodirnite za postavljanje"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Za prijenos fotografija i medija"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Poteškoća s medijem <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Dodirnite za popravak"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Medij je oštećen (<xliff:g id="NAME">%s</xliff:g>). Odaberite da biste ispravili pogrešku."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Nepodržani medij za pohranu <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Uređaj ne podržava ovaj medij (<xliff:g id="NAME">%s</xliff:g>). Dodirnite da biste ga postavili u podržanom formatu."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Ovaj uređaj ne podržava taj medij (<xliff:g id="NAME">%s</xliff:g>). Odaberite da biste postavili u podržanom formatu."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Ovaj uređaj ne podržava ovaj medij (<xliff:g id="NAME">%s</xliff:g>)."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Uređaj <xliff:g id="NAME">%s</xliff:g> iznenada je uklonjen"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Izbacite medij prije uklanjanja kako ne biste izgubili sadržaj"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Medij <xliff:g id="NAME">%s</xliff:g> uklonjen je"</string> @@ -1646,24 +1641,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite li pojačati zvuk iznad preporučene razine?\n\nDugotrajno slušanje glasne glazbe može vam oštetiti sluh."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li upotrebljavati prečac za pristupačnost?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kad je taj prečac uključen, pritiskom na obje tipke za glasnoću na tri sekunde pokrenut će se značajka pristupačnosti."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Želite li uključiti značajke pristupačnosti?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Značajke pristupačnosti uključuju se ako na nekoliko sekundi pritisnete obje tipke za glasnoću. Time se može promijeniti način na koji vaš uređaj radi.\n\nTrenutačne značajke:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nOdabrane značajke možete promijeniti u odjeljku Postavke > Pristupačnost."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Želite li uključiti TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Ako na nekoliko sekundi pritisnete obje tipke za glasnoću, uključuje se TalkBack, čitač zaslona koristan za slijepe i slabovidne osobe. TalkBack potpuno mijenja način na koji vaš uređaj radi.\n\nZnačajku na koju se taj prečac odnosi možete promijeniti u odjeljku Postavke > Pristupačnost."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Želite li uključiti uslugu <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ako na nekoliko sekundi pritisnete obje tipke za glasnoću, uključuje se značajka pristupačnosti <xliff:g id="SERVICE">%1$s</xliff:g>. Time se može promijeniti način na koji vaš uređaj radi.\n\nZnačajku na koju se taj prečac odnosi možete promijeniti u odjeljku Postavke > Pristupačnost."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Uključi"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nemoj uključiti"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Želite li dopustiti usluzi <xliff:g id="SERVICE">%1$s</xliff:g> potpunu kontrolu nad uređajem?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ako uključite <xliff:g id="SERVICE">%1$s</xliff:g>, vaš uređaj neće upotrebljavati zaključavanje zaslona za bolju enkripciju podataka."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Potpuna kontrola prikladna je za aplikacije koje vam pomažu s potrebama pristupačnosti, ali ne i za većinu aplikacija."</string> @@ -1674,10 +1660,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Dopusti"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Odbij"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Dodirnite značajku da biste je počeli koristiti:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Odabir značajki za upotrebu pomoću gumba za Pristupačnost"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Odabir značajki za upotrebu pomoću prečaca tipki za glasnoću"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Usluga <xliff:g id="SERVICE_NAME">%s</xliff:g> je isključena"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Uredi prečace"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gotovo"</string> @@ -1685,23 +1669,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Upotrijebi prečac"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korekcija boje"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za glasnoću. Uključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za glasnoću. Isključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Pritisnite i zadržite tipke za glasnoću na tri sekunde da biste koristili uslugu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Odaberite značajku koju ćete upotrebljavati kada dodirnete gumb za Pristupačnost:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Odaberite za koju će se značajku upotrebljavati pokret pristupačnosti (prelazak s dva prsta prema gore od dna zaslona):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Odaberite za koju će se značajku upotrebljavati pokret pristupačnosti (prelazak s tri prsta prema gore od dna zaslona):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Da biste prešli na neku drugu značajku, dodirnite i zadržite gumb za Pristupačnost."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Da biste prešli na neku drugu značajku, prijeđite s dva prsta prema gore i zadržite."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Da biste prešli na neku drugu značajku, prijeđite s tri prsta prema gore i zadržite."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Povećavanje"</string> <string name="user_switched" msgid="7249833311585228097">"Trenutačni korisnik <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Prebacivanje na korisnika <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2084,8 +2060,7 @@ <item quantity="few"><xliff:g id="FILE_NAME_2">%s</xliff:g> i još <xliff:g id="COUNT_3">%d</xliff:g> datoteke</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> i još <xliff:g id="COUNT_3">%d</xliff:g> datoteka</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Nema preporučenih ljudi za dijeljenje"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Popis aplikacija"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Ta aplikacija nema dopuštenje za snimanje, no mogla bi primati zvuk putem ovog USB uređaja."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Početni zaslon"</string> @@ -2121,222 +2096,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Nijedna poslovna aplikacija ne može otvoriti taj sadržaj"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Nijedna osobna aplikacija ne može podržati taj sadržaj"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Nijedna osobna aplikacija ne može otvoriti taj sadržaj"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Snimanje ili reprodukcija zvuka u telefonskim pozivima"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Kad je ova aplikacija postavljena kao zadana aplikacija za biranje, omogućuje joj snimanje ili reprodukciju zvuka u telefonskim pozivima."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN za otključavanje SIM mreže."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN za otključavanje podskupa SIM mreže"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN za otključavanje poslovnog SIM-a"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN za otključavanje davatelja usluge SIM-a."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN za otključavanje SIM-a"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN za otključavanje RUIM mreže 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN za otključavanje RUIM mreže 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN za otključavanje RUIM hrpd-a"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN za otključavanje poslovnog RUIM-a"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN za otključavanje RUIM davatelja usluga"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN za otključavanje RUIM-a"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Unesite PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN za otključavanje SPN-a"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN za otključavanje SP ekvivalentnog kućnog PLMN-a"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN za otključavanje ICCID-a"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN za otključavanje IMPI-ja"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN za otključavanje davatelja usluge podskupa mreže"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Upućivanje zahtjeva za otključavanje SIM mreže…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Upućivanje zahtjeva za otključavanje podskupa SIM mreže…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Upućivanje zahtjeva za otključavanje davatelja usluge SIM-a…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Upućivanje zahtjeva za otključavanje poslovnog SIM-a…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Upućivanje zahtjeva za otključavanje PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Upućivanje zahtjeva za otključavanje PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Upućivanje zahtjeva za otključavanje PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Upućivanje zahtjeva za otključavanje PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Upućivanje zahtjeva za otključavanje PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Upućivanje zahtjeva za otključavanje SIM-a…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Upućivanje zahtjeva za otključavanje RUIM mreže 1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Upućivanje zahtjeva za otključavanje RUIM mreže 2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Upućivanje zahtjeva za otključavanje RUIM hrpd-a…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Upućivanje zahtjeva za otključavanje RUIM davatelja usluga…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Upućivanje zahtjeva za otključavanje poslovnog RUIM-a…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Upućivanje zahtjeva za otključavanje SPN-a…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Upućivanje zahtjeva za otključavanje SP ekvivalentnog kućnog PLMN-a…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Upućivanje zahtjeva za otključavanje ICCID-a…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Upućivanje zahtjeva za otključavanje IMPI-ja…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Upućivanje zahtjeva za otključavanje davatelja usluge podskupa mreže…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Upućivanje zahtjeva za otključavanje RUIM-a…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Upućivanje zahtjeva za otključavanje PUK-om…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Upućivanje zahtjeva za otključavanje PUK-om…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Upućivanje zahtjeva za otključavanje PUK-om…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Upućivanje zahtjeva za otključavanje PUK-om…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Upućivanje zahtjeva za otključavanje PUK-om…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Upućivanje zahtjeva za otključavanje PUK-om…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Neuspješan zahtjev za otključavanje SIM mreže."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Neuspješan zahtjev za otključavanje podskupa SIM mreže."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Neuspješan zahtjev za otključavanje davatelja usluge SIM-a."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Neuspješan zahtjev za otključavanje poslovnog PIN-a."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Neuspješan zahtjev za otključavanje SIM-a."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Neuspješan zahtjev za otključavanje RUIM mreže 1."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Neuspješan zahtjev za otključavanje RUIM mreže 2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Neuspješan zahtjev za otključavanje RUIM Hrpd-a."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Neuspješan zahtjev za otključavanje poslovnog RUIM-a."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Neuspješan zahtjev za otključavanje RUIM davatelja usluga."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Neuspješan zahtjev za otključavanje RUIM-a."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Neuspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Neuspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Neuspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Neuspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Neuspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Neuspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Neuspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Neuspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Neuspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Neuspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Neuspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Neuspješan zahtjev za otključavanje SPN-a."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Neuspješan zahtjev za otključavanje SP ekvivalentnog kućnog PLMN-a."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Neuspješan zahtjev za otključavanje ICCID-a."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Neuspješan zahtjev za otključavanje IMPI-ja."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Neuspješan zahtjev za otključavanje davatelja usluga podskupa mreže."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM mreža je otključana."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Poskup SIM mreže je otključan."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Davatelj usluge SIM-a je otključan."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Poslovni SIM je otključan."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM je otključan."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM mreža 1 je otključana."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM mreža 2 je otključana."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd je otključan."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM davatelj usluga je otključan."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Poslovni RUIM je otključan."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM je otključan."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Uspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Uspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Uspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Uspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Uspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Uspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Uspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Uspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Uspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Uspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Uspješno otključavanje PUK-om."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN je otključan."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP ekvivalentni kućni PLMN je otključan."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID je otključan."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI je otključan."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Davatelj usluge podskupa mreže je otključan."</string> </resources> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 814284314227..31589dfe926a 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Az adminisztrátor átadta az eszközt személyes használatra"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Felügyelt eszköz"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Ezt az eszközt szervezete kezeli, és lehetséges, hogy a hálózati forgalmat is figyelik. További részletekért koppintson."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"A helybeállításokat módosította a adminisztrátora"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Koppintson a helybeállítások megtekintéséhez."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Az alkalmazások hozzáférhetnek az Ön tartózkodási helyéhez"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"További információt a rendszergazdától kaphat"</string> <string name="country_detector" msgid="7023275114706088854">"Országfelismerő"</string> <string name="location_service" msgid="2439187616018455546">"Helyszolgáltatás"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Szenzoros értesítési szolgáltatás"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"A rendszer törölni fogja eszközét"</string> <string name="factory_reset_message" msgid="2657049595153992213">"A rendszergazdai alkalmazás nem használható. A rendszer most törli az eszközt.\n\nKérdéseivel forduljon szervezete rendszergazdájához."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"A(z) <xliff:g id="OWNER_APP">%s</xliff:g> letiltotta a nyomtatást."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"A személyes appok feloldása"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Appok feloldása holnap"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Rendszergazdája nem engedélyezi, hogy a munkaprofil <xliff:g id="DAYS">%1$d</xliff:g> napnál tovább szüneteltetve legyen"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Munkaprofil bekapcsolása"</string> <string name="me" msgid="6207584824693813140">"Saját"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Táblagép beállításai"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV beállításai"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Telefonbeállítások"</string> <string name="global_action_lock" msgid="6949357274257655383">"Képernyő lezárása"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Kikapcsolás"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Kikapcsolás"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Újraindítás"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Segélyhívás"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Programhiba bejelentése"</string> <string name="global_action_logout" msgid="6093581310002476511">"Munkamenet befejezése"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"további helyszolgáltatói parancsok elérése"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Lehetővé teszi az alkalmazás számára további helyszolgáltatói parancsok elérését. Ezáltal az alkalmazás beavatkozhat a GPS vagy más helyforrások működésébe."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"pontos helyadatokhoz való hozzáférés csak előtérben"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ez az alkalmazás csak akkor férhet hozzá az eszköz pontos helyadataihoz, amikor az előtérben fut. Az alkalmazás csak akkor használhatja a helyszolgáltatásokat, ha be vannak kapcsolva, és hozzáférhetők az eszköz számára. Ez növelheti az akkumulátorhasználatot."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ez az alkalmazás megkaphatja a pontos tartózkodási helyet a helyszolgáltatásoktól, amikor használatban van. Csak akkor juthat hozzá a tartózkodási helyhez, ha a helyszolgáltatások be vannak kapcsolva az eszközön. Ez növelheti az akkumulátorhasználatot."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"megközelítőleges helyadatokhoz való hozzáférés csak előtérben"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ez az alkalmazás csak akkor férhet hozzá az eszköz megközelítőleges helyadataihoz, amikor az előtérben fut. Az alkalmazás csak akkor használhatja a helyszolgáltatásokat, ha be vannak kapcsolva, és hozzáférhetők az eszköz számára."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ez az alkalmazás megkaphatja a hozzávetőleges tartózkodási helyet a helyszolgáltatásoktól, amikor használatban van. Csak akkor juthat hozzá a tartózkodási helyhez, ha a helyszolgáltatások be vannak kapcsolva az eszközön."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"Hozzáférés a helyadatokhoz a háttérben"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ez az alkalmazás nem csak akkor férhet hozzá a helyadatokhoz, amikor az előtérben van, hanem akkor is, amikor a háttérben fut."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ez az alkalmazás bármikor hozzáférhet a helyadatokhoz – még akkor is, ha nincs használatban."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"hangbeállítások módosítása"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Lehetővé teszi az alkalmazás számára az általános hangbeállítások, például a hangerő és a használni kívánt kimeneti hangszóró módosítását."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"hanganyag rögzítése"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"fotók és videók készítése"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Az alkalmazás a kamera használatával bármikor készíthet fényképeket és rögzíthet videókat."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"A rendszerkamerákhoz való hozzáférés, illetve képek és videók rögzítésének engedélyezése alkalmazás vagy szolgáltatás számára"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"A rendszerkamera használatával ez az előnyben részesített vagy rendszeralkalmazás bármikor készíthet fényképeket és videókat. Az alkalmazásnak az „android.permission.CAMERA” engedéllyel is rendelkeznie kell."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Visszahívás fogadásának engedélyezése alkalmazás vagy szolgáltatás számára, ha a kamerákat megnyitják vagy bezárják."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ez az alkalmazás fogadhat visszahívásokat bármelyik kamera (adott alkalmazás általi) megnyitásakor vagy bezárásakor."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"rezgés szabályozása"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Lehetővé teszi az alkalmazás számára a rezgés vezérlését."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Lehetővé teszi az alkalmazás számára a rezgés állapotához való hozzáférést."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Az aktuális tartalom ellenőrzése"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Új <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Koppintson ide a beállításhoz"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Fotók és más tartalmak átviteléhez"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Probléma a következővel: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Koppintson a javításhoz"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"A(z) <xliff:g id="NAME">%s</xliff:g> sérült. Válassza ki a javításhoz."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Nem támogatott <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Ez az eszköz nem támogatja ezt a(z) <xliff:g id="NAME">%s</xliff:g> eszközt. Koppintson rá a támogatott formátumban való beállításhoz."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Ez az eszköz nem támogatja a(z) <xliff:g id="NAME">%s</xliff:g> nevű alkalmazást. Válassza ki a támogatott formátumú beállításhoz."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Ez az eszköz nem támogatja a következőt: <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"A(z) <xliff:g id="NAME">%s</xliff:g> váratlanul eltávolítva"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"A tartalomvesztés elkerülése érdekében az eltávolítás előtt előbb hajtsa végre az eszköz kiadását"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> eltávolítva"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Az ajánlott szint fölé szeretné emelni a hangerőt?\n\nHa hosszú időn át teszi ki magát nagy hangerőnek, azzal károsíthatja a hallását."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Szeretné használni a Kisegítő lehetőségek billentyűparancsot?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Ha a gyorsparancs aktív, akkor a két hangerőgomb három másodpercig tartó együttes lenyomásával kisegítő funkciót indíthat el."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Bekapcsolja a kisegítő lehetőségeket?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"A kisegítő lehetőségek bekapcsolásához tartsa nyomva néhány másodpercig mindkét hangerőgombot. Ez hatással lehet az eszköz működésére.\n\nJelenlegi funkciók:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nA kiválasztott funkciókat a Beállítások > Kisegítő lehetőségek pontban módosíthatja."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Bekapcsolja a TalkBack funkciót?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Tartsa nyomva néhány másodpercig mindkét hangerőgombot a TalkBack bekapcsolásához. A TalkBack képernyőolvasó a vak vagy gyengénlátó személyek számára hasznos. A TalkBack teljesen megváltoztatja az eszköz működését.\n\nEzt a gyorsparancsot a Beállítások > Kisegítő lehetőségek pontban módosíthatja másik funkció használatára."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Bekapcsolja a következőt: <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"A(z) <xliff:g id="SERVICE">%1$s</xliff:g> kisegítő lehetőség bekapcsolásához tartsa nyomva néhány másodpercig mindkét hangerőgombot. Ez hatással lehet az eszköz működésére.\n\nEzt a gyorsparancsot a Beállítások > Kisegítő lehetőségek pontban módosíthatja másik funkció használatára."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Bekapcsolás"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nem kapcsolom be"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Teljes körű vezérlést biztosít eszköze felett a(z) <xliff:g id="SERVICE">%1$s</xliff:g> szolgáltatás számára?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ha engedélyezi a(z) <xliff:g id="SERVICE">%1$s</xliff:g> szolgáltatást, az eszköz nem fogja használni a képernyőzárat az adattitkosítás növelése érdekében."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"A teljes vezérlés indokolt olyan alkalmazásoknál, amelyek kisegítő lehetőségeket nyújtanak, a legtöbb alkalmazásnál azonban nem."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Engedélyezés"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tiltás"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Koppintson valamelyik funkcióra a használatához:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Kiválaszthatja a Kisegítő lehetőségek gombbal használni kívánt funkciókat"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Kiválaszthatja a hangerőgombbal használni kívánt funkciókat"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kikapcsolva"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Gyorsparancsszerkesztés"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Kész"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Billentyűparancs használata"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Színek invertálása"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Színkorrekció"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Nyomva tartotta a hangerőgombokat. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> bekapcsolva."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Nyomva tartotta a hangerőgombokat. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kikapcsolva."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"A(z) <xliff:g id="SERVICE_NAME">%1$s</xliff:g> használatához tartsa lenyomva három másodpercig a két hangerőgombot"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Válassza ki a Kisegítő lehetőségek gombra koppintáskor használni kívánt funkciót:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Válassza ki a kisegítő kézmozdulattal (felfelé csúsztatás két ujjal a képernyő aljáról) használni kívánt funkciót:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Válassza ki a kisegítő kézmozdulattal (felfelé csúsztatás három ujjal a képernyő aljáról) használni kívánt funkciót:"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"A funkciók közötti váltáshoz tartsa lenyomva a Kisegítő lehetőségek gombot."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"A funkciók közötti váltáshoz csúsztassa felfelé két ujját, és ne emelje fel őket a képernyőről."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"A funkciók közötti váltáshoz csúsztassa felfelé három ujját, és ne emelje fel őket a képernyőről."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Nagyítás"</string> <string name="user_switched" msgid="7249833311585228097">"<xliff:g id="NAME">%1$s</xliff:g> az aktuális felhasználó."</string> <string name="user_switching_message" msgid="1912993630661332336">"Átváltás erre: <xliff:g id="NAME">%1$s</xliff:g>..."</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fájl</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> fájl</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Nincsenek ajánlott személyek a megosztáshoz"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Alkalmazások listája"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Ez az alkalmazás nem rendelkezik rögzítési engedéllyel, de ezzel az USB-eszközzel képes a hangfelvételre."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Kezdőképernyő"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Munkahelyi alkalmazásokkal nem nyitható meg ez a tartalom"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"A személyes alkalmazások nem támogatják ezt a tartalmat"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Személyes alkalmazásokkal nem nyitható meg ez a tartalom"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Audiotartalmak felvétele és lejátszása telefonhívások közben"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Lehetővé teszi ennek az alkalmazásnak audiotartalmak felvételét és lejátszását telefonhívások közben, amennyiben az alkalmazás alapértelmezett tárcsázóalkalmazásként van kijelölve."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Hálózati SIM feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Hálózati SIM alkészletének feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Vállalati SIM feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Szolgáltatói SIM feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK-kód megadása"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK-kód megadása"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK-kód megadása"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK-kód megadása"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK-kód megadása"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM Network 1 feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM Network 2 feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM HRPD feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Vállalati RUIM feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM-szolgáltató feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK-kód megadása"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK-kód megadása"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK-kód megadása"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK-kód megadása"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK-kód megadása"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK-kód megadása"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Szolgáltatóival egyenértékű otthoni PLMN feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Szolgáltató hálózati alkészletének feloldó PIN-kódja"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Hálózati SIM feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Hálózati SIM alkészletének feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Szolgáltatói SIM feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Vállalati SIM feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK-kód általi feloldás kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK-kód általi feloldás kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK-kód általi feloldás kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK-kód általi feloldás kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK-kód általi feloldás kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"A RUIM Network 1 feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"A RUIM network 2 feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM HRPD feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM-szolgáltató feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Vállalati RUIM feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Szolgáltatóival egyenértékű otthoni PLMN feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Szolgáltató hálózati alkészlete feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM feloldásának kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK-kód általi feloldás kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK-kód általi feloldás kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK-kód általi feloldás kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK-kód általi feloldás kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK-kód általi feloldás kérelmezése…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK-kód általi feloldás kérelmezése…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Sikertelen volt a hálózati SIM feloldási kérelme."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Sikertelen volt a hálózati SIM alkészletének feloldási kérelme."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Sikertelen volt a szolgáltatói SIM feloldási kérelme."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Sikertelen volt a vállalati SIM feloldási kérelme."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Sikertelen volt a SIM feloldási kérelme."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Sikertelen volt a RUIM Network 1 feloldási kérelme."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Sikertelen volt a RUIM Network 2 feloldási kérelme."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Sikertelen volt a RUIM HRPD feloldási kérelme."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Sikertelen volt a vállalati RUIM feloldási kérelme."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Sikertelen volt a RUIM-szolgáltató feloldási kérelme."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Sikertelen volt a RUIM feloldási kérelme."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Nem sikerült a feloldás a PUK-kód használatával"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Nem sikerült a feloldás a PUK-kód használatával"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Nem sikerült a feloldás a PUK-kód használatával"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Nem sikerült a feloldás a PUK-kód használatával"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Nem sikerült a feloldás a PUK-kód használatával"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Nem sikerült a feloldás a PUK-kód használatával"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Nem sikerült a feloldás a PUK-kód használatával"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Nem sikerült a feloldás a PUK-kód használatával"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Nem sikerült a feloldás a PUK-kód használatával"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Nem sikerült a feloldás a PUK-kód használatával"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Nem sikerült a feloldás a PUK-kód használatával"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Sikertelen volt az SPN feloldási kérelme."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Sikertelen volt a szolgáltatóival egyenértékű otthoni PLMN feloldási kérelme."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Sikertelen volt az ICCID feloldási kérelme."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Sikertelen volt az IMPI feloldási kérelme."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Sikertelen volt a szolgáltató hálózati alkészletének feloldási kérelme."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Sikerült a hálózati SIM feloldása."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Sikerült a hálózati SIM alkészletének feloldása."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Sikerült a szolgáltatói SIM feloldása."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Sikerült a vállalati SIM feloldása."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Sikerült a SIM feloldása."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Sikerült a RUIM Network 1 feloldása."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Sikerült a RUIM Network 2 feloldása."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Sikerült a RUIM HRPD feloldása."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Sikerült a RUIM-szolgáltató feloldása."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Sikerült a vállalati RUIM feloldása."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Sikerült a RUIM feloldása."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Sikerült a feloldás a PUK-kód használatával."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Sikerült a feloldás a PUK-kód használatával."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Sikerült a feloldás a PUK-kód használatával."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Sikerült a feloldás a PUK-kód használatával."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Sikerült a feloldás a PUK-kód használatával."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Sikerült a feloldás a PUK-kód használatával."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Sikerült a feloldás a PUK-kód használatával."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Sikerült a feloldás a PUK-kód használatával."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Sikerült a feloldás a PUK-kód használatával."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Sikerült a feloldás a PUK-kód használatával."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Sikerült a feloldás a PUK-kód használatával."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Sikerült az SPN feloldása."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Sikerült a szolgáltatóival egyenértékű otthoni PLMN feloldása."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Sikerült az ICCID feloldása."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Sikerült az IMPI feloldása."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Sikerült a szolgáltató hálózati alkészletének feloldása."</string> </resources> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index d1cb677cca17..85e2a982607f 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Ադմինիստրատորը տրամադրել է սարքը անձնական օգտագործման համար"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Սարքը կառավարվում է"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Ձեր կազմակերպությունը կառավարում է այս սարքը և կարող է վերահսկել ցանցի թրաֆիկը: Հպեք՝ մանրամասները դիտելու համար:"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Տեղադրության կարգավորումները փոփոխվել են ձեր ադմինիստրատորի կողմից։"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Հպեք՝ ձեր տեղադրության կարգավորումները տեսնելու համար։"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Հավելվածներին կարող են հասանելի լինել ձեր գտնվելու վայրի մասին տվյալները"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Ավելին իմանալու համար դիմեք ձեր ՏՏ ադմինիստրատորին։"</string> <string name="country_detector" msgid="7023275114706088854">"Երկրի որոշում"</string> <string name="location_service" msgid="2439187616018455546">"Տեղորոշման ծառայություն"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Տվիչների ծանուցումների մշակման ծառայություն"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Ձեր սարքը ջնջվելու է"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Հնարավոր չէ օգտագործել ադմինիստրատորի հավելվածը։ Ձեր սարքից բոլոր տվյալները կջնջվեն։\n\nՀարցեր ունենալու դեպքում դիմեք ձեր կազմակերպության ադմինիստրատորին։"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Տպումն անջատված է <xliff:g id="OWNER_APP">%s</xliff:g> հավելվածի կողմից։"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Արգելաբացեք անձնական հավելվածները"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Հավելվածները վաղը կարգելափակվեն"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Ձեր ՏՏ ադմինիստրատորը չի թույլատրում <xliff:g id="DAYS">%1$d</xliff:g> օրից ավել դադարեցնել աշխատանքային պրոֆիլը։"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Միացնել աշխատանքային պրոֆիլը"</string> <string name="me" msgid="6207584824693813140">"Իմ"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Պլանշետի ընտրանքները"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV-ի կարգավորումներ"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Հեռախոսի ընտրանքներ"</string> <string name="global_action_lock" msgid="6949357274257655383">"Էկրանի կողպում"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Անջատել"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Սնուցման կոճակ"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Վերագործարկել"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Շտապ կանչ"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Վրիպակի զեկույց"</string> <string name="global_action_logout" msgid="6093581310002476511">"Ավարտել աշխատաշրջանը"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"օգտագործել տեղադրություն տրամադրող հավելվյալ հրամաններ"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ծրագրին թույլ է տալիս օգտագործել տեղադրության մասին տվյալների աղբյուրների կառավարման լրացուցիչ հրահանգներ: Սա կարող է ծրագրին թույլ տալ միջամտել GPS-ի կամ տեղադրության մասին տվյալների այլ աղբյուրների գործառույթներին:"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"Տեղադրության ճշգրիտ տվյալների հասանելիություն միայն ֆոնային ռեժիմում"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Հավելվածը կարող է ստանալ ձեր տեղադրության տվյալները ակտիվ ռեժիմում։ Տեղորոշման ծառայությունները պետք է միացված և հասանելի լինեն ձեր սարքում, որպեսզի հավելվածը կարողանա օգտագործել դրանք։ Սա կարող է արագացնել մարտկոցի լիցքի սպառումը։"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Երբ հավելվածն ակտիվ է, այն կարող է տեղորոշման ծառայություններից ստանալ ձեր ճշգրիտ տեղադրության տվյալները։ Որպես նախապայման՝ ձեր սարքի տեղորոշման ծառայությունները պետք է միացված լինեն։ Դա կարող է ավելի արագ սպառել մարտկոցի լիցքը։"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"տեղադրության մոտավոր տվյալների հասանելիություն միայն ակտիվ ռեժիմում"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Հավելվածը կարող է ստանալ ձեր մոտավոր տեղադրության տվյալները ակտիվ ռեժիմում։ Տեղորոշման ծառայությունները պետք է միացված և հասանելի լինեն ձեր սարքում, որպեսզի հավելվածը կարողանա օգտագործել դրանք։"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Երբ հավելվածն ակտիվ է, այն կարող է տեղորոշման ծառայություններից ստանալ ձեր մոտավոր տեղադրության տվյալները։ Որպես նախապայման՝ ձեր սարքի տեղորոշման ծառայությունները պետք է միացված լինեն։"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"տեղադրության մասին տվյալների հասանելիություն ֆոնային ռեժիմում"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Այս հավելվածը ինչպես ակտիվ, այնպես էլ ֆոնային ռեժիմում աշխատելիս կարող է տեսնել տեղադրության տվյալները։"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Այս հավելվածը ցանկացած ժամանակ կարող է տեսնել տեղադրության տվյալները, նույնիսկ երբ այն ակտիվ չէ։"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"փոխել ձեր աուդիո կարգավորումները"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Թույլ է տալիս հավելվածին փոփոխել ձայնանյութի գլոբալ կարգավորումները, ինչպես օրինակ` ձայնը և թե որ խոսափողն է օգտագործված արտածման համար:"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ձայնագրել աուդիո ֆայլ"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"լուսանկարել և տեսանկարել"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Այս հավելվածը կարող է ցանկացած պահի լուսանկարել և տեսագրել՝ օգտագործելով տեսախցիկը:"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Թույլատրել որևէ հավելվածի կամ ծառայության օգտագործել համակարգի տեսախցիկները՝ լուսանկարելու և տեսանկարելու համար"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Այս արտոնյալ կամ համակարգային հավելվածը կարող է ցանկացած պահի լուսանկարել և տեսագրել՝ օգտագործելով համակարգի տեսախցիկները։ Հավելվածին նաև անհրաժեշտ է android.permission.CAMERA թույլտվությունը։"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Թույլատրել հավելվածին կամ ծառայությանը հետզանգեր ստանալ՝ տեսախցիկների բացվելու և փակվելու դեպքում։"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Այս հավելվածը կարող է հետզանգեր ստանալ՝ ցանկացած տեսախցիկի բացվելու (կնշվի բացող հավելվածը) և փակվելու դեպքում։"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"կառավարել թրթռումը"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Թույլ է տալիս հավելվածին կառավարել թրթռոցը:"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Հավելվածին թույլ է տալիս օգտագործել սարքի թրթռալու ռեժիմը։"</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Բովանդակության ստուգում"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Նոր հիշասարք (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Հպեք՝ կարգավորելու համար"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Լուսանկարներ և մեդիա ֆայլեր տեղափոխելու համար"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> հիշասարքի հետ կապված խնդիր կա"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Հպեք՝ շտկելու համար"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g>-ը վնասված է: Ընտրեք՝ շտկելու համար:"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Չապահովվող <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Այս սարքը չի աջակցում այս <xliff:g id="NAME">%s</xliff:g>-ը: Հպեք՝ աջակցվող ձևաչափով կարգավորելու համար:"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Այս սարքը չի աջակցում այս <xliff:g id="NAME">%s</xliff:g>-ը: Ընտրեք՝ աջակցվող ձևաչափով կարգավորելու համար:"</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Սարքը չի աջակցում այս <xliff:g id="NAME">%s</xliff:g>ը։"</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g>-ը հեռացվել է առանց անջատելու"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Տվյալներ չկորցնելու համար կրիչը հեռացնելուց առաջ անջատեք այն"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> հիշասարքը հեռացվել է"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ձայնը բարձրացնե՞լ խորհուրդ տրվող մակարդակից ավել:\n\nԵրկարատև բարձրաձայն լսելը կարող է վնասել ձեր լսողությունը:"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Օգտագործե՞լ Մատչելիության դյուրանցումը։"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Հատուկ գործառույթն օգտագործելու համար սեղմեք և 3 վայրկյան սեղմած պահեք ձայնի ուժգնության երկու կոճակները, երբ գործառույթը միացված է:"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Միացնե՞լ հատուկ գործառույթները"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Ձայնի կարգավորման երկու կոճակները մի քանի վայրկյան սեղմած պահելով կմիացնեք հատուկ գործառույթները։ Դրա արդյունքում սարքի աշխատաեղանակը կարող է փոխվել։\n\nԸնթացիկ գործառույթներ՝\n<xliff:g id="SERVICE">%1$s</xliff:g>\nԸնտրված գործառույթները փոխելու համար անցեք Կարգավորումներ > Հատուկ գործառույթներ։"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Միացնե՞լ TalkBack-ը"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Ձայնի կարգավորման երկու կոճակները մի քանի վայրկյան սեղմած պահելով կմիացնեք TalkBack-ը, որը էկրանի ընթերցիչ է։ Այն օգտակար է կույր և տեսողական խնդիրներ ունեցող մարդկանց համար։ TalkBack-ն ամբողջությամբ կփոխի սարքի աշխատաեղանակը։\n\nԱյս դյուրանցումը մեկ այլ գործառույթով փոխելու համար անցեք Կարգավորումներ > Հատուկ գործառույթներ։"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Միացնե՞լ <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությունը"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ձայնի կարգավորման երկու կոճակները մի քանի վայրկյան սեղմած պահելով կմիացնեք <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությունը, որը հատուկ գործառույթ է։ Դրա արդյունքում սարքի աշխատաեղանակը կարող է փոխվել։\n\nԱյս դյուրանցումը մեկ այլ գործառույթով փոխելու համար անցեք Կարգավորումներ > Հատուկ գործառույթներ։"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Միացնել"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Չմիացնել"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Թույլատրե՞լ <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությանը կառավարել ձեր սարքը"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Եթե միացնեք <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությունը, ձեր սարքը չի օգտագործի էկրանի կողպումը՝ տվյալների գաղտնագրումը բարելավելու համար:"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Ամբողջական վերահսկումն անհրաժեշտ է միայն այն հավելվածներին, որոնք օգնում են ձեզ հատուկ գործառույթներից օգտվելիս։"</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Թույլատրել"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Մերժել"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ընտրեք՝ որ գործառույթն օգտագործել"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Ընտրեք գործառույթները, որոնք կբացվեն «Հատուկ գործառույթներ» կոճակի միջոցով"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Ընտրեք գործառույթները, որոնք կբացվեն ձայնի կարգավորման կոճակի միջոցով"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ծառայությունն անջատված է"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Փոփոխել դյուրանցումները"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Պատրաստ է"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Օգտագործել դյուրանցումը"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Գունաշրջում"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Գունաշտկում"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ձայնի կարգավորման կոճակները սեղմվեցին։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունը միացավ։"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ձայնի կարգավորման կոճակները սեղմվեցին։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունն անջատվեց։"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"«<xliff:g id="SERVICE_NAME">%1$s</xliff:g>» ծառայությունն օգտագործելու համար սեղմեք և 3 վայրկյան պահեք ձայնի ուժգնության երկու կոճակները"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Ընտրեք գործառույթը, որը կգործարկվի «Հատուկ գործառույթներ» կոճակին հպելու դեպքում՝"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Ընտրեք գործառույթը, որը կգործարկվի հատուկ գործառույթների ժեստը (երկու մատը էկրանի ներքևից սահեցրեք վերև) անելու դեպքում՝"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Ընտրեք գործառույթը, որը կգործարկվի հատուկ գործառույթների ժեստը (երեք մատը էկրանի ներքևից սահեցրեք վերև) անելու դեպքում՝"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Մի գործառույթից մյուսին անցնելու համար հպեք «Հատուկ գործառույթներ» կոճակին և պահեք։"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Մի գործառույթից մյուսին անցնելու համար երկու մատը սահեցրեք վերև և պահեք։"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Մի գործառույթից մյուսին անցնելու համար երեք մատը սահեցրեք վերև և պահեք։"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Խոշորացում"</string> <string name="user_switched" msgid="7249833311585228097">"Ներկայիս օգտատերը <xliff:g id="NAME">%1$s</xliff:g>:"</string> <string name="user_switching_message" msgid="1912993630661332336">"Փոխարկվում է <xliff:g id="NAME">%1$s</xliff:g>-ին..."</string> @@ -2050,8 +2026,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> ֆայլ</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> ֆայլ</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Առաջարկվող օգտատերեր չկան, որոնց հետ կարող եք կիսվել"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Հավելվածների ցանկ"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Հավելվածը ձայնագրելու թույլտվություն չունի, սակայն կկարողանա գրանցել ձայնն այս USB սարքի միջոցով։"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Սկիզբ"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Աշխատանքային հավելվածները չեն կարող բացել այս բովանդակությունը"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Անձնական հավելվածները չեն կարող աջակցել այս բովանդակությունը"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Անձնական հավելվածները չեն կարող բացել այս բովանդակությունը"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Հեռախոսային զանգերի ձայնագրում և նվագարկում"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Եթե այս հավելվածն ըստ կանխադրման օգտագործվում է զանգերի համար, այն կարող է ձայնագրել և նվագարկել հեռախոսային խոսակցությունները։"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM Network քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM Network Subset քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM Corporate քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM Service Provider քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Մուտքագրեք PUK կոդը"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Մուտքագրեք PUK կոդը"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Մուտքագրեք PUK կոդը"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Մուտքագրեք PUK կոդը"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Մուտքագրեք PUK կոդը"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM Network1 քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM Network2 քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM HRPD քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM Corporate քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM Service Provider քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Մուտքագրեք PUK կոդը"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Մուտքագրեք PUK կոդը"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Մուտքագրեք PUK կոդը"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Մուտքագրեք PUK կոդը"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Մուտքագրեք PUK կոդը"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Մուտքագրեք PUK կոդը"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Network Subset Service Provider քարտի ապակողպման PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM Network քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM Network Subset քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM Service Provider քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"SIM Corporate քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK կոդի միջոցով ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK կոդի միջոցով ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK կոդի միջոցով ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK կոդի միջոցով ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK կոդի միջոցով ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM Network1 քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM Network2 քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM HRPD քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM Service Provider քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM Corporate քարտի ապակողպման հայտի ուղարկում…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP Equivalent Home PLMN քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Network Subset Service Provider քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM քարտի ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK կոդի միջոցով ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK կոդի միջոցով ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK կոդի միջոցով ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK կոդի միջոցով ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK կոդի միջոցով ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK կոդի միջոցով ապակողպման հայտն ուղարկվում է…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Չհաջողվեց ուղարկել SIM Network քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Չհաջողվեց ուղարկել SIM Network Subset քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Չհաջողվեց ուղարկել SIM Service Provider քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Չհաջողվեց ուղարկել SIM Corporate քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Չհաջողվեց ուղարկել SIM քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Չհաջողվեց ուղարկել RUIM Network1 քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Չհաջողվեց ուղարկել RUIM Network2 քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Չհաջողվեց ուղարկել RUIM HRPD քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM Corporate քարտի ապակողպման հայտը չհաջողվեց ուղարկել։"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Չհաջողվեց ուղարկել RUIM Service Provider քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Չհաջողվեց ուղարկել RUIM քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Չհաջողվեց ապակողպել PUK կոդի միջոցով։"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Չհաջողվեց ապակողպել PUK կոդի միջոցով։"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Չհաջողվեց ապակողպել PUK կոդի միջոցով։"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Չհաջողվեց ապակողպել PUK կոդի միջոցով։"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Չհաջողվեց ապակողպել PUK կոդի միջոցով։"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Չհաջողվեց ապակողպել PUK կոդի միջոցով։"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Չհաջողվեց ապակողպել PUK կոդի միջոցով։"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Չհաջողվեց ապակողպել PUK կոդի միջոցով։"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Չհաջողվեց ապակողպել PUK կոդի միջոցով։"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Չհաջողվեց ապակողպել PUK կոդի միջոցով։"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Չհաջողվեց ապակողպել PUK կոդի միջոցով։"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN քարտի ապակողպման հայտը չհաջողվեց ուղարկել։"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Չհաջողվեց ուղարկել SP Equivalent Home PLMN քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Չհաջողվեց ուղարկել ICCID քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Չհաջողվեց ուղարկել IMPI քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Չհաջողվեց ուղարկել Network Subset Service Provider քարտի ապակողպման հայտը։"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM Network քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM Network Subset քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM Service Provider քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM Corporate քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM Network1 քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM Network2 քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM HRPD քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM Service Provider քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM Corporate քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK կոդի միջոցով ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK կոդի միջոցով ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK կոդի միջոցով ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK կոդի միջոցով ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK կոդի միջոցով ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK կոդի միջոցով ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK կոդի միջոցով ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK կոդի միջոցով ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK կոդի միջոցով ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK կոդի միջոցով ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK կոդի միջոցով ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI քարտի ապակողպումը հաջողվեց։"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Network subset service provider քարտի ապակողպումը հաջողվեց։"</string> </resources> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 9f425695b753..01dbf0500adc 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Admin melepaskan perangkat untuk penggunaan pribadi"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Perangkat ini ada yang mengelola"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Organisasi mengelola perangkat ini dan mungkin memantau traffic jaringan. Ketuk untuk melihat detailnya."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Setelan lokasi diubah oleh admin Anda"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Ketuk untuk melihat setelan lokasi Anda."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikasi dapat mengakses lokasi Anda"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Hubungi admin IT untuk mempelajari lebih lanjut"</string> <string name="country_detector" msgid="7023275114706088854">"Pendeteksi Negara"</string> <string name="location_service" msgid="2439187616018455546">"Layanan Lokasi"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Layanan Notifikasi Sensor"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Perangkat akan dihapus"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Aplikasi admin tidak dapat digunakan. Perangkat Anda kini akan dihapus.\n\nJika ada pertanyaan, hubungi admin organisasi."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Fitur pencetakan dinonaktifkan oleh <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Batalkan pemblokiran aplikasi pribadi"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Aplikasi akan diblokir besok"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Admin IT tidak mengizinkan profil kerja Anda dijeda selama lebih dari <xliff:g id="DAYS">%1$d</xliff:g> hari"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Aktifkan profil kerja"</string> <string name="me" msgid="6207584824693813140">"Saya"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opsi tablet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opsi Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opsi telepon"</string> <string name="global_action_lock" msgid="6949357274257655383">"Kunci layar"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Matikan perangkat"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Daya"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Mulai ulang"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Darurat"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Laporan bug"</string> <string name="global_action_logout" msgid="6093581310002476511">"Akhiri sesi"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"akses perintah penyedia lokasi ekstra"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Memungkinkan aplikasi mengakses perintah penyedia lokasi ekstra. Tindakan ini memungkinkan aplikasi mengganggu pengoperasian GPS atau sumber lokasi lain."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"akses lokasi pasti hanya saat di latar depan"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Aplikasi ini bisa mendapatkan lokasi pasti Anda saat berada di latar depan. Fitur layanan lokasi harus diaktifkan dan tersedia di perangkat agar dapat digunakan oleh aplikasi. Fitur ini dapat meningkatkan konsumsi baterai."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Aplikasi ini bisa mendapatkan lokasi pasti Anda dari layanan lokasi saat aplikasi sedang digunakan. Layanan lokasi untuk perangkat harus diaktifkan agar aplikasi bisa mendapatkan lokasi. Ini dapat meningkatkan penggunaan baterai."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"akses perkiraan lokasi hanya saat berada di latar depan"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Aplikasi ini bisa mendapatkan perkiraan lokasi Anda hanya saat berada di latar depan. Layanan lokasi harus diaktifkan dan tersedia di perangkat agar aplikasi dapat menggunakannya."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Aplikasi ini bisa mendapatkan perkiraan lokasi Anda dari layanan lokasi saat aplikasi sedang digunakan. Layanan lokasi untuk perangkat harus diaktifkan agar aplikasi bisa mendapatkan lokasi."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"akses lokasi di latar belakang"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Aplikasi ini dapat mengakses lokasi saat berjalan di latar belakang, selain akses lokasi latar depan."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplikasi ini dapat mengakses lokasi kapan saja, bahkan saat aplikasi tidak sedang digunakan."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ubah setelan audio Anda"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Memungkinkan aplikasi mengubah setelan audio global, misalnya volume dan pengeras suara mana yang digunakan untuk keluaran."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"rekam audio"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"ambil gambar dan video"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Aplikasi ini dapat mengambil foto dan merekam video menggunakan kamera kapan saja."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Izinkan akses aplikasi atau layanan ke kamera sistem untuk mengambil gambar dan video"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Aplikasi sistem atau yang diberi hak istimewa ini dapat mengambil gambar dan merekam video menggunakan kamera sistem kapan saja. Mewajibkan aplikasi untuk memiliki izin android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Izinkan aplikasi atau layanan untuk menerima callback tentang perangkat kamera yang sedang dibuka atau ditutup."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Aplikasi ini dapat menerima callback saat perangkat kamera dibuka (oleh aplikasi) atau ditutup."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kontrol getaran"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Mengizinkan aplikasi untuk mengendalikan vibrator."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Mengizinkan aplikasi untuk mengakses status vibrator."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Meninjau konten saat ini"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> baru"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Ketuk untuk menyiapkan"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Untuk mentransfer foto dan media"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Masalah pada <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Ketuk untuk memperbaiki"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> rusak. Pilih untuk memperbaikinya."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> tidak didukung"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Perangkat tidak mendukung <xliff:g id="NAME">%s</xliff:g> ini. Ketuk untuk menyiapkan dalam format yang didukung."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Perangkat ini tidak mendukung <xliff:g id="NAME">%s</xliff:g> ini. Pilih untuk menyiapkan dalam format yang didukung."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Perangkat ini tidak mendukung <xliff:g id="NAME">%s</xliff:g> ini."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> tiba-tiba dicabut"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Keluarkan media sebelum mencabut agar konten tidak hilang"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> dicabut"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Mengeraskan volume di atas tingkat yang disarankan?\n\nMendengarkan dengan volume keras dalam waktu yang lama dapat merusak pendengaran Anda."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gunakan Pintasan Aksesibilitas?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Saat pintasan aktif, menekan kedua tombol volume selama 3 detik akan memulai fitur aksesibilitas."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Aktifkan fitur aksesibilitas?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Menahan kedua tombol volume selama beberapa detik akan mengaktifkan fitur aksesibilitas. Tindakan ini dapat mengubah cara kerja perangkat Anda.\n\nFitur saat ini:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nAnda dapat mengubah fitur yang dipilih di Setelan > Aksesibilitas."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Aktifkan TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Menahan kedua tombol volume selama beberapa detik akan mengaktifkan TalkBack, pembaca layar yang membantu pengguna dengan gangguan penglihatan atau tunanetra. TalkBack akan mengubah cara kerja perangkat Anda sepenuhnya.\n\nAnda dapat mengubah pintasan ini ke fitur lain di Setelan > Aksesibilitas."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Aktifkan <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Menahan kedua tombol volume selama beberapa detik akan mengaktifkan <xliff:g id="SERVICE">%1$s</xliff:g>, yang merupakan fitur aksesibilitas. Tindakan ini dapat mengubah cara kerja perangkat Anda.\n\nAnda dapat mengubah pintasan ini ke fitur lain di Setelan > Aksesibilitas."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktifkan"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Jangan aktifkan"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Izinkan <xliff:g id="SERVICE">%1$s</xliff:g> memiliki kontrol penuh atas perangkat Anda?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jika Anda mengaktifkan <xliff:g id="SERVICE">%1$s</xliff:g>, perangkat tidak akan menggunakan kunci layar untuk meningkatkan enkripsi data."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Kontrol penuh sesuai untuk aplikasi yang membantu Anda terkait kebutuhan aksesibilitas, tetapi tidak untuk sebagian besar aplikasi."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Izinkan"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tolak"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ketuk fitur untuk mulai menggunakannya:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Pilih fitur yang akan digunakan dengan tombol aksesibilitas"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Pilih fitur yang akan digunakan dengan pintasan tombol volume"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> telah dinonaktifkan"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit pintasan"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Selesai"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gunakan Pintasan"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversi Warna"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Koreksi Warna"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tombol volume yang ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> diaktifkan."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tombol volume yang ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dinonaktifkan."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Tekan dan tahan kedua tombol volume selama tiga detik untuk menggunakan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Pilih fitur yang akan digunakan saat mengetuk tombol aksesibilitas:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Pilih fitur yang akan digunakan dengan gestur aksesibilitas (geser ke atas dari bawah layar dengan dua jari):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Pilih fitur yang akan digunakan dengan gestur aksesibilitas (geser ke atas dari bawah layar dengan tiga jari):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Sentuh lama tombol aksesibilitas untuk beralih ke fitur lain."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Geser ke atas dengan dua jari dan tahan untuk beralih ke fitur lain."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Geser ke atas dengan tiga jari dan tahan untuk beralih ke fitur lain."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Pembesaran"</string> <string name="user_switched" msgid="7249833311585228097">"Pengguna saat ini <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Beralih ke <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> file</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> file</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Tidak ada rekomendasi kontak untuk berbagi"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Daftar aplikasi"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Aplikasi ini tidak diberi izin merekam, tetapi dapat merekam audio melalui perangkat USB ini."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Beranda"</string> @@ -2073,13 +2048,13 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"Kerja"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Tampilan pribadi"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Tampilan kerja"</string> - <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Tidak dapat membagikan dengan aplikasi kerja"</string> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Tidak dapat membagikan konten ini dengan aplikasi kerja"</string> <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"Admin IT tidak mengizinkan Anda membagikan konten ini dengan aplikasi di profil kerja Anda"</string> - <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Tidak dapat membukanya dengan aplikasi kerja"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Tidak dapat membuka konten ini dengan aplikasi kerja"</string> <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"Admin IT tidak mengizinkan Anda membuka konten ini dengan aplikasi di profil kerja Anda"</string> - <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Tidak dapat membagikan dengan aplikasi pribadi"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Tidak dapat membagikan konten ini dengan aplikasi pribadi"</string> <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"Admin IT tidak mengizinkan Anda membagikan konten ini dengan aplikasi di profil pribadi Anda"</string> - <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Tidak dapat membukanya dengan aplikasi pribadi"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Tidak dapat membuka konten ini dengan aplikasi pribadi"</string> <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"Admin IT tidak mengizinkan Anda membuka konten ini dengan aplikasi di profil pribadi Anda"</string> <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Profil kerja dijeda"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"Aktifkan"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Tidak ada aplikasi kerja yang dapat membuka konten ini"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Tidak ada aplikasi pribadi yang dapat mendukung konten ini"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Tidak ada aplikasi pribadi yang dapat membuka konten ini"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Rekam atau putar audio dalam panggilan telepon"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Mengizinkan aplikasi ini, saat ditetapkan sebagai aplikasi telepon default, untuk merekam atau memutar audio dalam panggilan telepon."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN pembuka kunci SIM network"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN pembuka kunci SIM network subset"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN pembuka kunci SIM corporate"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN pembuka kunci SIM service provider"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN pembuka kunci SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN pembuka kunci RUIM network1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN pembuka kunci RUIM network2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN pembuka kunci RUIM hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN pembuka kunci RUIM corporate"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN pembuka kunci RUIM service provider"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN pembuka kunci RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN pembuka kunci SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN pembuka kunci SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN pembuka kunci ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN pembuka kunci IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN pembuka kunci Network subset service provider"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Meminta untuk membuka kunci SIM network …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Meminta untuk membuka kunci SIM network subset …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Meminta untuk membuka SIM service provider …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Meminta untuk membuka kunci SIM corporate …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Meminta untuk membuka kunci PUK …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Meminta untuk membuka kunci PUK …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Meminta untuk membuka kunci PUK …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Meminta untuk membuka kunci PUK …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Meminta untuk membuka kunci PUK …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Meminta untuk membuka SIM …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Meminta untuk membuka kunci RUIM network1 …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Meminta untuk membuka kunci RUIM network2 …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Meminta untuk membuka kunci RUIM hrpd …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Meminta untuk membuka kunci RUIM service provider …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Meminta untuk membuka kunci RUIM corporate …"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Meminta untuk membuka SPN …"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Meminta untuk membuka SP Equivalent Home PLMN …"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Meminta untuk membuka kunci ICCID …"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Meminta untuk membuka kunci IMPI …"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Meminta untuk membuka kunci Network subset service provider …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Meminta untuk membuka kunci RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Meminta untuk membuka kunci PUK …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Meminta untuk membuka kunci PUK …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Meminta untuk membuka kunci PUK …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Meminta untuk membuka kunci PUK …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Meminta untuk membuka kunci PUK …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Meminta untuk membuka kunci PUK …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Permintaan buka kunci SIM Network gagal."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Permintaan buka kunci SIM Network Subset gagal."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Permintaan buka kunci SIM Service Provider gagal."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Permintaan buka kunci SIM Corporate gagal."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Permintaan buka kunci SIM gagal."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Permintaan buka kunci RUIM Network1 gagal."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Permintaan buka kunci RUIM Network2 gagal."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Permintaan buka kunci RUIM Hrpd gagal."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Permintaan buka kunci RUIM Corporate gagal."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Permintaan buka kunci RUIM Service Provider gagal."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Permintaan buka kunci RUIM gagal."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Gagal membuka kunci PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Gagal membuka kunci PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Gagal membuka kunci PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Gagal membuka kunci PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Gagal membuka kunci PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Gagal membuka kunci PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Gagal membuka kunci PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Gagal membuka kunci PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Gagal membuka kunci PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Gagal membuka kunci PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Gagal membuka kunci PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Permintaan buka kunci SPN gagal."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Permintaan buka kunci SP Equivalent Home PLMN gagal."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Permintaan buka kunci ICCID gagal."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Permintaan buka kunci IMPI gagal."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Permintaan buka kunci Network subset service provider gagal."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM Network berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM Network Subset berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM Service Provider berhasil dibuka."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM Corporate berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM berhasil dibuka."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM Network1 berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM Network2 berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM Service Provider berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM Corporate berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN berhasil dibuka."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN berhasil dibuka."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI berhasil dibuka kuncinya."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Network subset service provider berhasil dibuka."</string> </resources> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index 3f5505541a42..f12d0ded9e9a 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Kerfisstjóri lét af hendi tæki til einkanota"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Tækinu er stjórnað"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Fyrirtækið þitt stjórnar þessu tæki og kann að fylgjast með netnotkun. Ýttu hér til að fá upplýsingar."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Stjórnandi breytti staðsetningarstillingum"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Ýttu til að sjá staðsetningarstillingar."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Forrit hafa aðgang að staðsetningu þinni"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Hafðu samband við kerfisstjórann til að fá frekari upplýsingar"</string> <string name="country_detector" msgid="7023275114706088854">"Landsgreining"</string> <string name="location_service" msgid="2439187616018455546">"Staðsetningarþjónusta"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Tilkynningaþjónusta nema"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Tækið verður hreinsað"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Ekki er hægt að nota stjórnunarforritið. Tækinu verður eytt.\n\nEf spurningar vakna skaltu hafa samband við kerfisstjóra fyrirtækisins."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> lokaði á prentun."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Opna fyrir persónuleg forrit"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Lokað á forrit á morgun"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Kerfisstjórinn þinn leyfir ekki að hlé sé gert á vinnusniði lengur en í <xliff:g id="DAYS">%1$d</xliff:g> daga"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Kveikja á vinnusniði"</string> <string name="me" msgid="6207584824693813140">"Ég"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Valkostir spjaldtölvu"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Valkostir Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Valkostir síma"</string> <string name="global_action_lock" msgid="6949357274257655383">"Skjálás"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Slökkva"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Orka"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Endurræsa"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Neyðarsímtal"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Villutilkynning"</string> <string name="global_action_logout" msgid="6093581310002476511">"Ljúka lotu"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"aðgangur að viðbótarskipunum staðsetningarveitu"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Leyfir forriti að fá aðgang að fleiri skipunum staðsetningarveitu. Þetta getur gert forritinu kleift að hafa áhrif á virkni GPS og annars staðsetningarbúnaðar."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"aðgangur að nákvæmri staðsetningu aðeins í forgrunni"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Þetta forrit getur aðeins séð staðsetningu þína þegar það er í forgrunni. Það verður að vera kveikt á staðsetningarþjónustu og hún þarf að vera tiltæk í tækinu til að forritið geti notað hana. Þetta getur aukið rafhlöðunotkun."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Þetta forrit getur sótt nákvæma staðsetningu þína í staðsetningarþjónustu þegar forritið er í notkun. Kveikt verður að vera á staðsetningarþjónustu fyrir tækið þitt til að forritið geti sótt staðsetninguna. Þetta gæti aukið rafhlöðunotkun."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"aðgangur að áætlaðri staðsetningu aðeins í forgrunni"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Þetta forrit getur aðeins séð áætlaða staðsetningu þína þegar það er í forgrunni. Það verður að vera kveikt á staðsetningarþjónustu og hún þarf að vera tiltæk í tækinu til að forritið geti notað hana."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Þetta forrit getur sótt áætlaða staðsetningu þína í staðsetningarþjónustu þegar forritið er í notkun. Kveikt verður að vera á staðsetningarþjónustu fyrir tækið þitt til að forritið geti sótt staðsetninguna."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"aðgangur að staðsetningu í bakgrunni"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Þetta forrit hefur aðgang að staðsetningu þegar það er í gangi í bakgrunni, og auk þess þegar það er í forgrunni."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Þetta forrit hefur aðgang að staðsetningu hvenær sem er, jafnvel þegar forritið er ekki í notkun."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"breyta hljóðstillingum"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Leyfir forriti að breyta altækum hljóðstillingum, s.s. hljóðstyrk og hvaða hátalari er notaður sem úttak."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"taka upp hljóð"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"taka myndir og myndskeið"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Þetta forrit getur tekið myndir og tekið upp myndskeið með myndavélinni hvenær sem er."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Veittu forriti eða þjónustu aðgang að myndavélum kerfis til að taka myndir og myndskeið"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Þetta forgangs- eða kerfisforrit hefur heimild til að taka myndir og taka upp myndskeið með myndavél kerfisins hvenær sem er. Forritið þarf einnig að vera með heimildina android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Leyfa forriti eða þjónustu að taka við svörum um myndavélar sem verið er að opna eða loka."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Þetta forrit getur tekið við svörum þegar verið er að opna eða loka myndavél í hvaða forriti sem er."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"stjórna titringi"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Leyfir forriti að stjórna titraranum."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Veitir forritinu aðgang að stöðu titrings."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Fer yfir núverandi efni"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nýtt <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Ýttu til að setja upp"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Til að flytja myndir og aðrar skrár"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Vandamál með <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Ýttu til að lagfæra"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> er skemmt. Veldu til að lagfæra."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Óstutt <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Þetta tæki styður ekki <xliff:g id="NAME">%s</xliff:g>. Ýttu til að setja upp með studdu sniði."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Þetta tæki styður ekki <xliff:g id="NAME">%s</xliff:g>. Veldu til að setja upp með studdu sniði."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Þetta tæki styður ekki þetta <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> fjarlægt án fyrirvara"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Aftengdu geymslumiðil áður en þú tekur hann úr sambandi til að koma í veg fyrir að þú glatir efni"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> fjarlægt"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Hækka hljóðstyrk umfram ráðlagðan styrk?\n\nEf hlustað er á háum hljóðstyrk í langan tíma kann það að skaða heyrnina."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Viltu nota aðgengisflýtileið?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Þegar flýtileiðin er virk er kveikt á aðgengiseiginleikanum með því að halda báðum hljóðstyrkshnöppunum inni í þrjár sekúndur."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Viltu kveikja á aðgengiseiginleikum?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Kveikt er á aðgengiseiginleikum þegar báðum hljóðstyrkstökkunum er haldið inni í nokkrar sekúndur. Þetta getur breytt því hvernig tækið virkar.\n\nNúverandi eiginleikar:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nÞú getur breytt völdum eiginleikum í Stillingar > Aðgengi."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Viltu kveikja á TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Ef báðum hljóðstyrkstökkunum er haldið niðri í nokkrar sekúndur er kveikt á TalkBack, sem er skjálesari sem gagnast blindum eða sjónskertum einstaklingum. TalkBack breytir því algjörlega hvernig tækið virkar.\n\nÞú getur breytt þessari flýtileið í annan eiginleika í Stillingar > Aðgengi."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Viltu kveikja á <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ef báðum hljóðstyrkstökkunum er haldið inni í nokkrar sekúndur er kveikt á aðgengiseiginleikanum <xliff:g id="SERVICE">%1$s</xliff:g>. Þetta getur breytt því hvernig tækið virkar.\n\nÞú getur breytt þessari flýtileið í annan eiginleika í Stillingar > Aðgengi."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Kveikja"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ekki kveikja"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Viltu leyfa <xliff:g id="SERVICE">%1$s</xliff:g> að hafa fulla stjórn yfir tækinu þínu?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ef þú kveikir á <xliff:g id="SERVICE">%1$s</xliff:g> mun tækið ekki nota skjálásinn til að efla dulkóðun gagna."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full stjórnun er viðeigandi fyrir forrit sem hjálpa þér ef þú hefur ekki aðgang, en ekki fyrir flest forrit."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Leyfa"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Hafna"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ýttu á eiginleika til að byrja að nota hann:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Veldu eiginleika sem á að nota með aðgengishnappinum"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Veldu eiginleika á að nota með flýtileið hljóðstyrkstakka"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Slökkt hefur verið á <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Breyta flýtileiðum"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Lokið"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Nota flýtileið"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Umsnúningur lita"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Litaleiðrétting"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Hljóðstyrkstökkum haldið inni. Kveikt á <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Hljóðstyrkstökkum haldið inni. Slökkt á <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Haltu báðum hljóðstyrkstökkunum inni í þrjár sekúndur til að nota <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Veldu eiginleika sem á að nota þegar ýtt er á aðgengishnappinn:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Veldu eiginleika sem á að nota með aðgengisbendingunni (strjúka upp frá neðri hluta skjásins með tveimur fingrum):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Veldu eiginleika sem á að nota með aðgengisbendingunni (strjúka upp frá neðri hluta skjásins með þremur fingrum):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Til að skipta á milli eiginleika skaltu halda aðgengishnappinum inni."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Til að skipta á milli eiginleika skaltu strjúka upp með tveimur fingrum og halda inni."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Til að skipta á milli eiginleika skaltu strjúka upp með þremur fingrum og halda inni."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Stækkun"</string> <string name="user_switched" msgid="7249833311585228097">"Núverandi notandi <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Skiptir yfir á <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> skrá</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> skrá</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Engir einstaklingar sem mælt er með að deila með"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Forritalisti"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Þetta forrit hefur ekki fengið heimild fyrir upptöku en gæti tekið upp hljóð í gegnum þetta USB-tæki."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Heim"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Engin vinnuforrit geta opnað þetta efni"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Engin forrit til einkanota styðja þetta efni"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Engin forrit til einkanota geta opnað þetta efni"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Taka upp eða spila hljóð í símtölum"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Gerir þessu forriti kleift að taka upp og spila hljóð í símtölum þegar það er valið sem sjálfgefið hringiforrit."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN-númer fyrir opnun SIM netkerfis"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN-númer fyrir opnun SIM netkerfishlutmengis"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN-númer til að opna SIM fyrirtækis"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN-númer fyrir opnun SIM þjónustuaðila"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN-númer fyrir opnun SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Slá inn PUK-númer"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Slá inn PUK-númer"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Slá inn PUK-númer"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Slá inn PUK-númer"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Slá inn PUK-númer"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN-númer fyrir opnun RUIM netkerfis 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN-númer fyrir opnun RUIM netkerfis 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN-númer fyrir opnun RUIM hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN-númer fyrir opnun RUIM fyrirtækis"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN-númer fyrir opnun þjónustuaðila RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN-númer fyrir opnun RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Slá inn PUK-númer"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Slá inn PUK-númer"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Slá inn PUK-númer"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Slá inn PUK-númer"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Slá inn PUK-númer"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Slá inn PUK-númer"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN-númer fyrir opnun SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN-númer fyrir opnun SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN-númer fyrir opnun ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN-númer fyrir opnun IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN-númer fyrir opnun þjónustuaðila netkerfishlutmengis"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Biður um opnun SIM netkerfis…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Biður um opnun SIM netkerfishlutmengis…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Biður um opnun þjónustuaðila SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Biður um opnun SIM fyrirtækis…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Biður um PUK-opnun…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Biður um PUK-opnun…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Biður um PUK-opnun…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Biður um PUK-opnun…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Biður um PUK-opnun…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Biður um opnun SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Biður um opnun RUIM netkerfis 1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Biður um opnun RUIM netkerfis 2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Biður um opnun RUIM hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Biður um opnun þjónustuaðila RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Biður um opnun RUIM fyrirtækis…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Biður um opnun SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Biður um opnun SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Biður um opnun ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Biður um opnun IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Biður um opnun þjónustuaðila netkerfishlutmengis…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Biður um opnun RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Biður um PUK-opnun…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Biður um PUK-opnun…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Biður um PUK-opnun…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Biður um PUK-opnun…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Biður um PUK-opnun…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Biður um PUK-opnun…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Beiðni um opnun SIM netkerfis tókst ekki."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Beiðni um opnun SIM netkerfishlutmengis tókst ekki."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Beiðni um opnun þjónustuaðila SIM tókst ekki."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Beiðni um opnun SIM fyrirtækis tókst ekki."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Beiðni um opnun SIM tókst ekki."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Beiðni um opnun RUIM netkerfis 1 tókst ekki."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Beiðni um opnun RUIM netkerfis 2 tókst ekki."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Beiðni um opnun RUIM Hrpd tókst ekki."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Beiðni um opnun RUIM fyrirtækis tókst ekki."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Beiðni um opnun þjónustuaðila RUIM tókst ekki."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Beiðni um opnun RUIM tókst ekki."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK-opnun mistókst."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK-opnun mistókst."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK-opnun mistókst."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK-opnun mistókst."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK-opnun mistókst."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK-opnun mistókst."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK-opnun mistókst."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK-opnun mistókst."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK-opnun mistókst."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK-opnun mistókst."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK-opnun mistókst."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Beiðni um opnun SPN tókst ekki."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Beiðni um opnun SP Equivalent Home PLMN tókst ekki."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Beiðni um opnun ICCID tókst ekki."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Beiðni um opnun IMPI tókst ekki."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Beiðni um opnun þjónustuaðila netkerfishlutmengis tókst."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Opnun SIM netkerfis tókst."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Opnun SIM netkerfishlutmengis tókst."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Opnun þjónustuaðila SIM tókst."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Opnun SIM fyrirtækis tókst."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Opnun SIM tókst."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Opnun RUIM netkerfis 1 tókst."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Opnun RUIM netkerfis 2 tókst."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Opnun RUIM Hrpd tókst."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Beiðni um opnun þjónustuaðila RUIM tókst."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Opnun RUIM fyrirtækis tókst."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Opnun RUIM tókst."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK-opnun tókst."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK-opnun tókst."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK-opnun tókst."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK-opnun tókst."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK-opnun tókst."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK-opnun tókst."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK-opnun tókst."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK-opnun tókst."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK-opnun tókst."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK-opnun tókst."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK-opnun tókst."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Opnun SPN tókst."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Opnun SP Equivalent Home PLMN tókst."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Opnun ICCID tókst."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Opnun IMPI tókst."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Opnun þjónustuaðila netkerfishlutmengis tókst."</string> </resources> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 0c537271456f..c577f021a089 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"L\'amministratore ha abbandonato il dispositivo per uso personale"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Il dispositivo è gestito"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Questo dispositivo è gestito dalla tua organizzazione, che potrebbe monitorare il traffico di rete. Tocca per i dettagli."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Impostazioni di geolocalizzazione modificate dal tuo amministratore"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Tocca per vedere le tue impostazioni di geolocalizzazione."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Le app possono accedere alla tua posizione"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Contatta l\'amministratore IT per avere ulteriori informazioni"</string> <string name="country_detector" msgid="7023275114706088854">"Rilevatore paese"</string> <string name="location_service" msgid="2439187616018455546">"Servizio di geolocalizzazione"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Servizio di notifica dei sensori"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Il dispositivo verrà resettato"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Impossibile usare l\'app di amministrazione. Il dispositivo verrà resettato.\n\nPer eventuali domande, contatta l\'amministratore della tua organizzazione."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Stampa disattivata da <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Sblocca le tue app personali"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"App saranno bloccate domani"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"L\'amministratore IT non consente di sospendere il profilo di lavoro per più di <xliff:g id="DAYS">%1$d</xliff:g> giorni"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Attiva profilo di lavoro"</string> <string name="me" msgid="6207584824693813140">"Io"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opzioni tablet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opzioni Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opzioni telefono"</string> <string name="global_action_lock" msgid="6949357274257655383">"Blocco schermo"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Spegni"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Spegnimento/Riavvio"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Riavvia"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergenza"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Segnalazione di bug"</string> <string name="global_action_logout" msgid="6093581310002476511">"Termina sessione"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"accesso a comandi aggiuntivi provider di geolocalizz."</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Consente all\'app di accedere a ulteriori comandi del fornitore di posizione. Ciò potrebbe consentire all\'app di interferire con il funzionamento del GPS o di altre fonti di geolocalizzazione."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"accesso alla posizione esatta solo in primo piano"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Questa app può recuperare la tua posizione esatta solo quando è in primo piano. I servizi di geolocalizzazione devono essere attivi e disponibili sul dispositivo affinché l\'app possa usarli. Potrebbe aumentare il consumo della batteria."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Questa app può recuperare la tua posizione precisa dai Servizi di geolocalizzazione quando l\'app è in uso. L\'impostazione Servizi di geolocalizzazione deve essere attiva sul tuo dispositivo perché l\'app possa recuperare la tua posizione. Questa operazione potrebbe comportare un maggior consumo della batteria."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"Accesso alla posizione approssimativa solo in primo piano"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Questa app può recuperare la tua posizione approssimativa solo quando è in primo piano. I servizi di geolocalizzazione devono essere attivi e disponibili sull\'auto affinché l\'app possa usarli."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Questa app può recuperare la tua posizione approssimativa dai Servizi di geolocalizzazione quando l\'app è in uso. L\'impostazione Servizi di geolocalizzazione deve essere attiva sul tuo dispositivo perché l\'app possa recuperare la tua posizione."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"accesso alla posizione in background"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Questa app può accedere alla posizione in background, oltre ad accedervi in primo piano."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Questa app può accedere alla posizione in qualsiasi momento, anche quando l\'app non è in uso."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"modifica impostazioni audio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Consente all\'applicazione di modificare le impostazioni audio globali, come il volume e quale altoparlante viene utilizzato per l\'uscita."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"registrazione audio"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"acquisizione di foto e video"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Questa app può scattare foto e registrare video tramite la fotocamera in qualsiasi momento."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Consenti a un\'applicazione o a un servizio di accedere alle videocamere del sistema per fare foto e video"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Questa app di sistema o con privilegi può scattare foto e registrare video tramite una videocamera di sistema in qualsiasi momento. Richiede che anche l\'app disponga dell\'autorizzazione android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Consenti a un\'applicazione o a un servizio di ricevere callback relativi all\'apertura o alla chiusura di videocamere."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Questa app può ricevere callback quando una videocamera viene aperta (da una specifica applicazione) o chiusa."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"controllo vibrazione"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Consente all\'applicazione di controllare la vibrazione."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Consente all\'app di accedere allo stato di vibrazione."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Controllo dei contenuti correnti"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nuovo dispositivo <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Tocca per configurare"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Per trasferire foto e altri file"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problema con <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tocca per risolvere il problema"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Il supporto esterno <xliff:g id="NAME">%s</xliff:g> è danneggiato. Seleziona per risolvere il problema."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> non supportata"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Il dispositivo non supporta il seguente elemento: <xliff:g id="NAME">%s</xliff:g>. Tocca per configurare un formato supportato."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Il dispositivo non supporta questo tipo di <xliff:g id="NAME">%s</xliff:g>. Seleziona per eseguire la configurazione in un formato supportato."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Il dispositivo non supporta il seguente elemento: <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Rimozione imprevista della <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Espelli il supporto prima di rimuoverlo per evitare di perdere contenuti"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Dispositivo <xliff:g id="NAME">%s</xliff:g> rimosso"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vuoi aumentare il volume oltre il livello consigliato?\n\nL\'ascolto ad alto volume per lunghi periodi di tempo potrebbe danneggiare l\'udito."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usare la scorciatoia Accessibilità?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando la scorciatoia è attiva, puoi premere entrambi i pulsanti del volume per tre secondi per avviare una funzione di accessibilità."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Attivare le funzioni di accessibilità?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Se tieni premuti entrambi i tasti del volume per qualche secondo, le funzioni di accessibilità vengono attivate. Questa operazione potrebbe modificare il funzionamento del dispositivo.\n\nFunzionalità correnti:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nPuoi modificare le funzionalità selezionate in Impostazioni > Accessibilità."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Attivare TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Se tieni premuti entrambi i tasti del volume per qualche secondo verrà attivato il servizio TalkBack, uno screen reader utile alle persone non vedenti o ipovedenti. TalkBack modifica completamente il funzionamento del dispositivo.\n\nPuoi associare questa scorciatoia a un\'altra funzionalità in Impostazioni > Accessibilità."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Attivare <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Se tieni premuti entrambi i tasti del volume per qualche secondo verrà attivata la funzione di accessibilità <xliff:g id="SERVICE">%1$s</xliff:g>. Questa operazione potrebbe modificare il funzionamento del dispositivo.\n\nPuoi associare questa scorciatoia a un\'altra funzionalità in Impostazioni > Accessibilità."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Attiva"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Non attivare"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vuoi consentire a <xliff:g id="SERVICE">%1$s</xliff:g> di avere il controllo totale del tuo dispositivo?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se attivi <xliff:g id="SERVICE">%1$s</xliff:g>, il dispositivo non utilizzerà il blocco schermo per migliorare la crittografia dei dati."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Il pieno controllo è appropriato per le app che rispondono alle tue esigenze di accessibilità, ma non per gran parte delle app."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Consenti"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Rifiuta"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tocca una funzionalità per iniziare a usarla:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Scegli le funzionalità da usare con il pulsante Accessibilità"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Scegli le funzionalità da usare con la scorciatoia per i tasti del volume"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Il servizio <xliff:g id="SERVICE_NAME">%s</xliff:g> è stato disattivato"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Modifica scorciatoie"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Fine"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usa scorciatoia"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversione colori"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correzione del colore"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tieni premuti i tasti del volume. Servizio <xliff:g id="SERVICE_NAME">%1$s</xliff:g> attivato."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tieni premuti i tasti del volume. Servizio <xliff:g id="SERVICE_NAME">%1$s</xliff:g> disattivato."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Tieni premuti entrambi i tasti del volume per tre secondi per utilizzare <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Scegli una funzionalità da usare quando tocchi il pulsante Accessibilità:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Scegli una funzionalità da usare con il gesto di accessibilità (scorrimento verso l\'alto dalla parte inferiore dello schermo con due dita):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Scegli una funzionalità da usare con il gesto di accessibilità (scorrimento verso l\'alto dalla parte inferiore dello schermo con tre dita):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Per spostarti tra le funzionalità, tocca e tieni premuto il pulsante Accessibilità."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Per spostarti tra le funzionalità, scorri verso l\'alto con due dita e tieni premuto."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Per spostarti tra le funzionalità, scorri verso l\'alto con tre dita e tieni premuto."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ingrandimento"</string> <string name="user_switched" msgid="7249833311585228097">"Utente corrente <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Passaggio a <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> file</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> file</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Nessuna persona consigliata per la condivisione"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Elenco di app"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"A questa app non è stata concessa l\'autorizzazione di registrazione, ma l\'app potrebbe acquisire l\'audio tramite questo dispositivo USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Home"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Nessuna app di lavoro può aprire questi contenuti"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Nessuna app personale supporta questi contenuti"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Nessuna app personale può aprire questi contenuti"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Registrazione o riproduzione dell\'audio delle telefonate"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Consente a questa app, se assegnata come applicazione telefono predefinita, di registrare o riprodurre l\'audio delle telefonate."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN di sblocco rete SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN di sblocco sottoinsieme rete SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN sblocco aziendale SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN di sblocco fornitore di servizi SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN di sblocco SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Inserisci PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Inserisci PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Inserisci PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Inserisci PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Inserisci PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN di sblocco rete1 RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN di sblocco rete2 RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN di sblocco HRPD RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN di sblocco aziendale RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN di sblocco fornitore di servizi RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN di sblocco RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Inserisci PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Inserisci PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Inserisci PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Inserisci PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Inserisci PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Inserisci PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN di sblocco SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN di sblocco EHPLMN fornitore di servizi"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN di sblocco ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN di sblocco IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN di sblocco fornitore di servizi sottoinsieme rete"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Richiesta di sblocco rete SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Richiesta di sblocco sottoinsieme rete SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Richiesta di sblocco fornitore di servizi SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Richiesta di sblocco aziendale SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Richiesta di sblocco tramite PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Richiesta di sblocco tramite PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Richiesta di sblocco tramite PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Richiesta di sblocco tramite PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Richiesta di sblocco tramite PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Richiesta di sblocco SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Richiesta di sblocco rete1 RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Richiesta di sblocco rete2 RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Richiesta di sblocco HRPD RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Richiesta di sblocco fornitore di servizi RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Richiesta di sblocco aziendale RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Richiesta di sblocco SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Richiesta di sblocco EHPLMN fornitore di servizi…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Richiesta di sblocco ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Richiesta di sblocco IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Richiesta di sblocco fornitore di servizi sottoinsieme rete…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Richiesta di sblocco RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Richiesta di sblocco tramite PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Richiesta di sblocco tramite PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Richiesta di sblocco tramite PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Richiesta di sblocco tramite PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Richiesta di sblocco tramite PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Richiesta di sblocco tramite PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Richiesta di sblocco rete SIM non riuscita."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Richiesta di sblocco sottoinsieme rete SIM non riuscita."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Richiesta di sblocco fornitore di servizi SIM non riuscita."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Richiesta di sblocco aziendale SIM non riuscita."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Richiesta di sblocco SIM non riuscita."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Richiesta di sblocco rete1 RUIM non riuscita."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Richiesta di sblocco rete2 RUIM non riuscita."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Richiesta di sblocco HRPD RUIM non riuscita."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Richiesta di sblocco aziendale RUIM non riuscita."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Richiesta di sblocco fornitore di servizi RUIM non riuscita."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Richiesta di sblocco RUIM non riuscita."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Sblocco tramite PUK non riuscito."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Sblocco tramite PUK non riuscito."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Sblocco tramite PUK non riuscito."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Sblocco tramite PUK non riuscito."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Sblocco tramite PUK non riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Sblocco tramite PUK non riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Sblocco tramite PUK non riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Sblocco tramite PUK non riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Sblocco tramite PUK non riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Sblocco tramite PUK non riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Sblocco tramite PUK non riuscito."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Richiesta di sblocco SPN non riuscita."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Richiesta di sblocco EHPLMN fornitore di servizi non riuscita."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Richiesta di sblocco ICCID non riuscita."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Richiesta di sblocco IMPI non riuscita."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Richiesta di sblocco fornitore di servizi sottoinsieme rete non riuscita."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Sblocco rete SIM riuscito."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Sblocco sottoinsieme rete SIM riuscito."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Sblocco fornitore di servizi SIM riuscito."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Sblocco aziendale SIM riuscito."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Sblocco SIM riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Sblocco rete1 RUIM riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Sblocco rete2 RUIM riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Sblocco HRPD RUIM riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Sblocco fornitore di servizi RUIM riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Sblocco aziendale RUIM riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Sblocco RUIM riuscito."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Sblocco tramite PUK riuscito."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Sblocco tramite PUK riuscito."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Sblocco tramite PUK riuscito."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Sblocco tramite PUK riuscito."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Sblocco tramite PUK riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Sblocco tramite PUK riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Sblocco tramite PUK riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Sblocco tramite PUK riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Sblocco tramite PUK riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Sblocco tramite PUK riuscito."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Sblocco tramite PUK riuscito."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Sblocco SPN riuscito."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Sblocco EHPLMN fornitore di servizi riuscito."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Sblocco ICCID riuscito."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Sblocco IMPI riuscito."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Sblocco fornitore di servizi sottoinsieme rete riuscito."</string> </resources> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 84b5bb1fa70a..1a95c3b09df0 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -195,8 +195,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"מנהל המערכת ביטל את המכשיר לצורכי שימוש אישי"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"המכשיר מנוהל"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"הארגון שלך מנהל מכשיר זה ועשוי לנטר את התנועה ברשת. הקש לקבלת פרטים."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"מנהל המערכת שינה את הגדרות המיקום"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"יש להקיש כדי לראות את הגדרות המיקום שלך."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"לאפליקציות יש הרשאת גישה למיקום שלך"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"יש לפנות למנהל ה-IT כדי לקבל מידע נוסף"</string> <string name="country_detector" msgid="7023275114706088854">"גלאי מדינה"</string> <string name="location_service" msgid="2439187616018455546">"שירות מיקום"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"שירות להתראות מחיישנים"</string> @@ -204,14 +204,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"תתבצע מחיקה של המכשיר"</string> <string name="factory_reset_message" msgid="2657049595153992213">"לא ניתן להשתמש באפליקציה של מנהל המערכת.\n\nאם יש לך שאלות, יש ליצור קשר עם מנהל המערכת של הארגון."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"ההדפסה הושבתה על ידי <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"ביטול חסימה של אפל\' אישיות"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"האפליקציות ייחסמו מחר"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"מנהל ה-IT לא מתיר השהיה של יותר מ-<xliff:g id="DAYS">%1$d</xliff:g> ימים של פרופיל העבודה"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"הפעלה של פרופיל העבודה"</string> <string name="me" msgid="6207584824693813140">"אני"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"אפשרויות טאבלט"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"אפשרויות Android TV"</string> @@ -245,10 +241,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"אפשרויות טלפון"</string> <string name="global_action_lock" msgid="6949357274257655383">"נעילת מסך"</string> <string name="global_action_power_off" msgid="4404936470711393203">"כיבוי"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"הפעלה"</string> + <string name="global_action_restart" msgid="4678451019561687074">"הפעלה מחדש"</string> <string name="global_action_emergency" msgid="1387617624177105088">"חירום"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"דיווח על באג"</string> <string name="global_action_logout" msgid="6093581310002476511">"סיום הפעלה"</string> @@ -434,11 +428,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"גישה לפקודות ספק מיקום נוספות"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"מאפשרת לאפליקציה לגשת לפקודות נוספות של ספק המיקום. הרשאה זו עשויה לאפשר לאפליקציה לשבש את פעולת ה-GPS או מקורות מיקום אחרים."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"קבלת גישה למיקום מדויק בחזית בלבד"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"אפליקציה זו יכולה לזהות את המיקום המדויק שלך רק כאשר היא פועלת בחזית. כדי שהאפליקציה תוכל להשתמש בשירותי המיקום, עליהם להיות מופעלים וזמינים במכשיר. ייתכן שפעולה זו תגביר את צריכת הסוללה."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"האפליקציה הזו יכולה לקבל את המיקום המדויק שלך משירותי המיקום כאשר היא בשימוש. האפליקציה תקבל את המיקום רק אם הפעלת את שירותי המיקום במכשיר. פעולה זו עלולה להגביר את השימוש בסוללה."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"קבלת גישה למיקום משוער תתבצע בחזית בלבד"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"אפליקציה זו יכולה לזהות את המיקום המשוער שלך רק כאשר היא פועלת בחזית. שירותי מיקום חייבים להיות מופעלים וזמינים במכשיר שלך כדי שהאפליקציה תוכל להשתמש בהם."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"כאשר האפליקציה בשימוש היא יכולה לקבל משירותי המיקום את המיקום המשוער שלך. האפליקציה תקבל את המיקום רק אם הפעלת את שירותי המיקום במכשיר."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"גישה למיקום ברקע"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"האפליקציה הזו יכולה לגשת למיקום כשהיא רצה ברקע, בנוסף לקבלת גישה למיקום בחזית."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"לאפליקציה תמיד יש גישה למיקום, גם כשאינה בשימוש."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"שנה את הגדרות האודיו שלך"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"מאפשר לאפליקציה לשנות הגדרות אודיו גלובליות כמו עוצמת קול ובחירת הרמקול המשמש לפלט."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"הקלט אודיו"</string> @@ -450,11 +444,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"צלם תמונות וסרטונים"</string> <string name="permdesc_camera" msgid="1354600178048761499">"אפליקציה זו יכולה להשתמש במצלמה כדי לצלם תמונות ולהקליט סרטונים בכל עת."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"הרשאת גישה לאפליקציה או לשירות למצלמות המערכת כדי לצלם תמונות וסרטונים"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"אפליקציה זו בעלת ההרשאות, או אפליקציית המערכת הזו, יכולה לצלם תמונות ולהקליט סרטונים באמצעות מצלמת מערכת בכל זמן. בנוסף, לאפליקציה נדרשת ההרשאה android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"אפליקציה או שירות יוכלו לקבל קריאות חוזרות (callback) כשמכשירי מצלמה ייפתחו או ייסגרו."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"האפליקציה הזו יכולה לקבל קריאות חוזרות (callback) כשמכשיר מצלמה כלשהו נפתח (באמצעות אפליקציה) או נסגר."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"שליטה ברטט"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"מאפשר לאפליקציה לשלוט ברטט."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"מאפשרת לאפליקציה לקבל גישה למצב רטט."</string> @@ -1390,13 +1382,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"מתבצעת בדיקה של התוכן הנוכחי"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> חדש"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"צריך להקיש כדי להגדיר"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"להעברת תמונות ומדיה"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"בעיה עם <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"יש להקיש כדי לתקן את הבעיה"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> פגום. בחר כדי לטפל בבעיה."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> לא נתמך"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"מכשיר זה אינו תומך ב-<xliff:g id="NAME">%s</xliff:g> זה. הקש כדי להגדיר בפורמט נתמך."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"<xliff:g id="NAME">%s</xliff:g> לא נתמך במכשיר הזה. בחר כדי להגדיר בפורמט שנתמך."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"במכשיר הזה אין תמיכה בהתקן <xliff:g id="NAME">%s</xliff:g> זה."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> הוסר באופן בלתי צפוי"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"יש לבחור באפשרות להוצאת מדיה לפני ההסרה, כדי לא לאבד תוכן"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> הוסר"</string> @@ -1668,24 +1663,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"האם להעלות את עוצמת הקול מעל לרמה המומלצת?\n\nהאזנה בעוצמת קול גבוהה למשכי זמן ממושכים עלולה לפגוע בשמיעה."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"להשתמש בקיצור הדרך לתכונת הנגישות?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"כשקיצור הדרך מופעל, לחיצה על שני לחצני עוצמת הקול למשך שלוש שניות מפעילה את תכונת הנגישות."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"להפעיל את תכונות הנגישות?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"לחיצה ארוכה על שני לחצני עוצמת הקול למשך מספר שניות מפעילה את תכונות הנגישות. בעקבות זאת, ייתכן שאופן הפעולה של המכשיר ישתנה.\n\nהתכונות הנוכחיות:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nניתן לשנות תכונות נבחרות ב\'הגדרות\' > \'נגישות\'."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"להפעיל את TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"ניתן ללחוץ על שני מקשי עוצמת הקול למשך מספר שניות כדי להפעיל את TalkBack, קורא מסך שעוזר לעיוורים או ללקויי ראייה. TalkBack משנה לגמרי את אופן הפעולה של המכשיר.\n\nאפשר לשנות את מקשי הקיצור האלה לתכונה נוספת ב\'הגדרות\' > \'נגישות\'."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"להפעיל את <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"ניתן ללחוץ על שני מקשי עוצמת הקול למשך מספר שניות כדי להפעיל את <xliff:g id="SERVICE">%1$s</xliff:g>, תכונת נגישות. בעקבות זאת, ייתכן שאופן הפעולה של המכשיר ישתנה.\n\nאפשר לשנות את מקשי הקיצור האלה לתכונה נוספת ב\'הגדרות\' > \'נגישות\'."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"אני רוצה להפעיל"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"לא להפעיל"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ברצונך להעניק לשירות <xliff:g id="SERVICE">%1$s</xliff:g> שליטה מלאה במכשיר?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"אם השירות <xliff:g id="SERVICE">%1$s</xliff:g> יופעל, המכשיר לא ישתמש בנעילת המסך כדי לשפר את הצפנת הנתונים."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"שליטה מלאה מתאימה לאפליקציות שעוזרות עם צורכי הנגישות שלך, אבל לא לרוב האפליקציות."</string> @@ -1696,10 +1682,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"אישור"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"עדיף שלא"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"יש להקיש על תכונה כדי להתחיל להשתמש בה:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"בחירת תכונה לשימוש עם לחצן הנגישות"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"בחירת תכונות לשימוש עם מקש הקיצור לעוצמת הקול"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> כובה"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"עריכת קיצורי הדרך"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"סיום"</string> @@ -1707,23 +1691,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"השתמש בקיצור הדרך"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"היפוך צבעים"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"תיקון צבעים"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"לחצני עוצמת הקול נלחצו בלחיצה ארוכה. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> הופעל."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"לחצני עוצמת הקול נלחצו בלחיצה ארוכה. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> הושבת."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"יש ללחוץ לחיצה ארוכה על שני לחצני עוצמת הקול למשך שלוש שניות כדי להשתמש בשירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"יש לבחור תכונה שתופעל בעת לחיצה על לחצן הנגישות:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"יש לבחור תכונה שתופעל באמצעות תנועת הנגישות (החלקה למעלה מתחתית המסך בעזרת שתי אצבעות):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"יש לבחור תכונה שתופעל באמצעות תנועת הנגישות (החלקה למעלה מתחתית המסך בעזרת שלוש אצבעות):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"כדי לעבור בין תכונות, יש ללחוץ לחיצה ארוכה על לחצן הנגישות."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"כדי לעבור בין תכונות, יש להחליק כלפי מעלה בעזרת שתי אצבעות ולהחזיק."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"כדי לעבור בין תכונות, יש להחליק כלפי מעלה בעזרת שלוש אצבעות ולהחזיק."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"הגדלה"</string> <string name="user_switched" msgid="7249833311585228097">"המשתמש הנוכחי <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"עובר אל <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2118,8 +2094,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> קבצים</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + קובץ אחד (<xliff:g id="COUNT_1">%d</xliff:g>)</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"אין אנשים מומלצים שניתן לשתף איתם"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"רשימת האפליקציות"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"לאפליקציה זו לא ניתנה הרשאת הקלטה, אבל אפשר להקליט אודיו באמצעות התקן ה-USB הזה."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"בית"</string> @@ -2155,222 +2130,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"אי אפשר לפתוח את התוכן הזה באמצעות אפליקציות לעבודה"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"אין תמיכה בתוכן הזה באפליקציות לשימוש אישי"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"אי אפשר לפתוח את התוכן הזה באמצעות אפליקציות לשימוש אישי"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"הקלטה או הפעלה של אודיו בשיחות טלפוניות"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"כאשר האפליקציה הזו מוגדרת כאפליקציית חייגן בברירת מחדל, תהיה לה הרשאה להקליט ולהפעיל אודיו בשיחות טלפוניות."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"קוד אימות לביטול הנעילה של רשת SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"קוד אימות לביטול הנעילה של תת-קבוצה ברשת SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"קוד אימות לביטול הנעילה של כרטיס SIM עסקי"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"קוד אימות לביטול הנעילה של ספק שירות SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"קוד אימות לביטול נעילת SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"יש להזין PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"יש להזין PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"יש להזין PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"יש להזין PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"יש להזין PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"קוד אימות לביטול הנעילה של RUIM network1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"קוד אימות לביטול הנעילה של RUIM network2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"קוד אימות לביטול הנעילה של RUIM hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"קוד אימות לביטול הנעילה של כרטיס RUIM עסקי"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"קוד אימות לביטול הנעילה של ספק שירות RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"קוד אימות לביטול הנעילה של כרטיס RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"יש להזין PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"יש להזין PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"יש להזין PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"יש להזין PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"יש להזין PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"יש להזין PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"קוד אימות לביטול נעילת SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"קוד אימות לביטול הנעילה של PLMN לבית כשווה-ערך ל-SP"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"קוד אימות לביטול הנעילה של ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"קוד אימות של ביטול נעילת IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"קוד אימות לביטול הנעילה של ספק שירות של תת-קבוצה ברשת"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"נשלחת בקשה לביטול נעילה של רשת SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"נשלחת בקשה לביטול הנעילה של תת-קבוצה ברשת SIM …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"נשלחת בקשה לביטול נעילה של ספק שירות SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"נשלחת בקשה לביטול נעילה של כרטיס SIM עסקי…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"נשלחת בקשה לביטול נעילה של PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"נשלחת בקשה לביטול נעילה של PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"נשלחת בקשה לביטול נעילה של PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"נשלחת בקשה לביטול נעילה של PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"נשלחת בקשה לביטול נעילה של PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"נשלחת בקשה לביטול נעילת SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"נשלחת בקשה לביטול נעילה של RUIM network1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"נשלחת בקשה לביטול נעילה של RUIM network2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"נשלחת בקשה לביטול נעילה של RUIM hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"נשלחת בקשה לביטול נעילה של ספק שירות RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"נשלחת בקשה לביטול נעילה של כרטיס RUIM עסקי…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"נשלחת בקשה לביטול נעילת SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"נשלחת בקשה לביטול נעילה של PLMN לבית כשווה-ערך ל-SP…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"נשלחת בקשה לביטול נעילה של ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"נשלחת בקשה לביטול נעילה של IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"נשלחת בקשה לביטול הנעילה של ספק שירות של תת-קבוצה ברשת…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"נשלחת בקשה לביטול נעילה של כרטיס RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"נשלחת בקשה לביטול נעילה של PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"נשלחת בקשה לביטול נעילה של PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"נשלחת בקשה לביטול נעילה של PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"נשלחת בקשה לביטול נעילה של PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"נשלחת בקשה לביטול נעילה של PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"נשלחת בקשה לביטול נעילה של PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"נכשלה הבקשה לביטול הנעילה של רשת SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"נכשלה הבקשה לביטול הנעילה של תת-קבוצה ברשת SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"נכשלה הבקשה לביטול הנעילה של ספק שירות SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"נכשלה הבקשה לביטול הנעילה של כרטיס SIM עסקי."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"נכשלה הבקשה לביטול נעילת SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"נכשלה הבקשה לביטול הנעילה של RUIM network1."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"נכשלה הבקשה לביטול הנעילה של RUIM network2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"נכשלה הבקשה לביטול נעילה של RUIM hrpd."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"נכשלה הבקשה לביטול הנעילה של כרטיס RUIM עסקי."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"נכשלה הבקשה לביטול הנעילה של ספק שירות RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"נכשלה הבקשה לביטול הנעילה של כרטיס RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"נכשל ביטול נעילה של PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"נכשל ביטול נעילה של PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"נכשל ביטול נעילה של PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"נכשל ביטול נעילה של PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"נכשל ביטול נעילה של PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"נכשל ביטול נעילה של PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"נכשל ביטול נעילה של PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"נכשל ביטול נעילה של PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"נכשל ביטול נעילה של PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"נכשל ביטול נעילה של PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"נכשל ביטול נעילה של PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"נכשלה הבקשה לביטול נעילת SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"נכשלה הבקשה לביטול הנעילה של PLMN לבית כשווה-ערך ל-SP."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"נכשלה הבקשה לביטול נעילה של ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"נכשלה הבקשה לביטול נעילה של IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"נכשלה הבקשה לביטול הנעילה של ספק שירות של תת-קבוצה ברשת."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"ביטול הנעילה של רשת SIM בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"ביטול הנעילה של תת-קבוצה ברשת SIM בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"ביטול הנעילה של ספק שירות SIM בוצע בהצלחה ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"ביטול הנעילה של כרטיס SIM עסקי בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"ביטול נעילת SIM בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"ביטול הנעילה של RUIM network1 בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"ביטול הנעילה של RUIM network2 בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"ביטול הנעילה של RUIM hrpd בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"ביטול הנעילה של ספק שירות RUIM בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"ביטול הנעילה של כרטיס RUIM עסקי בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"ביטול הנעילה של כרטיס RUIM בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"ביטול נעילה של PUK בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"ביטול נעילה של PUK בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"ביטול נעילה של PUK בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"ביטול נעילה של PUK בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"ביטול נעילה של PUK בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"ביטול נעילה של PUK בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"ביטול נעילה של PUK בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"ביטול נעילה של PUK בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"ביטול נעילה של PUK בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"ביטול נעילה של PUK בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"ביטול נעילה של PUK בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"ביטול נעילת SPN בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"בוצע בהצלחה ביטול הנעילה של PLMN לבית כשווה-ערך ל-SP."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ביטול הנעילה של ICCID בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"ביטול הנעילה של IMPI בוצע בהצלחה."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"ביטול הנעילה של ספק שירות של תת-קבוצה ברשת בוצע בהצלחה."</string> </resources> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 577e3a3a9e40..c56e2dc70f46 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"管理者により、デバイスの個人使用が許可されました"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"管理対象のデバイス"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"このデバイスは組織によって管理され、ネットワーク トラフィックが監視される場合があります。詳しくはタップしてください。"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"位置情報の設定が管理者によって変更されました"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"タップすると位置情報の設定が表示されます。"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"アプリに位置情報へのアクセスを許可しました"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"詳しくは IT 管理者にお問い合わせください"</string> <string name="country_detector" msgid="7023275114706088854">"国の検出"</string> <string name="location_service" msgid="2439187616018455546">"位置情報サービス"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"センサー通知サービス"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"デバイスのデータが消去されます"</string> <string name="factory_reset_message" msgid="2657049595153992213">"管理アプリを使用できません。デバイスのデータはこれから消去されます。\n\nご不明な点がある場合は、組織の管理者にお問い合わせください。"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"「<xliff:g id="OWNER_APP">%s</xliff:g>」により印刷は無効にされています。"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"個人用アプリのブロック解除"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"アプリは明日ブロックされます"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT 管理者は、仕事用プロファイルの一時停止が <xliff:g id="DAYS">%1$d</xliff:g> 日を超えることを許可していません"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"仕事用プロファイルを有効にする"</string> <string name="me" msgid="6207584824693813140">"自分"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"タブレットオプション"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV のオプション"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"携帯電話オプション"</string> <string name="global_action_lock" msgid="6949357274257655383">"画面ロック"</string> <string name="global_action_power_off" msgid="4404936470711393203">"電源を切る"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"電源"</string> + <string name="global_action_restart" msgid="4678451019561687074">"再起動"</string> <string name="global_action_emergency" msgid="1387617624177105088">"緊急通報"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"バグレポート"</string> <string name="global_action_logout" msgid="6093581310002476511">"セッションを終了"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"位置情報提供者の追加コマンドアクセス"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"位置情報提供元の追加のコマンドにアクセスすることをアプリに許可します。許可すると、アプリがGPSなどの位置情報源の動作を妨害する恐れがあります。"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"フォアグラウンドでのみ正確な位置情報にアクセス"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"このアプリは、フォアグラウンドでのみユーザーの正確な位置情報を取得できます。位置情報サービスを ON にして、デバイスでアプリがサービスを利用できるようにする必要があります。これにより、電池の消費量が増える可能性があります。"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"このアプリは、使用中に、位置情報サービスからデバイスの正確な位置情報を取得できます。アプリが位置情報を取得するには、デバイスで位置情報サービスがオンになっている必要があります。この場合、電池使用量が増えることがあります。"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"フォアグラウンドでのみおおよその位置情報にアクセス"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"このアプリは、フォアグラウンドでのみユーザーのおおよその位置情報を取得できます。位置情報サービスを ON にして、デバイスでアプリがサービスを利用できるようにする必要があります。"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"このアプリは、使用中に、位置情報サービスからデバイスのおおよその位置情報を取得できます。アプリが位置情報を取得するには、デバイスで位置情報サービスがオンになっている必要があります。"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"バックグラウンドでの位置情報へのアクセス"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"このアプリは、フォアグラウンドで位置情報にアクセスできるだけでなく、バックグラウンドでの実行中も位置情報にアクセスできます。"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"このアプリは、使用中でない場合でも、常に位置情報にアクセスできます。"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"音声設定の変更"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"音声全般の設定(音量、出力に使用するスピーカーなど)の変更をアプリに許可します。"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"録音"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"写真と動画の撮影"</string> <string name="permdesc_camera" msgid="1354600178048761499">"このアプリは、いつでもカメラを使用して写真や動画を撮影できます。"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"写真と動画を撮影するには、システムカメラへのアクセスをアプリまたはサービスに許可してください"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"権限を付与されたこのアプリまたはシステムアプリは、いつでもシステムカメラを使用して写真と動画を撮影できます。アプリには android.permission.CAMERA 権限も必要です"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"カメラデバイスが起動または終了したときにコールバックを受け取ることを、アプリまたはサービスに許可してください。"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"このアプリは、カメラデバイスが(なんらかのアプリによって)起動するとき、または終了するときにコールバックを受け取ることができます。"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"バイブレーションの制御"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"バイブレーションの制御をアプリに許可します。"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"バイブレーションのオン / オフ状態の把握をアプリに許可します。"</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"現在のコンテンツを確認しています"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"新しい <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"タップして設定してください"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"写真などのメディア転送用"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g>に関する問題"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"タップして修正してください"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g>が破損しています。修正するには選択してください。"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"対応していない<xliff:g id="NAME">%s</xliff:g>です"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"このデバイスはこの <xliff:g id="NAME">%s</xliff:g>に対応していません。タップして、対応している形式でセットアップしてください。"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"このデバイスはこの <xliff:g id="NAME">%s</xliff:g>に対応していません。サポートされるフォーマットで設定するには選択してください。"</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g>が不適切に取り外されました"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"コンテンツの喪失を防ぐため、メディアを取り出してから取り外してください"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g>の取り外し"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"推奨レベルを超えるまで音量を上げますか?\n\n大音量で長時間聞き続けると、聴力を損なう恐れがあります。"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ユーザー補助機能のショートカットの使用"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ショートカットが ON の場合、両方の音量ボタンを 3 秒ほど長押しするとユーザー補助機能が起動します。"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"ユーザー補助機能を ON にしますか?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"音量大と音量小の両方のボタンを数秒ほど長押しすると、ユーザー補助機能が ON になります。この機能が ON になると、デバイスの動作が変わることがあります。\n\n現在の機能:\n<xliff:g id="SERVICE">%1$s</xliff:g>\n選択した機能は [設定] > [ユーザー補助] で変更できます。"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack を ON にしますか?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"音量大と音量小の両方のボタンを数秒ほど長押しすると、TalkBack が ON になります。TalkBack は、目の不自由な方や視力の弱い方向けのスクリーン リーダーです。TalkBack を ON にすると、デバイスの動作が完全に変わります。\n\nこのショートカットは [設定] > [ユーザー補助] で別の機能に変更できます。"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> を ON にしますか?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"音量大と音量小の両方のボタンを数秒ほど長押しすると、ユーザー補助機能の <xliff:g id="SERVICE">%1$s</xliff:g> が ON になります。この機能が ON になると、デバイスの動作が変わることがあります。\n\nこのショートカットは [設定] > [ユーザー補助] で別の機能に変更できます。"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ON にする"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ON にしない"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> にデバイスのフル コントロールを許可しますか?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> をオンにすると、デバイスデータの暗号化の強化に画面ロックは使用されなくなります。"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"フル コントロールは、ユーザー補助機能を必要とするユーザーをサポートするアプリには適していますが、ほとんどのアプリには適していません。"</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"許可"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"許可しない"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"使用を開始する機能をタップ:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ユーザー補助機能ボタンで使用する機能の選択"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"音量ボタンのショートカットで使用する機能の選択"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> はオフになっています"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ショートカットの編集"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"完了"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ショートカットを使用"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"色反転"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色補正"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"音量ボタンを長押ししました。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> が ON になりました。"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"音量ボタンを長押ししました。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> が OFF になりました。"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> を使用するには、音量大と音量小の両方のボタンを 3 秒間長押ししてください"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"ユーザー補助機能ボタンをタップした場合に使用する機能を選択してください。"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"ユーザー補助操作(2 本の指で画面の下から上にスワイプ)で使用する機能を選択してください。"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"ユーザー補助操作(3 本の指で画面の下から上にスワイプ)で使用する機能を選択してください。"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"機能を切り替えるには、ユーザー補助機能ボタンを長押しします。"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"機能を切り替えるには、2 本の指で上にスワイプしたまま長押しします。"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"機能を切り替えるには、3 本の指で上にスワイプしたまま長押しします。"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"拡大"</string> <string name="user_switched" msgid="7249833311585228097">"現在のユーザーは<xliff:g id="NAME">%1$s</xliff:g>です。"</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>に切り替えています…"</string> @@ -2050,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g>、他 <xliff:g id="COUNT_3">%d</xliff:g> ファイル</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g>、他 <xliff:g id="COUNT_1">%d</xliff:g> ファイル</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"おすすめの共有相手はいません"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"アプリのリスト"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"このアプリに録音権限は付与されていませんが、この USB デバイスから音声を収集できるようになります。"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"ホーム"</string> @@ -2087,222 +2063,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"このコンテンツを開くことができる仕事用アプリはありません"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"このコンテンツに対応する個人用アプリはありません"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"このコンテンツを開くことができる個人用アプリはありません"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"通話中に録音または音声の再生を行う"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"デフォルトの電話アプリケーションとして割り当てられている場合、このアプリに通話中の録音または音声の再生を許可します。"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM のネットワーク ロック解除 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM のネットワーク サブネットのロック解除 PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM の企業ロック解除 PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM のサービス プロバイダのロック解除 PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM のロック解除 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK を入力"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK を入力"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK を入力"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK を入力"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK を入力"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM の Network1 のロック解除 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM の Network2 のロック解除 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"HRPD のロック解除 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM の企業ロック解除 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM のサービス プロバイダのロック解除 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM のロック解除 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK を入力"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK を入力"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK を入力"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK を入力"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK を入力"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK を入力"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN のロック解除 PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN のロック解除 PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID のロック解除 PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI のロック解除 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"ネットワーク サブセットのサービス プロバイダのロック解除 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM のネットワーク ロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM のネットワーク サブセットのロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM のサービス プロバイダのロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"SIM の企業ロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK によるロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK によるロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK によるロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK によるロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK によるロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM のロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM の Network1 のロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM の Network2 のロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"HRPD のロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM のサービス プロバイダのロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM の企業ロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN のロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP Equivalent Home PLMN のロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID のロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI のロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"ネットワーク サブセットのサービス プロバイダのロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM のロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK によるロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK によるロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK によるロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK によるロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK によるロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK によるロック解除をリクエストしています…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM のネットワーク ロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM のネットワーク サブセットのロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM のサービス プロバイダのロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM の企業ロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM のロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM の Network1 のロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM の Network2 のロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"HRPD のロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM の企業ロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM のサービス プロバイダのロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM のロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK によるロック解除ができませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK によるロック解除ができませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK によるロック解除ができませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK によるロック解除ができませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK によるロック解除ができませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK によるロック解除ができませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK によるロック解除ができませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK によるロック解除ができませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK によるロック解除ができませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK によるロック解除ができませんでした。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK によるロック解除ができませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN のロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN のロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID のロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI のロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"ネットワーク サブセットのサービス プロバイダのロック解除をリクエストできませんでした。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM のネットワーク ロックを解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM のネットワーク サブセットをロック解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM のサービス プロバイダをロック解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM の企業ロックを解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM をロック解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM の Network1 をロック解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM の Network2 をロック解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"HRPD のロックを解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM のサービス プロバイダ ロックを解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM の企業をロック解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM をロック解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK によりロックを解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK によりロックを解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK によりロックを解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK によりロックを解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK によりロックを解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK によりロックを解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK によりロックを解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK によりロックを解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK によりロックを解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK によりロックを解除しました。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK によりロックを解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN をロック解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN をロック解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID をロック解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI をロック解除しました。"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"ネットワーク サブセットのサービス プロバイダをロック解除しました。"</string> </resources> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index 4e5e00a8a6d2..54a88dd35e9a 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"ადმინისტრატორმა გაათავისუფლა მოწყობილობა პირადი გამოყენებისთვის"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"მოწყობილობა მართულია"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"ამ მოწყობილობას თქვენი ორგანიზაცია მართავს და მას ქსელის ტრაფიკის მონიტორინგი შეუძლია. შეეხეთ დამატებითი დეტალებისთვის."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"მდებარეობის პარამეტრები თქვენმა ადმინისტრატორმა შეცვალა"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"შეეხეთ თქვენი მდებარეობის პარამეტრების სანახავად."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"აპებს შეუძლია თქვენს მდებარეობაზე წვდომა"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"მეტის შესატყობად დაუკავშირდით თქვენს IT ადმინისტრატორს"</string> <string name="country_detector" msgid="7023275114706088854">"ქვეყნის დეტექტორი"</string> <string name="location_service" msgid="2439187616018455546">"მდებარეობის სერვისი"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"სენსორის შეტყობინების სერვისი"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"თქვენი მოწყობილობა წაიშლება"</string> <string name="factory_reset_message" msgid="2657049595153992213">"ადმინისტრატორის აპის გამოყენება ვერ მოხერხდება. თქვენი მოწყობილობა ახლა ამოიშლება.\n\nთუ შეკითხვები გაქვთ, დაუკავშირდით თქვენი ორგანიზაციის ადმინისტრატორს."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"ბეჭდვა გათიშულია <xliff:g id="OWNER_APP">%s</xliff:g>-ის მიერ."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"განბლოკეთ თქვენი პირადი აპები"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"აპები ხვალ დაიბლოკება"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"თქვენი IT ადმინისტრატორი არ აძლევს უფლებას თქვენს სამსახურის პროფილს, დაპაუზებული იყოს <xliff:g id="DAYS">%1$d</xliff:g> დღეზე ხანგრძლივად."</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"სამსახურის პროფილის ჩართვა"</string> <string name="me" msgid="6207584824693813140">"მე"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ტაბლეტის პარამეტრები"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ვარიანტები"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"ტელეფონის პარამეტრები"</string> <string name="global_action_lock" msgid="6949357274257655383">"ეკრანის დაბლოკვა"</string> <string name="global_action_power_off" msgid="4404936470711393203">"გამორთვ."</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"ძალა"</string> + <string name="global_action_restart" msgid="4678451019561687074">"გადატვირთვა"</string> <string name="global_action_emergency" msgid="1387617624177105088">"საგანგებო სამსახურები"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"ხარვეზის შესახებ ანგარიში"</string> <string name="global_action_logout" msgid="6093581310002476511">"სესიის დასრულება"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"მდებარეობის პროვაიდერის დამატებით ბრძანებებზე წვდომა"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"აპს შეეძლება წვდომა ჰქონდეს მდებარეობის სერვისის დამატებით ბრძანებებზე. შესაძლოა აპმა ეს გამოიყენოს GPS-ისა და მდებარეობის სხვა წყაროების მუშაობის პროცესში ჩარევისთვის."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"ზუსტ მდებარეობაზე წვდომა მხოლოდ წინა პლანზე"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ამ აპს შეუძლია თქვენი ზუსტი მდებარეობის შესახებ ინფორმაციის მიღება მხოლოდ მაშინ, როცა გაშვებულია წინა პლანზე. თქვენს მოწყობილობაზე ჩართული და ხელმისაწვდომი უნდა იყოს მდებარეობის სერვისები, აპმა მათი გამოყენება რომ შეძლოს. ამან შეიძლება გაზარდოს ბატარეის მოხმარება."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ამ აპს, მისი გამოყენების პროცესში, შეუძლია თქვენი ზუსტი მდებარეობის შესახებ ინფორმაციის მიღება მდებარეობის სერვისებიდან. იმისთვის, რომ აპმა მდებარეობის შესახებ ინფორმაცია მიიღოს, თქვენს მოწყობილობაზე ჩართული უნდა იყოს მდებარეობის სერვისები. ამან შეიძლება ბატარეის მოხმარება გაზარდოს."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"მიახლოებით მდებარეობაზე წვდომა მხოლოდ წინა პლანზე"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ამ აპს შეუძლია თქვენი მიახლოებითი მდებარეობის შესახებ ინფორმაციის მიღება მხოლოდ მაშინ, როცა გაშვებულია წინა პლანზე. თქვენს მოწყობილობაზე ჩართული და ხელმისაწვდომი უნდა იყოს მდებარეობის სერვისები, აპმა მათი გამოყენება რომ შეძლოს."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ამ აპს, მისი გამოყენების პროცესში, შეუძლია თქვენი მიახლოებითი მდებარეობის შესახებ ინფორმაციის მიღება მდებარეობის სერვისებიდან. იმისთვის, რომ აპმა მდებარეობის შესახებ ინფორმაცია მიიღოს, თქვენს მოწყობილობაზე ჩართული უნდა იყოს მდებარეობის სერვისები."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"მდებარეობაზე წვდომა ფონურ რეჟიმში"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"წინა პლანზე ყოფნისას მდებარეობაზე წვდომის გარდა, ამ აპს შეუძლია, ჰქონდეს წვდომა მდებარეობაზე ფონურ რეჟიმში მუშაობისას."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ამ აპს შეუძლია წვდომა მდებარეობაზე ნებისმიერ დროს, მაშინაც კი, როცა არ გამოიყენება."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"თქვენი აუდიო პარამეტრების შეცვლა"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"აპს შეეძლება აუდიოს გლობალური პარამეტრების შეცვლა. მაგ.: ხმის სიმაღლე და რომელი დინამიკი გამოიყენება სიგნალის გამოსტანად."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"აუდიოს ჩაწერა"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"სურათებისა და ვიდეოების გადაღება"</string> <string name="permdesc_camera" msgid="1354600178048761499">"ამ აპს ნებისმიერ დროს შეუძლია კამერით სურათების გადაღება და ვიდეოების ჩაწერა."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"ნება დაერთოს აპლიკაციას ან სერვისს, ჰქონდეს წვდომა სისტემის კამერებზე სურათების და ვიდეოების გადასაღებად"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"ამ პრივილეგირებულ ან სისტემის აპს შეუძლია ფოტოების გადაღება და ვიდეოების ჩაწერა ნებისმიერ დროს სისტემის კამერის გამოყენებით. საჭიროა, რომ აპს ჰქოდეს android.permission.CAMERA ნებართვაც"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"ნება დაერთოს აპლიკაციას ან სერვისს, მიიღოს გადმორეკვები კამერის მოწყობილობის გახსნის ან დახურვისას."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"ამ აპს შეუძლია მიიღოს გადმორეკვები, როდესაც რომელიმე კამერის მოწყობილობა იხსნება (რომელიმე აპლიკაციით) ან იხურება."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"ვიბრაციის კონტროლი"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"აპს შეეძლება, მართოს ვიბრირება."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"ნებას რთავს აპს, ჰქონდეს წვდომა ვიბრაციის მდგომარეობაზე."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"მიმდინარეობს ამჟამინდელი კონტენტის შემოწმება"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"ახალი <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"შეეხეთ დასაყენებლად"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ფოტოებისა და მედიის გადასატანად"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"პრობლემა <xliff:g id="NAME">%s</xliff:g>-თან მიმართებით"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"შეეხეთ გამოსასწორებლად"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> დაზიანებულია. შეეხეთ გასასწორებლად."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"მხარდაუჭერელი <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"ეს <xliff:g id="NAME">%s</xliff:g> მხარდაუჭერელია არ მოწყობილობაზე. შეეხეთ მხარდაჭერილ ფორმატში დასაყენებლად."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"ეს <xliff:g id="NAME">%s</xliff:g> მხარდაუჭერელია ამ მოწყობილობაზე. შეეხეთ მხარდაჭერილ ფორმატში დასაყენებლად."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"ეს <xliff:g id="NAME">%s</xliff:g> მხარდაუჭერელია ამ მოწყობილობაზე."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"მოულოდნელად მოხდა <xliff:g id="NAME">%s</xliff:g>-ის ამოღება"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"გაწყვიტეთ მედია-მოწყობილობასთან კავშირი მის ამოშლამდე, კონტენტის დაკარგვის ასაცილებლად"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g>-თან კავშირი გაწყვეტილია"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"გსურთ ხმის რეკომენდებულ დონეზე მაღლა აწევა?\n\nხანგრძლივად ხმამაღლა მოსმენით შესაძლოა სმენადობა დაიზიანოთ."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"გსურთ მარტივი წვდომის მალსახმობის გამოყენება?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"თუ მალსახმობი ჩართულია, ხმის ორივე ღილაკზე 3 წამის განმავლობაში დაჭერით მარტივი წვდომის ფუნქცია ჩაირთვება."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"გსურთ, ჩართოთ მარტივი წვდომის ფუნქციები?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"ხმის ორივე ღილაკზე ხანგრძლივად დაჭერა რამდენიმე წამის განმავლობაში ჩართავს მარტივი წვდომის ფუნქციებს. ამ ქმედებამ შეიძლება შეცვალოს თქვენი მოწყობილობის მუშაობის პრინციპი.\n\nამჟამინდელი ფუნქციები:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nარჩეული ფუნქციების შეცვლა შესაძლებელია აქ: პარამეტრები > მარტივი წვდომა."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"ჩაირთოს TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"ხმის ორივე ღილაკზე რამდენიმე წამის განმავლობაში დაჭერით ჩაირთვება TalkBack, ეკრანის წამკითხველი, რომელიც ეხმარება მხედველობის პრობლემების მქონე ან უსინათლო ადამიანებს. TalkBack მთლიანად ცვლის თქვენი მოწყობილობის მუშაობის პრინციპს.\n\nამ მალსახმობის სხვა ფუნქციით შეცვლა შეგიძლიათ აქ: პარამეტრები > მარტივი წვდომა."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"ჩაირთოს <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"ხმის ორივე ღილაკზე რამდენიმე წამის განმავლობაში დაჭერით ჩაირთვება <xliff:g id="SERVICE">%1$s</xliff:g>, რომელიც მარტივი წვდომის ფუნქციაა. ამან შეიძლება შეცვალოს თქვენი მოწყობილობის მუშაობის პრინციპი.\n\nამ მალსახმობის შეცვლა სხვა ფუნქციით შეგიძლიათ აქ: პარამეტრები > აპები."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ჩართვა"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"არ ჩაირთოს"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"დართავთ ნებას <xliff:g id="SERVICE">%1$s</xliff:g>-ს, სრულად მართოს თქვენი მოწყობილობა?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g>-ს თუ ჩართავთ, მონაცემთა დაშიფვრის გასაძლიერებლად თქვენი მოწყობილობა ეკრანის დაბლოკვას არ გამოიყენებს."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"სრული კონტროლი გამოსადეგია აპებისთვის, რომლებიც მარტივი წვდომის საჭიროებისას გეხმარებათ, მაგრამ არა აპების უმრავლესობისთვის."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"დაშვება"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"უარყოფა"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"შეეხეთ ფუნქციას მისი გამოყენების დასაწყებად:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"აირჩიეთ ფუნქციები, რომელთა გამოყენებაც გსურთ მარტივი წვდომის ღილაკით"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"აირჩიეთ ფუნქციები, რომელთა გამოყენებაც გსურთ ხმის ღილაკის მალსახმობით"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> გამორთულია"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"მალსახმობების რედაქტირება"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"მზადაა"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"მალსახმობის გამოყენება"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ფერთა ინვერსია"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ფერთა კორექცია"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ჩართულია."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> გამორთულია."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> რომ გამოიყენოთ, დააჭირეთ ხმის ორივე ღილაკზე 3 წამის განმავლობაში"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"აირჩიეთ მარტივი წვდომის ღილაკზე შეხებისას გამოსაყენებელი ფუნქცია:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"აირჩიეთ მარტივი წვდომის ჟესტთან (ორი თითით გადაფურცვლა ეკრანის ქვედა კიდიდან ზემოთ) გამოსაყენებელი ფუნქცია:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"აირჩიეთ მარტივი წვდომის ჟესტთან (სამი თითით გადაფურცვლა ეკრანის ქვედა კიდიდან ზემოთ) გამოსაყენებელი ფუნქცია:"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"სერვისების გადასართავად, ხანგრძლივად შეეხეთ მარტივი წვდომის ღილაკს."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"ფუნქციების გადასართავად, ორი თითით გადაფურცლეთ ზემოთ და დააყოვნეთ."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"ფუნქციების გადასართავად, სამი თითით გადაფურცლეთ ზემოთ და დააყოვნეთ."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"გადიდება"</string> <string name="user_switched" msgid="7249833311585228097">"ამჟამინდელი მომხმარებელი <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>-ზე გადართვა…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> ფაილი</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> ფაილი</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"ვერ იძებნება რეკომენდებული ადამიანები, რომლებთანაც გაზიარება შეიძლება"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"აპების სია"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"ამ აპს არ აქვს მინიჭებული ჩაწერის ნებართვა, მაგრამ შეუძლია ჩაიწეროს აუდიო ამ USB მოწყობილობის მეშვეობით."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"მთავარი"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"ამ კონტენტს სამსახურის აპები ვერ გახსნის"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"პერსონალურ აპებს არ აქვს ამ კონტენტის მხარდაჭერა"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"ამ კონტენტს პერსონალური აპები ვერ გახსნის"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"სატელეფონო ზარებში აუდიოს ჩაწერა ან დაკვრა"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ნაგულისხმევ დასარეკ აპლიკაციად არჩევის შემთხვევაში, ნებას რთავს აპს ჩაიწეროს ან დაუკრას აუდიო სატელეფონო ზარებში."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM ქსელის განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM ქსელის ქვედანაყოფის განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM-ის კორპორატიული განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM სერვისის მომწოდებლის განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM-ის განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"შეიყვანეთ PUK-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"შეიყვანეთ PUK-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"შეიყვანეთ PUK-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"შეიყვანეთ PUK-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"შეიყვანეთ PUK-კოდი"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM ქსელი 1-ს განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM ქსელი 2-ს განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM HRPD-ის განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM-ის კორპორატიული განბლოკვის PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM-სერვისის მომწოდებლის განბლოკვის PIN-კოდი."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM-ის განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"შეიყვანეთ PUK-კოდი"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"შეიყვანეთ PUK-კოდი"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"შეიყვანეთ PUK-კოდი"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"შეიყვანეთ PUK-კოდი"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"შეიყვანეთ PUK-კოდი"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"შეიყვანეთ PUK-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN-ის განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP-ის ეკვივალენტური სახლის PLMN-ის განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID-ის განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI-ის განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"ქსელის ქვედანაყოფის სერვისის მომწოდებლის განბლოკვის PIN-კოდი"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"მიმდინარეობს SIM ქსელის განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"მიმდინარეობს SIM ქსელის ქვედანაყოფის განბლოკვა …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"მიმდინარეობს SIM სერვისის მომწოდებლის განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"მიმდინარეობს SIM-ის კორპორატიული განბლოკვა…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"მიმდინარეობს PUK-კოდით განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"მიმდინარეობს PUK-კოდით განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"მიმდინარეობს PUK-კოდით განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"მიმდინარეობს PUK-კოდით განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"მიმდინარეობს PUK-კოდით განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"მიმდინარეობს SIM-ის განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"მიმდინარეობს RUIM ქსელი 1-ს განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"მიმდინარეობს RUIM ქსელი 2-ს განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"მიმდინარეობს RUIM HRPD-ის განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"მიმდინარეობს RUIM-სერვისის მომწოდებლის განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"მიმდინარეობს RUIM-ის კორპორატიული განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"მიმდინარეობს SPN-ის განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"მიმდინარეობს SP-ის ეკვივალენტური სახლის PLMN-ის განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"მიმდინარეობს ICCID-ის განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"მიმდინარეობს IMPI-ის განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"მიმდინარეობს ქსელის ქვედანაყოფის სერვისის მომწოდებლის განბლოკვა…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"მიმდინარეობს RUIM-ის განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"მიმდინარეობს PUK-კოდით განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"მიმდინარეობს PUK-კოდით განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"მიმდინარეობს PUK-კოდით განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"მიმდინარეობს PUK-კოდით განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"მიმდინარეობს PUK-კოდით განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"მიმდინარეობს PUK-კოდით განბლოკვის მოთხოვნა…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM ქსელის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM ქსელის ქვედანაყოფის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM სერვისის მომწოდებლის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM-ის კორპორატიული განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM-ის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM ქსელი 1-ს განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM ქსელი 2-ს განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM HRPD-ის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM-ის კორპორატიული განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM-სერვისის მომწოდებლის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM-ის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK-კოდით განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK-კოდით განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK-კოდით განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK-კოდით განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK-კოდით განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK-კოდით განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK-კოდით განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK-კოდით განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK-კოდით განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK-კოდით განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK-კოდით განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN-ის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP-ის ეკვივალენტური სახლის PLMN-ის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI-ის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"ქსელის ქვედანაყოფის სერვისის მომწოდებლის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM ქსელის განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM ქსელის ქვედანაყოფის განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM სერვისის მომწოდებლის განბლოკვა წარმატებით შესრულდა ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM-ის კორპორატიული განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM-ს განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM ქსელი 1-ს განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM ქსელი 2-ს განბლოკვა წარუმატებლად დასრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM HRPD-ის განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM-სერვისის მომწოდებლის განბლოკვის მოთხოვნა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM-ის კორპორატიული განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM-ის განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK-კოდით განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK-კოდით განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK-კოდით განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK-კოდით განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK-კოდით განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK-კოდით განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK-კოდით განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK-კოდით განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK-კოდით განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK-კოდით განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK-კოდით განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN-ის განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP-ის ეკვივალენტური სახლის PLMN-ის განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID- წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI-ის განბლოკვა წარმატებით შესრულდა."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"ქსელის ყვედანაყოფის სერვისის მომწოდებლის განბლოკვა წარმატებით შესრულდა."</string> </resources> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index 42338ea515b7..63fe2c5ff68f 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Әкімші құрылғыны жеке пайдалануға ұсынды."</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Құрылғы басқарылады"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Ұйымыңыз осы құрылғыны басқарады және желі трафигін бақылауы мүмкін. Мәліметтер алу үшін түртіңіз."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Орналасу параметрлерін әкімшіңіз өзгертті."</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Орналасу параметрлерін көру үшін түртіңіз."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Қолданбалар геодерегіңізді пайдалана алады"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Қосымша мәліметтер алу үшін әкімшіге хабарласыңыз."</string> <string name="country_detector" msgid="7023275114706088854">"Ел детекторы"</string> <string name="location_service" msgid="2439187616018455546">"Орынды анықтау қызметі"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Датчик хабарландыруы қызметі"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Құрылғыңыздағы деректер өшіріледі"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Әкімші қолданбасын пайдалану мүмкін емес. Қазір құрылғыдағы деректер өшіріледі\n\nСұрақтарыңыз болса, ұйым әкімшісіне хабарласыңыз."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Басып шығаруды <xliff:g id="OWNER_APP">%s</xliff:g> өшірді."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Жеке қолданбалардың құлпын ашу"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Қолданбалар ертең құлыпталады"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Әкімші жұмыс профилін <xliff:g id="DAYS">%1$d</xliff:g> күннен аса мерзімге өшіруге рұқсат етпейді."</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Жұмыс профилін қосу"</string> <string name="me" msgid="6207584824693813140">"Мен"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Планшет опциялары"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV опциялары"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Телефон опциялары"</string> <string name="global_action_lock" msgid="6949357274257655383">"Экранды құлыптау"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Өшіру"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Қуат түймесі"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Қайта қосу"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Төтенше жағдай"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Вирус туралы хабарлау"</string> <string name="global_action_logout" msgid="6093581310002476511">"Сеансты аяқтау"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"қосымша аймақ жабдықтаушы пәрмендеріне қол жетімділік"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Қолданбаға орын жеткізушісінің қосымша пәрмендеріне қатынасуға рұқсат береді. Бұл қолданбаға GPS немесе басқа орын көздерінің жұмысына кедергі келтіруге рұқсат беруі мүмкін."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"нақты орналасқан жер туралы ақпаратқа тек ашық экранда кіру"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Бұл қолданба нақты орналасқан жеріңіз туралы ақпаратты экранда ашық тұрғанда ғана анықтай алады. Қолданба орынды анықтау қызметтерін пайдалана алуы үшін, олар қосулы әрі құрылғыда қолжетімді болуы керек. Батарея көбірек тұтынылуы мүмкін."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Қолданба пайдаланылып жатқанда, ол орынды анықтау қызметтерінен дәл геодерегіңізді ала алады. Геодеректі алу үшін құрылғыңызға арналған орынды анықтау қызметтері қосулы тұруы керек. Бұл батарея шығынын арттыруы мүмкін."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"болжалды орналасқан жер туралы ақпаратқа тек ашық экранда кіру"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Бұл қолданба орналасқан жеріңіз туралы болжалды ақпаратты экранда ашық тұрғанда ғана анықтай алады. Қолданба орынды анықтау қызметтерін пайдалана алуы үшін, олар қосулы әрі құрылғыда қолжетімді болуы керек."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Бұл қолданба пайдаланылып жатқанда, ол орынды анықтау қызметтерінен болжалды геодерегіңізді ала алады. Геодеректі алу үшін құрылғыңызға арналған орынды анықтау қызметтері қосулы тұруы керек."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"геодеректерді фондық режимде пайдалану"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Қолданба фондық және белсенді режимде де орналасқан жеріңіз мәліметін ала алады."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Бұл қолданба пайдаланылмайтын кезде де, ол геодеректі кез келген уақытта пайдалана алады."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"аудио параметрлерін өзгерту"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Қолданбаға дыбыс қаттылығы және аудио шығыс үндеткішін таңдау сияқты жаһандық аудио параметрлерін өзгерту мүмкіндігін береді."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"аудио жазу"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"фотосурет жасау және бейне жазу"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Бұл қолданба кез келген уақытта камерамен суретке түсіруі және бейнелерді жазуы мүмкін."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Суретке немесе бейнеге түсіру үшін қолданбаға немесе қызметке жүйелік камераларды пайдалануға рұқсат беру"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Осы айрықша немесе жүйе қолданбасы кез келген уақытта жүйелік камера арқылы суретке не бейнеге түсіре алады. Қолданбаға android.permission.CAMERA рұқсаты қажет болады."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Қолданбаға не қызметке ашылып не жабылып жатқан камера құрылғылары туралы кері шақыру алуға рұқсат ету"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Кез келген камера ашылып (көрсетілген қолданба арқылы) не жабылып жатқанда, бұл қолданба кері шақыру алады."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"тербелісті басқару"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Қолданбаға вибраторды басқаруға рұқсат береді."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Қолданбаға діріл күйін пайдалануға мүмкіндік береді."</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Ағымдағы мазмұн тексерілуде"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Жаңа <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Реттеу үшін түртіңіз"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Фотосуреттер мен медиа файлдарын тасымалдау үшін"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> ақаулы"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Түзету үшін түртіңіз"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> бүлінген. Түзету үшін оны түртіңіз."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Қолданылмайтын <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Бұл құрылғы <xliff:g id="NAME">%s</xliff:g> картасына қолдау көрсетеді. Қолдау көрсетілетін пішімде орнату үшін түртіңіз."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Бұл құрылғыда <xliff:g id="NAME">%s</xliff:g> картасына қолдау көрсетілмейді. Қолдау көрсетілетін форматта реттеуді таңдаңыз."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> кенеттен шығарылды"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Мазмұнды жоғалтып алмау үшін ақпарат тасығышты алдымен ажыратыңыз, содан кейін барып шығарыңыз."</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> жоқ"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Дыбыс деңгейін ұсынылған деңгейден көтеру керек пе?\n\nЖоғары дыбыс деңгейінде ұзақ кезеңдер бойы тыңдау есту қабілетіңізге зиян тигізуі мүмкін."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Арнайы мүмкіндік төте жолын пайдалану керек пе?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Түймелер тіркесімі қосулы кезде, екі дыбыс түймесін 3 секунд басып тұрсаңыз, \"Арнайы мүмкіндіктер\" функциясы іске қосылады."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Арнайы мүмкіндіктер іске қосылсын ба?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Дыбыс деңгейі пернелерін бірнеше секунд басып тұрсаңыз, арнайы мүмкіндіктер іске қосылады. Бұл – құрылғының жұмысына әсер етуі мүмкін.\n\nФункциялар:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nТаңдалған функцияларды \"Параметрлер > Accessibility\" бөлімінен өзгерте аласыз."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack қосылсын ба?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Дыбыс деңгейі пернелерін бірнеше секунд басып тұрсаңыз TalkBack қосылады. Бұл – зағип немесе көру қабілеті нашар адамдарға арналған экранды оқу құралы. TalkBack құрылғының жұмыс істеуіне әсер етеді.\n\nБұл таңбашаны басқа функцияға \"Параметрлер > Accessibility\" бөлімінде өзгерте аласыз."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> қосылсын ба?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Дыбыс деңгейі пернелерін бірнеше секунд басып тұрсаңыз, <xliff:g id="SERVICE">%1$s</xliff:g> және арнайы мүмкіндіктер іске қосылады. Бұл – құрылғының жүмысына әсер етуі мүмкін.\n\nБұл таңбашаны басқа функцияға \"Параметрлер > Accessibility\" бөлімінен өзгерте аласыз."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Қосылсын"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Қосылмасын"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> қызметі құрылғыңызды толық басқаруына рұқсат етілсін бе?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> қоссаңыз, құрылғыңыз деректерді шифрлау үшін экранды бекітуді пайдаланбайды."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Арнайы мүмкіндіктер бойынша көмектесетін қолданбаларға ғана құрылғыны толық басқару рұқсатын берген дұрыс."</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Рұқсат ету"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Қабылдамау"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Функцияны пайдалана бастау үшін түртіңіз:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"\"Арнайы мүмкіндіктер\" түймесімен қолданылатын функцияларды таңдаңыз"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Дыбыс деңгейі пернелері таңбашасымен қолданылатын функцияларды таңдаңыз"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> қызметі өшірулі."</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Таңбашаларды өзгерту"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Дайын"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Төте жолды пайдалану"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Түстер инверсиясы"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Түсті түзету"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Дыбыс деңгейі пернелерін басып ұстап тұрыңыз. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> қосулы."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Дыбыс деңгейі пернелерін басып ұстап тұрыңыз. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> өшірулі."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> қызметін пайдалану үшін дыбыс деңгейін реттейтін екі түймені де 3 секунд басып тұрыңыз"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"\"Арнайы мүмкіндіктер\" түймесін түрткенде пайдаланатын функцияны таңдаңыз:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Арнайы мүмкіндіктер қимылымен пайдаланатын функцияны таңдаңыз (екі саусақпен экранның төменгі жағынан жоғары қарай сырғытыңыз):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Арнайы мүмкіндіктер қимылымен пайдаланатын функцияны таңдаңыз (үш саусақпен экранның төменгі жағынан жоғары қарай сырғытыңыз):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Бір функциядан екінші функцияға ауысу үшін арнайы мүмкіндіктер түймесін түртіп, оны ұстап тұрыңыз."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Бір функциядан екінші функцияға ауысу үшін екі саусақпен жоғары қарай сырғытып, ұстап тұрыңыз."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Бір функциядан екінші функцияға ауысу үшін үш саусақпен жоғары қарай сырғытып, ұстап тұрыңыз."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ұлғайту"</string> <string name="user_switched" msgid="7249833311585228097">"Ағымдағы пайдаланушы <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> ауысу орындалуда…"</string> @@ -2050,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> файл</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> файл</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Бөлісу үшін ұсынылатын адамдар жоқ"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Қолданбалар тізімі"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Қолданбаға жазу рұқсаты берілмеді, бірақ ол осы USB құрылғысы арқылы дыбыс жаза алады."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Негізгі экран"</string> @@ -2087,222 +2063,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Бұл мазмұнды ешқандай жұмыс қолданбасы аша алмайды."</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Бұл мазмұнды ешқандай жеке қолданба қолдай алмайды."</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Бұл мазмұнды ешқандай жеке қолданба аша алмайды."</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Телефон қоңырауларында аудио жазу немесе ойнату"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Қолданба әдепкі нөмір тергіш қолданба ретінде тағайындалған кезде, телефон қоңырауларында аудионы жазуға немесе ойнатуға мүмкіндік береді."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM желісінің құлпын ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM желісі ішкі жиынтығының құлпын ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Корпоративтік SIM картасын ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Қызмет көрсетушінің SIM картасын ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM картасын ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK кодын енгізіңіз"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK кодын енгізіңіз"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK кодын енгізіңіз"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK кодын енгізіңіз"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK кодын енгізіңіз"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM network1 желісінің құлпын ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM network2 желісінің құлпын ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM картасының HRPD ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Корпоративтік RUIM картасын ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM картасының қызмет көрсетушісін ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM картасын ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK кодын енгізіңіз"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK кодын енгізіңіз"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK кодын енгізіңіз"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK кодын енгізіңіз"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK кодын енгізіңіз"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK кодын енгізіңіз"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID кодын көрсететін PIN коды"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI кодын көрсететін PIN коды"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Қызмет көрсетуші желісінің ішкі жиынтығын ашатын PIN коды"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM желісінің құлпын ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM желісі ішкі жиынтығының құлпын ашу сұралуда …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Қызмет көрсетушінің SIM картасын ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Корпоративтік SIM картасын ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK кодымен ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK кодымен ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK кодымен ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK кодымен ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK кодымен ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM картасын ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM network1 желісінің құлпын ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM network2 желісінің құлпын ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM картасының HRPD ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM картасының қызмет көрсетушісін ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Корпоративтік RUIM картасын ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP Equivalent Home PLMN ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID кодын көрсету сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI кодын көрсету сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Қызмет көрсетуші желісінің ішкі жиынтығын ашу сұралуда.…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM картасының құлпын ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK кодымен ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK кодымен ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK кодымен ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK кодымен ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK кодымен ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK кодымен ашу сұралуда…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM желісінің құлпын ашу сұралмады."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM желісі ішкі жиынтығының құлпын ашу сұралмады."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Қызмет көрсетушінің SIM картасын ашу сұралмады."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Корпоративтік SIM картасын ашу сұралмады."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM картасын ашу сұралмады."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM Network1 желісінің құлпын ашу сұралмады."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM Network2 желісінің құлпын ашу сұралмады."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM картасының HRPD ашу сұралмады."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Корпоративтік RUIM картасын ашу сұралмады."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM картасының қызмет көрсетушісін ашу сұралмады."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM картасын ашу сұралмады."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK кодымен ашылмады."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK кодымен ашылмады."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK кодымен ашылмады."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK кодымен ашылмады."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK кодымен ашылмады."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK кодымен ашылмады."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK кодымен ашылмады."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK кодымен ашылмады."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK кодымен ашылмады."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK кодымен ашылмады."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK кодымен ашылмады."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN ашу сұралмады."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN ашу сұралмады."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID кодын көрсету сұралмады."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI кодын көрсету сұралмады."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Қызмет көрсетуші желісінің ішкі жиынтығын ашу сұралмады."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM желісінің құлпы ашылды."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM желісі ішкі жиынтығының құлпы ашылды."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Қызмет көрсетуші SIM картасы ашылмады."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Корпоративтік SIM картасы ашылды."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM картасы ашылмады."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM Network1 желісінің құлпы ашылды."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM Network2 желісінің құлпы ашылды."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM картасының HRPD ашылды."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM картасының қызмет көрсетушісі ашылмады."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Корпоративтік RUIM картасы ашылмады."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM картасы ашылды."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK кодымен ашылды."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK кодымен ашылды."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK кодымен ашылды."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK кодымен ашылды."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK кодымен ашылды."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK кодымен ашылды."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK кодымен ашылды."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK кодымен ашылды."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK кодымен ашылды."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK кодымен ашылды."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK кодымен ашылды."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN ашылды."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN ашылды."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID коды көрсетілді."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI көрсетілді."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Қызмет көрсетуші желісінің ішкі жиынтығын ашылды."</string> </resources> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index 3604b4cad1a8..bf420e004240 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"អ្នកគ្រប់គ្រងបានបោះបង់ឧបករណ៍ចោលដោយសារការប្រើប្រាស់ផ្ទាល់ខ្លួន"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"ឧបករណ៍ស្ថិតក្រោមការគ្រប់គ្រង"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"ស្ថាប័នរបស់អ្នកគ្រប់គ្រងឧបករណ៍នេះ ហើយអាចនឹងតាមដានចរាចរណ៍បណ្តាញ។ ចុចដើម្បីទទួលបានព័ត៌មានលម្អិត។"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"ការកំណត់ទីតាំងត្រូវបានប្ដូរដោយអ្នកគ្រប់គ្រងរបស់អ្នក"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"ចុចដើម្បីមើលការកំណត់ទីតាំងរបស់អ្នក។"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"កម្មវិធីអាចចូលប្រើទីតាំងរបស់អ្នកបាន"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"សូមទាក់ទងអ្នកគ្រប់គ្រងផ្នែកព័ត៌មានវិទ្យារបស់អ្នក ដើម្បីស្វែងយល់បន្ថែម"</string> <string name="country_detector" msgid="7023275114706088854">"ឧបករណ៍សម្គាល់ប្រទេស"</string> <string name="location_service" msgid="2439187616018455546">"សេវាកម្មទីតាំង"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"សេវាកម្មជូនដំណឹងឧបករណ៍ចាប់សញ្ញា"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"ឧបករណ៍របស់អ្នកនឹងត្រូវបានលុប"</string> <string name="factory_reset_message" msgid="2657049595153992213">"មិនអាចប្រើកម្មវិធីអ្នកគ្រប់គ្រងបានទេ។ ឧបករណ៍របស់អ្នកនឹងលុបឥឡូវនេះ។\n\nប្រសិនបើអ្នកមានសំណួរផ្សេងៗ សូមទាក់ទងទៅអ្នកគ្រប់គ្រងស្ថាប័នរបស់អ្នក។"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"ការបោះពុម្ពត្រូវបានបិទដោយ <xliff:g id="OWNER_APP">%s</xliff:g> ។"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"ឈប់ទប់ស្កាត់កម្មវិធីផ្ទាល់ខ្លួនរបស់អ្នក"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"កម្មវិធីនឹងត្រូវទប់ស្កាត់ថ្ងៃស្អែក"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"អ្នកគ្រប់គ្រងផ្នែកព័ត៌មានវិទ្យារបស់អ្នកមិនអនុញ្ញាតឱ្យផ្អាកកម្រងព័ត៌មានការងាររបស់អ្នកលើសពី <xliff:g id="DAYS">%1$d</xliff:g> ថ្ងៃទេ"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"បើកកម្រងព័ត៌មានការងារ"</string> <string name="me" msgid="6207584824693813140">"ខ្ញុំ"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ជម្រើសកុំព្យូទ័របន្ទះ"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"ជម្រើស Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"ជម្រើសទូរស័ព្ទ"</string> <string name="global_action_lock" msgid="6949357274257655383">"ចាក់សោអេក្រង់"</string> <string name="global_action_power_off" msgid="4404936470711393203">"បិទ"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"ថាមពល"</string> + <string name="global_action_restart" msgid="4678451019561687074">"ចាប់ផ្ដើមឡើងវិញ"</string> <string name="global_action_emergency" msgid="1387617624177105088">"អាសន្ន"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"របាយការណ៍កំហុស"</string> <string name="global_action_logout" msgid="6093581310002476511">"បញ្ចប់សម័យ"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ចូលដំណើរការពាក្យបញ្ជាក្រុមហ៊ុនផ្ដល់ទីតាំង"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ឲ្យកម្មវិធីចូលដំណើរការពាក្យបញ្ជាកម្មវិធីផ្ដល់ទីតាំងបន្ថែម។ វាអាចអនុញ្ញាតឲ្យកម្មវិធីទាក់ទងជាមួយប្រតិបត្តិការជីភីអេស ឬប្រភពទីតាំងផ្សេង។"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"ចូលប្រើទីតាំងជាក់លាក់តែនៅផ្ទៃខាងមុខប៉ុណ្ណោះ"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"កម្មវិធីនេះអាចទទួលបានទីតាំងជាក់លាក់របស់អ្នក តែនៅពេលវាស្ថិតនៅផ្ទៃខាងមុខប៉ុណ្ណោះ។ សេវាកម្មទីតាំងត្រូវតែបើក និងមាននៅលើឧបករណ៍របស់អ្នក ដើម្បីអាចឱ្យកម្មវិធីប្រើវាបាន។ សកម្មភាពនេះអាចបង្កើនការប្រើប្រាស់ថ្ម។"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"កម្មវិធីនេះអាចទទួលបានទីតាំងជាក់លាក់របស់អ្នកពីសេវាកម្មទីតាំង នៅពេលស្ថិតនៅក្នុងការប្រើប្រាស់។ ត្រូវតែបើកសេវាកម្មទីតាំងសម្រាប់ឧបករណ៍របស់អ្នក ទើបកម្មវិធីនេះអាចទទួលបានទីតាំង។ ការធ្វើបែបនេះអាចបង្កើនការប្រើប្រាស់ថ្ម។"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ចូលប្រើទីតាំងប្រហាក់ប្រហែលតែនៅផ្ទៃខាងមុខប៉ុណ្ណោះ"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"កម្មវិធីនេះអាចទទួលបានទីតាំងប្រហាក់ប្រហែលរបស់អ្នក តែនៅពេលវាស្ថិតនៅផ្ទៃខាងមុខប៉ុណ្ណោះ។ សេវាកម្មទីតាំងត្រូវតែបើក និងមាននៅលើឧបករណ៍របស់អ្នក ដើម្បីអាចឱ្យកម្មវិធីប្រើវាបាន។"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"កម្មវិធីនេះអាចទទួលបានទីតាំងប្រហាក់ប្រហែលរបស់អ្នកពីសេវាកម្មទីតាំង នៅពេលស្ថិតនៅក្នុងការប្រើប្រាស់។ ត្រូវតែបើកសេវាកម្មទីតាំងសម្រាប់ឧបករណ៍របស់អ្នក ទើបកម្មវិធីនេះអាចទទួលបានទីតាំង។"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ចូលប្រើទីតាំងនៅផ្ទៃខាងក្រោយ"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"កម្មវិធីនេះអាចចូលប្រើទីតាំង ពេលកំពុងដំណើរការនៅផ្ទៃខាងក្រោយ បន្ថែមពីលើការចូលប្រើទីតាំងនៅផ្ទៃខាងមុខ។"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"កម្មវិធីនេះអាចចូលប្រើទីតាំងបានគ្រប់ពេល ទោះបីជានៅពេលមិនស្ថិតនៅក្នុងការប្រើប្រាស់ក៏ដោយ។"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ប្ដូរការកំណត់អូឌីយូរបស់អ្នក"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ឲ្យកម្មវិធីកែការកំណត់សំឡេងសកល ដូចជាកម្រិតសំឡេង និងអូប៉ាល័រដែលបានប្រើសម្រាប់លទ្ធផល។"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ថតសំឡេង"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"ថតរូប និងវីដេអូ"</string> <string name="permdesc_camera" msgid="1354600178048761499">"កម្មវិធីនេះអាចថតរូប និងថតវីដេអូ ដោយប្រើកាមេរ៉ាបានគ្រប់ពេល។"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"អនុញ្ញាតឱ្យកម្មវិធី ឬសេវាកម្មចូលប្រើកាមេរ៉ាប្រព័ន្ធ ដើម្បីថតរូប និងថតវីដេអូ"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"កម្មវិធីប្រព័ន្ធដែលមានសិទ្ធិអនុញ្ញាតនេះអាចថតរូប និងថតវីដេអូ ដោយប្រើកាមេរ៉ាប្រព័ន្ធបានគ្រប់ពេល។ តម្រូវឱ្យមានការអនុញ្ញាត android.permission.CAMERA ដើម្បីឱ្យកម្មវិធីអាចធ្វើសកម្មភាពបានផងដែរ"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"អនុញ្ញាតឱ្យកម្មវិធី ឬសេវាកម្មទទួលការហៅត្រឡប់វិញអំពីកាមេរ៉ាដែលកំពុងបិទ ឬបើក។"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"កម្មវិធីនេះអាចទទួលការហៅត្រឡប់វិញបាន នៅពេលកំពុងបិទ ឬបើកកាមេរ៉ា (ដោយកម្មវិធី)។"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"ពិនិត្យការញ័រ"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"ឲ្យកម្មវិធីគ្រប់គ្រងកម្មវិធីញ័រ។"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"អនុញ្ញាតឱ្យកម្មវិធីចូលប្រើស្ថានភាពកម្មវិធីញ័រ។"</string> @@ -1352,13 +1344,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"កំពុងពិនិត្យមើលខ្លឹមសារបច្ចុប្បន្ន"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> ថ្មី"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"ចុចដើម្បីរៀបចំ"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"សម្រាប់ផ្ទេររូបភាព និងមេឌៀ"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"មានបញ្ហាជាមួយ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"ចុចដើម្បីកែបញ្ហា"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> ខូចហើយ។ សូមជ្រើសរើសដើម្បីជួសជុល។"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> មិនគាំទ្រ"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"ឧបករណ៍នេះមិនគាំទ្រ <xliff:g id="NAME">%s</xliff:g> នេះទេ។ ប៉ះដើម្បីកំណត់ទម្រង់ដែលគាំទ្រ។"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"ឧបករណ៍នេះមិនស្គាល់ <xliff:g id="NAME">%s</xliff:g> នេះទេ។ សូមជ្រើសរើសដើម្បីរៀបចំក្នុងទម្រង់ដែលស្គាល់។"</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"បានដក <xliff:g id="NAME">%s</xliff:g> ចេញដោយមិនបានរំពឹងទុក"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"ដកមេឌៀមុនពេលយកវាចេញ ដើម្បីជៀសវាងការបាត់បង់ខ្លឹមសារ"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"បានយក <xliff:g id="NAME">%s</xliff:g> ចេញ"</string> @@ -1626,24 +1622,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"បង្កើនកម្រិតសំឡេងលើសពីកម្រិតបានផ្ដល់យោបល់?\n\nការស្ដាប់នៅកម្រិតសំឡេងខ្លាំងយូរអាចធ្វើឲ្យខូចត្រចៀក។"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ប្រើប្រាស់ផ្លូវកាត់ភាពងាយស្រួល?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"នៅពេលបើកផ្លូវកាត់ ការចុចប៊ូតុងកម្រិតសំឡេងទាំងពីររយៈពេល 3 វិនាទីនឹងចាប់ផ្តើមមុខងារភាពងាយប្រើ។"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"បើកមុខងារភាពងាយប្រើឬ?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"ការសង្កត់គ្រាប់ចុចកម្រិតសំឡេងទាំងពីរឱ្យជាប់រយៈពេលពីរបីវិនាទីនឹងបើកមុខងារភាពងាយប្រើ។ ការធ្វើបែបនេះអាចផ្លាស់ប្ដូររបៀបដែលឧបករណ៍របស់អ្នកដំណើរការ។\n\nមុខងារបច្ចុប្បន្ន៖\n<xliff:g id="SERVICE">%1$s</xliff:g>\nអ្នកអាចប្ដូរមុខងារដែលបានជ្រើសរើសនៅក្នុងការកំណត់ > ភាពងាយស្រួល។"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"បើកមុខងារតបវិញឬ?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"ការសង្កត់គ្រាប់ចុចកម្រិតសំឡេងទាំងពីរឱ្យជាប់រយៈពេលពីរបីវិនាទីនឹងបើកមុខងារតបវិញ ដែលជាកម្មវិធីអានអេក្រង់ដែលមានប្រយោជន៍សម្រាប់ជនពិការភ្នែក ឬអ្នកខ្សោយភ្នែក។ មុខងារតបវិញផ្លាស់ប្ដូររបៀបដែលឧបករណ៍របស់អ្នកដំណើរការទាំងស្រុង។\n\nអ្នកអាចប្ដូរផ្លូវកាត់នេះទៅមុខងារផ្សេងទៀតនៅក្នុងការកំណត់ > ភាពងាយស្រួល។"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"បើក <xliff:g id="SERVICE">%1$s</xliff:g> ឬ?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"ការសង្កត់គ្រាប់ចុចកម្រិតសំឡេងទាំងពីរឱ្យជាប់រយៈពេលពីរបីវិនាទីនឹងបើក <xliff:g id="SERVICE">%1$s</xliff:g> ដែលជាមុខងារភាពងាយប្រើ។ ការធ្វើបែបនេះអាចផ្លាស់ប្ដូររបៀបដែលឧបករណ៍របស់អ្នកដំណើរការ។\n\nអ្នកអាចប្ដូរផ្លូវកាត់នេះទៅមុខងារផ្សេងទៀតនៅក្នុងការកំណត់ > ភាពងាយស្រួល។"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"បើក"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"កុំបើក"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"អនុញ្ញាតឱ្យ <xliff:g id="SERVICE">%1$s</xliff:g> មានសិទ្ធិគ្រប់គ្រងឧបករណ៍របស់អ្នកទាំងស្រុងឬ?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"បើអ្នកបើក <xliff:g id="SERVICE">%1$s</xliff:g> ឧបករណ៍របស់អ្នកនឹងមិនប្រើការចាក់សោអេក្រង់របស់អ្នក ដើម្បីបង្កើនប្រសិទ្ធភាពការអ៊ីនគ្រីបទិន្នន័យទេ។"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"ការគ្រប់គ្រងទាំងស្រុងមានលក្ខណៈសមស្របសម្រាប់កម្មវិធី ដែលជួយអ្នកទាក់ទងនឹងការប្រើមុខងារភាពងាយស្រួល ប៉ុន្តែមិនសមស្របសម្រាប់កម្មវិធីភាគច្រើនទេ។"</string> @@ -1654,10 +1641,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"អនុញ្ញាត"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"បដិសេធ"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ចុចមុខងារណាមួយ ដើម្បចាប់ផ្ដើមប្រើ៖"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ជ្រើសរើសមុខងារ ដើម្បីប្រើជាមួយប៊ូតុងភាពងាយស្រួល"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"ជ្រើសរើសមុខងារ ដើម្បីប្រើជាមួយផ្លូវកាត់គ្រាប់ចុចកម្រិតសំឡេង"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"បានបិទ <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"កែផ្លូវកាត់"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"រួចរាល់"</string> @@ -1665,23 +1650,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ប្រើប្រាស់ផ្លូវកាត់"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"បញ្ច្រាសពណ៌"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ការកែពណ៌"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"បានសង្កត់គ្រាប់ចុចកម្រិតសំឡេងជាប់។ បានបើក <xliff:g id="SERVICE_NAME">%1$s</xliff:g>។"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"បានសង្កត់គ្រាប់ចុចកម្រិតសំឡេងជាប់។ បានបិទ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>។"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"ចុចគ្រាប់ចុចកម្រិតសំឡេងទាំងពីរឱ្យជាប់រយៈពេលបីវិនាទី ដើម្បីប្រើ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"ជ្រើសរើសមុខងារដែលត្រូវប្រើ នៅពេលដែលអ្នកចុចប៊ូតុងភាពងាយស្រួល៖"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"ជ្រើសរើសមុខងារ ដើម្បីប្រើជាមួយចលនាភាពងាយស្រួល (អូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់ដោយប្រើម្រាមដៃពីរ)៖"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"ជ្រើសរើសមុខងារ ដើម្បីប្រើជាមួយចលនាភាពងាយស្រួល (អូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់ដោយប្រើម្រាមដៃបី)៖"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"ដើម្បីប្ដូរឆ្លាស់រវាងមុខងារផ្សេងៗ សូមចុចប៊ូតុងភាពងាយស្រួលឱ្យជាប់។"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"ដើម្បីប្ដូរឆ្លាស់រវាងមុខងារផ្សេងៗ សូមអូសឡើងលើដោយប្រើម្រាមដៃពីរ ហើយសង្កត់ឱ្យជាប់។"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"ដើម្បីប្ដូរឆ្លាស់រវាងមុខងារផ្សេងៗ សូមអូសឡើងលើដោយប្រើម្រាមដៃបី ហើយសង្កត់ឱ្យជាប់។"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ការពង្រីក"</string> <string name="user_switched" msgid="7249833311585228097">"អ្នកប្រើបច្ចុប្បន្ន <xliff:g id="NAME">%1$s</xliff:g> ។"</string> <string name="user_switching_message" msgid="1912993630661332336">"កំពុងប្ដូរទៅ <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2052,8 +2029,7 @@ <item quantity="other">ឯកសារ <xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g></item> <item quantity="one">ឯកសារ <xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g></item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"មិនមានមនុស្សដែលបានណែនាំសម្រាប់ចែករំលែកជាមួយទេ"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"បញ្ជីកម្មវិធី"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"កម្មវិធីនេះមិនទាន់បានទទួលសិទ្ធិថតសំឡេងនៅឡើយទេ ប៉ុន្តែអាចថតសំឡេងតាមរយៈឧបករណ៍ USB នេះបាន។"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"ទំព័រដើម"</string> @@ -2089,222 +2065,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"មិនមានកម្មវិធីការងារដែលអាចបើកខ្លឹមសារនេះបានទេ"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"មិនមានកម្មវិធីផ្ទាល់ខ្លួនដែលអាចប្រើខ្លឹមសារនេះបានទេ"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"មិនមានកម្មវិធីផ្ទាល់ខ្លួនដែលអាចបើកខ្លឹមសារនេះបានទេ"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ថត ឬចាក់សំឡេងនៅក្នុងការហៅទូរសព្ទ"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"នៅពេលកំណត់ជាកម្មវិធីផ្ទាំងចុចហៅទូរសព្ទលំនាំដើម សូមអនុញ្ញាតឱ្យកម្មវិធីនេះថត ឬចាក់សំឡេងនៅក្នុងការហៅទូរសព្ទ។"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"កូដ PIN ដោះសោបណ្ដាញស៊ីម"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"កូដ PIN ដោះសោសំណុំរងនៃបណ្ដាញស៊ីម"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"កូដ PIN ដោះសោក្រុមហ៊ុនស៊ីម"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"កូដ PIN ដោះសោក្រុមហ៊ុនផ្ដល់សេវាស៊ីម"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"កូដ PIN ដោះសោស៊ីម"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"បញ្ចូល PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"បញ្ចូល PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"បញ្ចូល PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"បញ្ចូល PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"បញ្ចូល PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"កូដ PIN ដោះសោ RUIM បណ្ដាញប្រភេទទី 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"កូដ PIN ដោះសោ RUIM បណ្ដាញប្រភេទទី 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"កូដ PIN ដោះសោ RUIM hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"កូដ PIN ដោះសោក្រុមហ៊ុន RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"កូដ PIN ដោះសោក្រុមហ៊ុនផ្ដល់សេវា RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"កូដ PIN ដោះសោ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"បញ្ចូល PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"បញ្ចូល PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"បញ្ចូល PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"បញ្ចូល PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"បញ្ចូល PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"បញ្ចូល PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"កូដ PIN ដោះសោ SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"កូដ PIN ដោះសោ SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"កូដ PIN ដោះសោ ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"កូដ PIN ដោះសោ IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"កូដ PIN ដោះសោក្រុមហ៊ុនផ្ដល់សេវាសំណុំរងនៃបណ្ដាញ"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"កំពុងស្នើសុំដោះសោបណ្ដាញស៊ីម…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"កំពុងស្នើសុំដោះសោសំណុំរងនៃបណ្ដាញស៊ីម …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"កំពុងស្នើសុំដោះសោក្រុមហ៊ុនផ្ដល់សេវាស៊ីម…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"កំពុងស្នើសុំដោះសោក្រុមហ៊ុនស៊ីម…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"កំពុងស្នើសុំដោះសោ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"កំពុងស្នើសុំដោះសោ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"កំពុងស្នើសុំដោះសោ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"កំពុងស្នើសុំដោះសោ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"កំពុងស្នើសុំដោះសោ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"កំពុងស្នើសុំដោះសោស៊ីម…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"កំពុងស្នើសុំដោះសោ RUIM បណ្ដាញប្រភេទទី 1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"កំពុងស្នើសុំដោះសោ RUIM បណ្ដាញប្រភេទទី 2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"កំពុងស្នើសុំដោះសោ RUIM hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"កំពុងស្នើសុំដោះសោក្រុមហ៊ុនផ្ដល់សេវា RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"កំពុងស្នើសុំដោះសោក្រុមហ៊ុន RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"កំពុងស្នើសុំដោះសោ SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"កំពុងស្នើសុំដោះសោ SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"កំពុងស្នើសុំដោះសោ ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"កំពុងស្នើសុំដោះសោ IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"កំពុងស្នើសុំដោះសោក្រុមហ៊ុនផ្ដល់សេវាសំណុំរងនៃបណ្ដាញ…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"កំពុងស្នើសុំដោះសោ RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"កំពុងស្នើសុំដោះសោ PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"កំពុងស្នើសុំដោះសោ PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"កំពុងស្នើសុំដោះសោ PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"កំពុងស្នើសុំដោះសោ PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"កំពុងស្នើសុំដោះសោ PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"កំពុងស្នើសុំដោះសោ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"សំណើសុំដោះសោបណ្ដាញស៊ីមមិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"សំណើសុំដោះសោសំណុំរងនៃបណ្ដាញស៊ីមមិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"សំណើសុំដោះសោក្រុមហ៊ុនផ្ដល់សេវាស៊ីមមិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"សំណើសុំដោះសោក្រុមហ៊ុនស៊ីមមិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"សំណើសុំដោះសោស៊ីមមិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"សំណើសុំដោះសោ RUIM បណ្ដាញប្រភេទទី 1 មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"សំណើសុំដោះសោ RUIM បណ្ដាញប្រភេទទី 2 មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"សំណើសុំដោះសោ RUIM Hrpd មិនបានទទួលជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"សំណើសុំដោះសោក្រុមហ៊ុន RUIM មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"សំណើសុំដោះសោក្រុមហ៊ុនផ្ដល់សេវា RUIM មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"សំណើសុំដោះសោ RUIM មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"ការដោះសោ PUK មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"ការដោះសោ PUK មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"ការដោះសោ PUK មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"ការដោះសោ PUK មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"ការដោះសោ PUK មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"ការដោះសោ PUK មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"ការដោះសោ PUK មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"ការដោះសោ PUK មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"ការដោះសោ PUK មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"ការដោះសោ PUK មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"ការដោះសោ PUK មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"សំណើសុំដោះសោ SPN មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"សំណើសុំដោះសោ SP Equivalent Home PLMN មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"សំណើសុំដោះសោ ICCID មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"សំណើសុំដោះសោ IMPI មិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"សំណើសុំដោះសោក្រុមហ៊ុនផ្ដល់សេវាសំណុំរងនៃបណ្ដាញមិនទទួលបានជោគជ័យទេ។"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"ការដោះសោបណ្ដាញស៊ីមទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"ការដោះសោសំណុំរងនៃបណ្ដាញស៊ីមទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"ការដោះសោក្រុមហ៊ុនផ្ដល់សេវាស៊ីមទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"ការដោះសោក្រុមហ៊ុនស៊ីមទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"ការដោះសោស៊ីមទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"ការដោះសោ RUIM បណ្ដាញប្រភេទទី 1 ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"ការដោះសោ RUIM បណ្ដាញប្រភេទទី 2 ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"ការដោះសោ RUIM Hrpd ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"ការដោះសោក្រុមហ៊ុនផ្ដល់សេវា RUIM ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"ការដោះសោក្រុមហ៊ុន RUIM ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"ការដោះសោ RUIM ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"ការដោះសោ PUK ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"ការដោះសោ PUK ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"ការដោះសោ PUK ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"ការដោះសោ PUK ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"ការដោះសោ PUK ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"ការដោះសោ PUK ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"ការដោះសោ PUK ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"ការដោះសោ PUK ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"ការដោះសោ PUK ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"ការដោះសោ PUK ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"ការដោះសោ PUK ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"ការដោះសោ SPN ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"ការដោះសោ SP Equivalent Home PLMN ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ការដោះសោ ICCID ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"ការដោះសោ IMPI ទទួលបានជោគជ័យហើយ។"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"ការដោះសោក្រុមហ៊ុនផ្ដល់សេវាសំណុំរងនៃបណ្ដាញទទួលបានជោគជ័យហើយ។"</string> </resources> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index 9cf48880ebfa..386b31f4b6bb 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"ವೈಯಕ್ತಿಕ ಬಳಕೆಗಾಗಿ ನಿರ್ವಾಹಕರು ತೊರೆದ ಸಾಧನ"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"ಸಾಧನವನ್ನು ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"ನಿಮ್ಮ ಸಂಸ್ಥೆಯು ಈ ಸಾಧನವನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಅದು ನೆಟ್ವರ್ಕ್ ಟ್ರಾಫಿಕ್ ಮೇಲೆ ಗಮನವಿರಿಸಬಹುದು. ವಿವರಗಳಿಗಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಂದ ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"ನಿಮ್ಮ ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನೋಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"ಆ್ಯಪ್ಗಳು ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"ಇನ್ನಷ್ಟು ತಿಳಿಯಲು ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ"</string> <string name="country_detector" msgid="7023275114706088854">"ಕಂಟ್ರಿ ಡಿಟೆಕ್ಟರ್"</string> <string name="location_service" msgid="2439187616018455546">"ಸ್ಥಳ ಸೇವೆ"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"ಸೆನ್ಸರ್ ಅಧಿಸೂಚನೆ ಸೇವೆ"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"ನಿಮ್ಮ ಸಾಧನವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ"</string> <string name="factory_reset_message" msgid="2657049595153992213">"ನಿರ್ವಹಣೆ ಅಪ್ಲಿಕೇಶನ್ ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಿಮ್ಮ ಸಾಧನವನ್ನು ಇದೀಗ ಅಳಿಸಲಾಗುತ್ತದೆ.\n\nನಿಮ್ಮಲ್ಲಿ ಪ್ರಶ್ನೆಗಳಿದ್ದರೆ, ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ಮೂಲಕ ಪ್ರಿಂಟಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"ವೈಯಕ್ತಿಕ ಆ್ಯಪ್ಗಳ ನಿರ್ಬಂಧ ತೆಗೆಯಿರಿ"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"ಆ್ಯಪ್ಗಳನ್ನು ನಾಳೆ ನಿರ್ಬಂಧಿಸಲಾಗುವುದು"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"ನಿಮ್ಮ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು <xliff:g id="DAYS">%1$d</xliff:g> ದಿನಗಳಿಗಿಂತ ಹೆಚ್ಚು ಸಮಯ ವಿರಾಮಗೊಳಿಸಲು ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಅನುಮತಿಸುವುದಿಲ್ಲ"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string> <string name="me" msgid="6207584824693813140">"ನಾನು"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ಟ್ಯಾಬ್ಲೆಟ್ ಆಯ್ಕೆಗಳು"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ಆಯ್ಕೆಗಳು"</string> @@ -428,11 +424,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ಹೆಚ್ಚುವರಿ ಸ್ಥಳ ಪೂರೈಕೆದಾರರ ಆದೇಶಗಳನ್ನು ಪ್ರವೇಶಿಸಿ"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ಹೆಚ್ಚಿನ ಸ್ಥಳ ಪೂರೈಕೆದಾರ ಆದೇಶಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ. ಇದು GPS ಅಥವಾ ಇತರ ಸ್ಥಳ ಮೂಲಗಳ ಕಾರ್ಯಾಚರಣೆಯಲ್ಲಿ ಮಧ್ಯ ಪ್ರವೇಶಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸಬಹುದು."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"ಮುನ್ನೆಲೆಯಲ್ಲಿ ಮಾತ್ರ ನಿಖರವಾದ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಿ"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ಈ ಆ್ಯಪ್ ಮುಂಭಾಗದಲ್ಲಿರುವಾಗ ಮಾತ್ರ ನಿಮ್ಮ ನಿಖರ ಸ್ಥಳವನ್ನು ಪಡೆಯಬಲ್ಲದು. ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಿರಬೇಕು ಮತ್ತು ಅವುಗಳನ್ನು ಬಳಸಲು ಆ್ಯಪ್ಗೆ ಬಳಸಲು ಸಾಧ್ಯವಾಗುವಂತೆ ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಅವುಗಳು ಲಭ್ಯವಿರಬೇಕು. ಇದು ಬ್ಯಾಟರಿ ಬಳಕೆಯನ್ನು ಹೆಚ್ಚಿಸಬಹುದು."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ಈ ಆ್ಯಪ್ ಬಳಕೆಯಲ್ಲಿರುವಾಗ ನಿಮ್ಮ ನಿಖರವಾದ ಸ್ಥಳವನ್ನು, ಸ್ಥಳ ಸೇವೆಗಳಿಂದ ಪಡೆಯಬಹುದು. ಆ್ಯಪ್ ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪಡೆಯಲು ನಿಮ್ಮ ಸಾಧನಕ್ಕಾಗಿ ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಬೇಕು. ಇದು ಬ್ಯಾಟರಿ ಬಳಕೆಯನ್ನು ಹೆಚ್ಚಿಸಬಹುದು."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ಮುನ್ನೆಲೆಯಲ್ಲಿ ಮಾತ್ರ ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಿ"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ಈ ಆ್ಯಪ್ ಮುನ್ನೆಲೆಯಲ್ಲಿರುವಾಗ ಮಾತ್ರ ನಿಮ್ಮ ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಪಡೆಯಬಲ್ಲದು. ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಿರಬೇಕು ಮತ್ತು ಅವುಗಳನ್ನು ಬಳಸಲು ಆ್ಯಪ್ಗೆ ಸಾಧ್ಯವಾಗುವಂತೆ ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಅವುಗಳು ಲಭ್ಯವಿರಬೇಕು."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ಈ ಆ್ಯಪ್ ಬಳಕೆಯಲ್ಲಿರುವಾಗ ನಿಮ್ಮ ಅಂದಾಜು ಸ್ಥಳವನ್ನು, ಸ್ಥಳ ಸೇವೆಗಳಿಂದ ಪಡೆಯಬಹುದು. ಆ್ಯಪ್ ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪಡೆಯಲು ನಿಮ್ಮ ಸಾಧನಕ್ಕಾಗಿ ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಬೇಕು."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಿ"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ಈ ಆ್ಯಪ್ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ರನ್ ಆಗುವಾಗ ಸ್ಥಳದ ಜೊತೆಗೆ ಮುನ್ನೆಲೆಯಲ್ಲಿನ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ಈ ಆ್ಯಪ್ ಬಳಕೆಯಲ್ಲಿಲ್ಲದಿರುವಾಗಲೂ ಸಹ ಸ್ಥಳವನ್ನು ಯಾವುದೇ ಸಮಯದಲ್ಲಾದರೂ ಪ್ರವೇಶಿಸಬಹುದು."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ನಿಮ್ಮ ಆಡಿಯೊ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬದಲಾಯಿಸಿ"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ವಾಲ್ಯೂಮ್ ರೀತಿಯ ಮತ್ತು ಔಟ್ಪುಟ್ಗಾಗಿ ಯಾವ ಸ್ಪೀಕರ್ ಬಳಸಬೇಕು ಎಂಬ ರೀತಿಯ ಜಾಗತಿಕ ಆಡಿಯೊ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ಆಡಿಯೊ ರೆಕಾರ್ಡ್ ಮಾಡಿ"</string> @@ -447,8 +443,7 @@ <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> <skip /> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"ಕ್ಯಾಮರಾ ಸಾಧನಗಳನ್ನು ತೆರೆಯುತ್ತಿರುವ ಅಥವಾ ಮುಚ್ಚುತ್ತಿರುವ ಕುರಿತು ಕಾಲ್ಬ್ಯಾಕ್ಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಆ್ಯಪ್ ಅಥವಾ ಸೇವೆಗೆ ಅನುಮತಿಸಿ."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"ಯಾವುದೇ ಕ್ಯಾಮರಾ ಸಾಧನವನ್ನು ತೆರೆಯುತ್ತಿರುವಾಗ ಅಥವಾ ಮುಚ್ಚುತ್ತಿರುವಾಗ (ಯಾವ ಅಪ್ಲಿಕೇಶನ್ನಿಂದ ಎಂಬ ಮಾಹಿತಿಯ ಮೂಲಕ) ಈ ಆ್ಯಪ್, ಕಾಲ್ಬ್ಯಾಕ್ಗಳನ್ನು ಸ್ವೀಕರಿಸಬಹುದು."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"ವೈಬ್ರೇಷನ್ ನಿಯಂತ್ರಿಸಿ"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"ವೈಬ್ರೇಟರ್ ನಿಯಂತ್ರಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"ವೈಬ್ರೇಟರ್ ಸ್ಥಿತಿಯನ್ನು ಪ್ರವೇಶಿಸಲು ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string> @@ -770,7 +765,7 @@ <string name="phoneTypeTtyTdd" msgid="532038552105328779">"TTY TDD"</string> <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"ಕಚೇರಿ ಮೊಬೈಲ್"</string> <string name="phoneTypeWorkPager" msgid="3748332310638505234">"ಕಚೇರಿ ಪೇಜರ್"</string> - <string name="phoneTypeAssistant" msgid="757550783842231039">"ಸಹಾಯಕ"</string> + <string name="phoneTypeAssistant" msgid="757550783842231039">"Assistant"</string> <string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string> <string name="eventTypeCustom" msgid="3257367158986466481">"ಕಸ್ಟಮ್"</string> <string name="eventTypeBirthday" msgid="7770026752793912283">"ಜನ್ಮದಿನ"</string> @@ -803,7 +798,7 @@ <string name="orgTypeOther" msgid="5450675258408005553">"ಇತರೆ"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"ಕಸ್ಟಮ್"</string> <string name="relationTypeCustom" msgid="282938315217441351">"ಕಸ್ಟಮ್"</string> - <string name="relationTypeAssistant" msgid="4057605157116589315">"ಸಹಾಯಕ"</string> + <string name="relationTypeAssistant" msgid="4057605157116589315">"Assistant"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"ಸಹೋದರ"</string> <string name="relationTypeChild" msgid="9076258911292693601">"ಮಗು"</string> <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"ಸ್ಥಳೀಯ ಪಾಲುದಾರ"</string> @@ -1350,13 +1345,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"ಪ್ರಸ್ತುತ ವಿಷಯವನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"ಹೊಸ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"ಹೊಂದಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ಫೋಟೋಗಳು ಮತ್ತು ಮಾಧ್ಯಮವನ್ನು ವರ್ಗಾಯಿಸಲು"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> ನೊಂದಿಗೆ ಸಮಸ್ಯೆ"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"ಸರಿಪಡಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> ದೋಷಪೂರಿತವಾಗಿದೆ. ಸರಿಪಡಿಸಲು ಆಯ್ಕೆ ಮಾಡಿ."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"ಬೆಂಬಲಿಸದಿರುವ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"ಈ ಸಾಧನವು <xliff:g id="NAME">%s</xliff:g> ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಬೆಂಬಲಿತ ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ ಹೊಂದಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"ಈ ಸಾಧನವು ಈ <xliff:g id="NAME">%s</xliff:g> ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಬೆಂಬಲಿತ ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ ಹೊಂದಿಸಲು ಆಯ್ಕೆ ಮಾಡಿ."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> ಅನಿರೀಕ್ಷಿತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"ವಿಷಯ ನಷ್ಟವನ್ನು ತಪ್ಪಿಸಲು ತೆಗೆದುಹಾಕುವುದಕ್ಕೂ ಮುನ್ನ ಮಾಧ್ಯಮವನ್ನು ಎಜೆಕ್ಟ್ ಮಾಡಿ"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> ಅವರನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string> @@ -2073,35 +2072,20 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"ಕೆಲಸ"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ವೈಯಕ್ತಿಕ ವೀಕ್ಷಣೆ"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"ಕೆಲಸದ ವೀಕ್ಷಣೆ"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"ಕೆಲಸದ ಆ್ಯಪ್ಗಳ ಮೂಲಕ ಇದನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"ನಿಮ್ಮ ಕೆಲಸದ ಪ್ರೊಫೈಲ್ನಲ್ಲಿರುವ ಆ್ಯಪ್ಗಳ ಮೂಲಕ ಈ ವಿಷಯವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು, ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರು ಅನುಮತಿ ನೀಡುವುದಿಲ್ಲ"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್ಗಳ ಮೂಲಕ ಇದನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"ನಿಮ್ಮ ಕೆಲಸದ ಪ್ರೊಫೈಲ್ನಲ್ಲಿರುವ ಆ್ಯಪ್ಗಳ ಮೂಲಕ ಈ ವಿಷಯವನ್ನು ತೆರೆಯಲು, ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರು ಅನುಮತಿ ನೀಡುವುದಿಲ್ಲ"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"ವೈಯಕ್ತಿಕ ಆ್ಯಪ್ಗಳ ಮೂಲಕ ಇದನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಪ್ರೊಫೈಲ್ನಲ್ಲಿರುವ ಆ್ಯಪ್ಗಳ ಮೂಲಕ ಈ ವಿಷಯವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು, ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರು ಅನುಮತಿ ನೀಡುವುದಿಲ್ಲ"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"ಇದನ್ನು ವೈಯಕ್ತಿಕ ಆ್ಯಪ್ಗಳ ಮೂಲಕ ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಪ್ರೊಫೈಲ್ನಲ್ಲಿರುವ ಆ್ಯಪ್ಗಳ ಮೂಲಕ ಈ ವಿಷಯವನ್ನು ತೆರೆಯಲು, ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರು ಅನುಮತಿ ನೀಡುವುದಿಲ್ಲ"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಪ್ರೊಫೈಲ್ ಅನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"ಆನ್ ಮಾಡಿ"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ಫೋನ್ ಕರೆಗಳಲ್ಲಿ ಆಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿ ಅಥವಾ ಪ್ಲೇ ಮಾಡಿ"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ಡೀಫಾಲ್ಟ್ ಡಯಲರ್ ಅಪ್ಲಿಕೇಶನ್ ರೀತಿ ಬಳಸಿದಾಗ ಫೋನ್ ಕರೆಗಳಲ್ಲಿ ಆಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಅಥವಾ ಪ್ಲೇ ಮಾಡಲು ಈ ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸಿ."</string> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಯಾವುದೇ ಆ್ಯಪ್ಗಳು ಈ ವಿಷಯವನ್ನು ಬೆಂಬಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಯಾವುದೇ ಆ್ಯಪ್ಗಳು ಈ ವಿಷಯವನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"ಯಾವುದೇ ವೈಯಕ್ತಿಕ ಆ್ಯಪ್ಗಳು ಈ ವಿಷಯವನ್ನು ಬೆಂಬಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"ಯಾವುದೇ ವೈಯಕ್ತಿಕ ಆ್ಯಪ್ಗಳು ಈ ವಿಷಯವನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> <skip /> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index b236ce16afa2..4d38d3f3fe5b 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"관리자가 기기를 개인용으로 전환했습니다."</string> <string name="network_logging_notification_title" msgid="554983187553845004">"관리되는 기기"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"조직에서 이 기기를 관리하며 네트워크 트래픽을 모니터링할 수도 있습니다. 자세한 내용을 보려면 탭하세요."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"관리자가 위치 설정을 변경함"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"위치 설정을 보려면 탭하세요."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"앱에서 위치 정보에 액세스할 수 있음"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"자세한 내용은 IT 관리자에게 문의하세요."</string> <string name="country_detector" msgid="7023275114706088854">"국가 감지기"</string> <string name="location_service" msgid="2439187616018455546">"위치 서비스"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"센서 알림 서비스"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"기기가 삭제됩니다."</string> <string name="factory_reset_message" msgid="2657049595153992213">"관리자 앱을 사용할 수 없습니다. 곧 기기가 삭제됩니다.\n\n궁금한 점이 있으면 조직의 관리자에게 문의하세요."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g>에 의해 사용 중지되었습니다."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"개인 앱 차단 해제"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"내일부터 앱이 차단됨"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT 관리자가 <xliff:g id="DAYS">%1$d</xliff:g>일보다 오래 직장 프로필을 일시중지하도록 허용하지 않습니다."</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"직장 프로필 사용 설정"</string> <string name="me" msgid="6207584824693813140">"나"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"태블릿 옵션"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV 옵션"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"휴대전화 옵션"</string> <string name="global_action_lock" msgid="6949357274257655383">"화면 잠금"</string> <string name="global_action_power_off" msgid="4404936470711393203">"종료"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"전원"</string> + <string name="global_action_restart" msgid="4678451019561687074">"다시 시작"</string> <string name="global_action_emergency" msgid="1387617624177105088">"긴급 전화"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"버그 신고"</string> <string name="global_action_logout" msgid="6093581310002476511">"세션 끝내기"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"추가 위치 제공업체 명령에 접근"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"앱이 추가 위치 정보 제공 기능의 명령에 접근하도록 허용합니다. 이 경우 앱이 GPS 또는 기타 위치 소스의 작동을 방해할 수 있습니다."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"포그라운드에서만 정확한 위치에 액세스"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"이 앱은 포그라운드에 있을 때만 나의 정확한 위치를 확인할 수 있습니다. 앱에서 위치 서비스를 사용하려면 기기에서 위치 서비스가 지원되며 사용 설정되어 있어야 합니다. 배터리 사용량이 늘어날 수 있습니다."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"이 앱은 사용 중일 때 위치 서비스로부터 정확한 위치 정보를 받을 수 있습니다. 앱에서 위치 정보를 받으려면 기기의 위치 서비스가 사용 설정되어 있어야 합니다. 이로 인해 배터리 사용량이 증가할 수 있습니다."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"포그라운드에서만 대략적인 위치에 액세스"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"이 앱은 포그라운드에 있을 때만 나의 대략적인 위치를 확인할 수 있습니다. 앱에서 위치 서비스를 사용하려면 기기에서 위치 서비스가 지원되며 사용 설정되어 있어야 합니다."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"이 앱은 사용 중일 때 위치 서비스로부터 대략적인 위치 정보를 받을 수 있습니다. 앱에서 위치 정보를 받으려면 기기의 위치 서비스가 사용 설정되어 있어야 합니다."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"백그라운드에서 위치 정보 액세스"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"이 앱이 포그라운드뿐만 아니라 백그라운드에서 실행되는 동안에도 위치에 액세스할 수 있습니다."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"이 앱은 사용 중이 아닐 때도 언제든지 위치 정보에 액세스할 수 있습니다."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"오디오 설정 변경"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"앱이 음량이나 출력을 위해 사용하는 스피커 등 전체 오디오 설정을 변경할 수 있도록 허용합니다."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"오디오 녹음"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"사진과 동영상 찍기"</string> <string name="permdesc_camera" msgid="1354600178048761499">"이 앱은 언제든지 카메라를 사용하여 사진을 촬영하고 동영상을 녹화할 수 있습니다."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"사진 및 동영상 촬영을 위해 애플리케이션 또는 서비스에서 시스템 카메라에 액세스하도록 허용"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"이 권한이 있는 시스템 앱은 언제든지 시스템 카메라를 사용하여 사진을 촬영하고 동영상을 녹화할 수 있습니다. 또한 앱에 android.permission.CAMERA 권한이 필요합니다."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"애플리케이션 또는 서비스에서 카메라 기기 열림 또는 닫힘에 대한 콜백을 수신하도록 허용"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"이 앱은 애플리케이션이 카메라 기기를 열거나 닫을 때 콜백을 수신할 수 있습니다."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"진동 제어"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"앱이 진동을 제어할 수 있도록 허용합니다."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"앱이 진동 상태에 액세스하도록 허용합니다."</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"현재 콘텐츠 검토 중"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"새로운 <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"설정하려면 탭하세요."</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"사진 및 미디어를 전송하는 데 사용합니다."</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g>에 문제 발생"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"문제를 해결하려면 탭하세요."</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g>이(가) 손상되었습니다. 선택하여 문제를 해결하세요."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"지원되지 않는 <xliff:g id="NAME">%s</xliff:g>입니다."</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"이 기기는 <xliff:g id="NAME">%s</xliff:g>을(를) 지원하지 않습니다. 지원하는 형식으로 설정하려면 탭하세요."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"이 기기는 이 <xliff:g id="NAME">%s</xliff:g>을(를) 지원하지 않습니다. 선택하여 지원되는 형식으로 설정하세요."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g>이(가) 예기치 않게 삭제됨"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"콘텐츠 손실을 피하려면 미디어를 제거하기 전에 마운트 해제하세요."</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> 제거됨"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"권장 수준 이상으로 볼륨을 높이시겠습니까?\n\n높은 볼륨으로 장시간 청취하면 청력에 손상이 올 수 있습니다."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"접근성 단축키를 사용하시겠습니까?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"단축키가 사용 설정된 경우 볼륨 버튼 두 개를 동시에 3초간 누르면 접근성 기능이 시작됩니다."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"접근성 기능을 사용하시겠습니까?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"볼륨 키 2개를 몇 초 동안 길게 누르면 접근성 기능이 사용 설정됩니다. 이렇게 되면 기기 작동 방식이 달라질 수 있습니다.\n\n현재 기능:\n<xliff:g id="SERVICE">%1$s</xliff:g>\n설정 > 접근성에서 선택한 기능을 변경할 수 있습니다."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"음성 안내 지원을 사용하시겠습니까?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"볼륨 키 2개를 몇 초 동안 길게 누르면 음성 안내 지원이 사용 설정됩니다. 음성 안내 지원은 시각장애가 있거나 저시력인 사용자에게 유용한 스크린 리더 기능입니다. 음성 안내 지원을 사용하면 기기 작동 방식이 완전히 달라집니다.\n\n설정 > 접근성에서 이 단축키를 다른 기능으로 변경할 수 있습니다."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g>을(를) 사용하시겠습니까?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"볼륨 키 2개를 몇 초 동안 길게 누르면 <xliff:g id="SERVICE">%1$s</xliff:g> 접근성 기능이 사용 설정됩니다. 이렇게 되면 기기 작동 방식이 달라질 수 있습니다.\n\n설정 > 접근성에서 이 단축키를 다른 기능으로 변경할 수 있습니다."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"사용 설정"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"사용 안 함"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>에서 기기를 완전히 제어하도록 허용하시겠습니까?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g>을(를) 사용 설정하면 기기에서 데이터 암호화를 개선하기 위해 화면 잠금을 사용하지 않습니다."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"접근성 관련 지원을 제공하는 앱에는 완벽한 제어권을 부여하는 것이 좋으나, 대부분의 앱에는 적합하지 않습니다."</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"허용"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"거부"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"기능을 사용하려면 탭하세요"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"접근성 버튼으로 사용할 기능 선택"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"볼륨 키 단축키로 사용할 기능 선택"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g>이(가) 사용 중지됨"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"단축키 수정"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"완료"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"단축키 사용"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"색상 반전"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"색상 보정"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"볼륨 키를 길게 눌렀습니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 설정되었습니다."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"볼륨 키를 길게 눌렀습니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 중지되었습니다."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 서비스를 사용하려면 두 볼륨 키를 3초 동안 길게 누르세요"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"접근성 버튼을 탭할 때 사용할 기능을 선택하세요."</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"접근성 동작(두 손가락을 사용하여 화면 하단에서 위로 스와이프)으로 실행할 기능을 선택하세요."</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"접근성 동작(세 손가락을 사용하여 화면 하단에서 위로 스와이프)으로 실행할 기능을 선택하세요."</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"기능 간에 전환하려면 접근성 버튼을 길게 터치합니다."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"기능 간에 전환하려면 두 손가락을 사용하여 위로 스와이프한 다음 잠시 기다립니다."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"기능 간에 전환하려면 세 손가락을 사용하여 위로 스와이프한 다음 잠시 기다립니다."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"확대"</string> <string name="user_switched" msgid="7249833311585228097">"현재 사용자는 <xliff:g id="NAME">%1$s</xliff:g>님입니다."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>(으)로 전환하는 중…"</string> @@ -2050,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> 및 파일 <xliff:g id="COUNT_3">%d</xliff:g>개</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> 및 파일 <xliff:g id="COUNT_1">%d</xliff:g>개</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"공유할 추천 사용자가 없음"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"앱 목록"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"이 앱에는 녹음 권한이 부여되지 않았지만, 이 USB 기기를 통해 오디오를 녹음할 수 있습니다."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"홈"</string> @@ -2087,222 +2063,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"이 콘텐츠를 열 수 있는 직장 앱이 없음"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"이 콘텐츠를 지원하는 개인 앱이 없음"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"이 콘텐츠를 열 수 있는 개인 앱이 없음"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"전화 통화 중에 오디오 녹음 또는 재생"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"이 앱이 기본 다이얼러 애플리케이션으로 지정되었을 때 전화 통화 중에 오디오를 녹음하거나 재생하도록 허용합니다."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM 네트워크 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM 네트워크 하위 집합 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM 회사 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM 서비스 제공업체 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK 입력"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK 입력"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK 입력"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK 입력"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK 입력"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM network1 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM network2 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM HRPD 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM 회사 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM 서비스 제공업체 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK 입력"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK 입력"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK 입력"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK 입력"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK 입력"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK 입력"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"네트워크 하위 집합 서비스 제공업체 잠금 해제 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM 네트워크 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM 네트워크 하위 집합 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM 서비스 제공업체 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"SIM 회사 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM network1 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM network2 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM HRPD 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM 서비스 제공업체 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM 회사 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP Equivalent Home PLMN 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"네트워크 하위 집합 서비스 제공업체 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK 잠금 해제 요청 중…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM 네트워크 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM 네트워크 하위 집합 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM 서비스 제공업체 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM 회사 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM Network1 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM Network2 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM HRPD 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM 회사 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM 서비스 제공업체 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK 잠금 해제가 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK 잠금 해제가 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK 잠금 해제가 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK 잠금 해제가 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK 잠금 해제가 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK 잠금 해제가 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK 잠금 해제가 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK 잠금 해제가 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK 잠금 해제가 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK 잠금 해제가 실패했습니다."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK 잠금 해제가 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"네트워크 하위 집합 서비스 제공업체 잠금 해제 요청이 실패했습니다."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM 네트워크 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM 네트워크 하위 집합 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM 서비스 제공업체 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM 회사 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM Network1 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM Network2 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM HRPD 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM 서비스 제공업체 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM 회사 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI 잠금 해제가 완료되었습니다."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"네트워크 하위 집합 서비스 제공업체 잠금 해제가 완료되었습니다."</string> </resources> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index af6e6724e469..6a634efc73c8 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Админ түзмөктөн жеке колдонуу үчүн баш тартты"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Түзмөктү ишкана башкарат"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Ишканаңыз бул түзмөктү башкарат жана тармак трафигин көзөмөлдөшү мүмкүн. Чоо-жайын билгиңиз келсе, таптап коюңуз."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Жайгашкан жерди аныктоо жөндөөлөрүн администраторуңуз өзгөртүп койду"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Жайгашкан жерди аныктоо жөндөөлөрүн көрүү үчүн таптап коюңуз."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Колдонмолор кайда жүргөнүңүздү көрө алат"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Толук маалымат алуу үчүн IT администраторуңузга кайрылыңыз"</string> <string name="country_detector" msgid="7023275114706088854">"Өлкөнү аныктагыч"</string> <string name="location_service" msgid="2439187616018455546">"Жайгашкан жерди аныктоо кызматы"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Сенсордун билдирмелеринин кызматы"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Түзмөгүңүз тазаланат"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Түзмөктү башкаруучу колдонмо жараксыз. Түзмөгүңүз азыр тазаланат.\n\nСуроолоруңуз болсо, ишканаңыздын администраторуна кайрылыңыз."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Басып чыгаруу <xliff:g id="OWNER_APP">%s</xliff:g> тарабынан өчүрүлдү."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Жеке колд. бөгөттөн чыгарыңыз"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Колдонмолор эртең бөгөттөлөт"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT администраторуңуз жумуш профилиңиздин <xliff:g id="DAYS">%1$d</xliff:g> күндөн ашык тындырылышына тыюу салды"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Жумуш профилин күйгүзүү"</string> <string name="me" msgid="6207584824693813140">"Мен"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Планшет мүмкүнчүлүктөрү"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV параметрлери"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Телефон мүмкүнчүлүктөрү"</string> <string name="global_action_lock" msgid="6949357274257655383">"Экран кулпусу"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Өчүрүү"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Кубат"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Кайра баштоо"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Тез жардам"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Ката тууралуу билдирүү"</string> <string name="global_action_logout" msgid="6093581310002476511">"Сеансты бүтүрүү"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"жайгашкан жерди аныктагычтын кошумча буйруктарын пайдалануу"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Колдонмого жайгашкан жерди табуучу кошумча жабдуучулардын буйруктарын колдонуу мүмкүнчүлүгүн берет. Ушуну менен колдонмо GPS\'тин ишине жана башка жайгашкан жерлерди аныктоо кызматтарына кийлигише алат."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"так аныкталган жайгашкан жерге активдүү режимде гана кирүүгө уруксат берүү"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана аныктай алат. Ал үчүн түзмөгүңүздө жайгашкан жерди аныктоо кызматын иштетип, колдонмого кайда жүргөнүңүздү аныктоого уруксат беришиңиз керек. Батареяңыз тез отуруп калышы мүмкүн."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана так аныктай алат. Ал үчүн түзмөгүңүздө жайгашкан жерди аныктоо кызматын иштетишиңиз керек. Батарея тезирээк отуруп калышы мүмкүн."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"кайда жүргөнүмдү активдүү режимде божомолдоого уруксат берүү"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана аныктай алат. Ал үчүн түзмөгүңүздө жайгашкан жерди аныктоо кызматын иштетип, колдонмого кайда жүргөнүңүздү аныктоого уруксат беришиңиз керек."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана болжолдуу аныктай алат. Ал үчүн түзмөгүңүздө жайгашкан жерди аныктоо кызматын иштетишиңиз керек."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"жайгашкан жерди фондо аныктоо"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана эмес, фондук режимде да аныктай алат."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана эмес, фондук режимде да аныктай алат."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"аудио жөндөөлөрүңүздү өзгөртүңүз"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Колдонмого үн деңгээли жана кайсы динамик аркылуу үн чыгарылышы керек сыяктуу түзмөктүн аудио тууралоолорун өзгөртүүгө уруксат берет."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"аудио жаздыруу"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"сүрөт жана видео тартуу"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Бул колдонмо каалаган убакта камера менен сүрөт же видеолорду тарта алат."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Сүрөткө тартып, видеолорду жаздыруу үчүн бул колдонмого же кызматка тутумдун камерасын колдонууга уруксат берүү"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Бул артыкчылыктуу тутум колдонмосу тутумдун камерасын каалаган убакта колдонуп, сүрөткө тартып, видео жаздыра алат. Ошондой эле колдонмого android.permission.CAMERA уруксатын берүү керек"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Колдонмого же кызматка камера ачылып же жабылып жатканда чалууларды кабыл алууга уруксат берүү."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Бул колдонмо камера ачылып (аны ачып жаткан колдонмо көрсөтүлгөндө) же жабылып жатканда чалууларды кабыл алат."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"титирөөнү башкаруу"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Колдонмого дирилдегичти көзөмөлдөө мүмкүнчүлүгүн берет."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Колдонмого дирилдөө абалына кирүүгө уруксат берет."</string> @@ -832,7 +824,7 @@ <string name="keyguard_password_wrong_pin_code" msgid="8583732939138432793">"PIN-код туура эмес."</string> <string name="keyguard_label_text" msgid="3841953694564168384">"Кулпусун ачуу үчүн, Менюна андан соң 0 баскычын басыңыз."</string> <string name="emergency_call_dialog_number_for_display" msgid="2978165477085612673">"Өзгөчө кырдаалдар кызматы"</string> - <string name="lockscreen_carrier_default" msgid="6192313772955399160">"Байланыш жок"</string> + <string name="lockscreen_carrier_default" msgid="6192313772955399160">"Интернет жок"</string> <string name="lockscreen_screen_locked" msgid="7364905540516041817">"Экран кулпуланды."</string> <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Кулпусун ачып же Шашылыш чалуу аткаруу үчүн менюну басыңыз."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Бөгөттөн чыгаруу үчүн Менюну басыңыз."</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Учурдагы мазмун каралып жатат"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Жаңы <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Жөндөө үчүн таптаңыз"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Сүрөттөрдү жана медиа өткөрүү үчүн"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> түзмөгүндө бир маселе бар"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Оңдоо үчүн таптап коюңуз"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> – бузук. Оңдоо үчүн тандаңыз."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> колдоого алынбайт"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Бул түзмөктө <xliff:g id="NAME">%s</xliff:g> колдоого алынбайт. Колдоого алынуучу форматта орнотуу үчүн таптап коюңуз."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Бул түзмөктө <xliff:g id="NAME">%s</xliff:g> колдоого алынбайт. Колдоого алынуучу форматта орнотуу үчүн тандаңыз."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> күтүүсүздөн өчүрүлдү"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Мазмунду жоготуп албаш үчүн алып салуудан мурда медианы өчүрүңүз"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> чыгарылды"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Сунушталган деңгээлден да катуулатып уккуңуз келеби?\n\nМузыканы узакка чейин катуу уксаңыз, угууңуз начарлап кетиши мүмкүн."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Ыкчам иштетесизби?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Атайын мүмкүнчүлүктөр функциясын пайдалануу үчүн ал күйгүзүлгөндө, үндү катуулатып/акырындаткан эки баскычты тең 3 секунддай коё бербей басып туруңуз."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Атайын мүмкүнчүлүктөр күйгүзүлсүнбү?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Үнүн чоңойтуп/кичирейтүү баскычтарын бир нече секунд коё бербей басып турса, атайын мүмкүнчүлүктөр күйгүзүлөт. Бул түзмөгүңүздүн ишин өзгөртүшү мүмкүн.\n\nУчурдагы функциялар:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nТандалган функцияларды Жөндөөлөр > Атайын мүмкүнчүлүктөр бөлүмүнөн өзгөртө аласыз."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack күйгүзүлсүнбү?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Үнүн чоңойтуп/кичирейтүү баскычтарын бир нече секунд коё бербей басып турса, TalkBack – азиздерге жана көздөрү начар көргөн адамдарга жардам берген экрандагыны окугуч күйгүзүлөт. TalkBack түзмөгүңүздүн ишин толугу менен өзгөртөт.\n\nБул ыкчам баскычты Жөндөөлөр > Атайын мүмкүнчүлүктөр бөлүмүнөн башка функцияга өзгөртө аласыз."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> күйгүзүлсүнбү?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Үнүн чоңойтуп/кичирейтүү баскычтарын бир нече секунд коё бербей басып турса, <xliff:g id="SERVICE">%1$s</xliff:g>, атайын мүмкүнчүлүктөр күйгүзүлөт. Бул түзмөгүңүздүн ишин өзгөртүшү мүмкүн.\n\nБул ыкчам баскычты Жөндөөлөр > Атайын мүмкүнчүлүктөр бөлүмүнөн башка функцияга өзгөртө аласыз."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Күйгүзүлсүн"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Күйгүзүлбөсүн"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> кызматына түзмөгүңүздү толугу менен көзөмөлдөөгө уруксат бересизби?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Эгер <xliff:g id="SERVICE">%1$s</xliff:g> күйгүзүлсө, түзмөгүңүз дайын-даректерди шифрлөөнү күчтөндүрүү үчүн экраныңыздын кулпусун пайдаланбайт."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Толук көзөмөл атайын мүмкүнчүлүктөрдү пайдаланууга керек, бирок калган көпчүлүк колдонмолорго кереги жок."</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Уруксат берүү"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Жок"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Функцияны колдонуп баштоо үчүн аны таптап коюңуз:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Атайын мүмкүнчүлүктөр баскычы менен колдонгуңуз келген функцияларды тандаңыз"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Үн деңгээлинин баскычтары менен колдонгуңуз келген функцияларды тандаңыз"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> өчүрүлдү"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Кыска жолдорду түзөтүү"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Бүттү"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Кыска жолду колдонуу"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Түстү инверсиялоо"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Түсүн тууралоо"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Үн деңгээлинин баскычтарын басып туруңуз. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> күйгүзүлдү."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Үн деңгээлинин баскычтарын басып туруңуз. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> өчүрүлдү."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> кызматын колдонуу үчүн үнүн чоңойтуп/кичирейтүү баскычтарын үч секунд коё бербей басып туруңуз"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Атайын мүмкүнчүлүктөр баскычын таптаганыңызда иштей турган функцияны тандаңыз:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Атайын мүмкүнчүлүктөр жаңсоосу үчүн функцияны тандаңыз (эки манжаңыз менен экрандын ылдый жагынан өйдө карай сүрүңүз):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Атайын мүмкүнчүлүктөр жаңсоосу аркылуу иштетиле турган функцияны тандаңыз (үч манжаңыз менен экрандын ылдый жагынан өйдө карай сүрүңүз):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Функцияларды которуштуруу үчүн Атайын мүмкүнчүлүктөр баскычын басып, кармап туруңуз."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Функцияларды которуштуруу үчүн эки манжаңыз менен өйдө сүрүп, кармап туруңуз."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Башка функцияга которулуу үчүн үч манжаңыз менен экранды өйдө сүрүп, кармап туруңуз."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Чоңойтуу"</string> <string name="user_switched" msgid="7249833311585228097">"Учурдагы колдонуучу <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> дегенге которулууда…"</string> @@ -2050,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> файл</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> файл</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Бөлүшүү үчүн байланыштар сунушталган жок"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Колдонмолордун тизмеси"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Бул колдонмонун жаздырууга уруксаты жок, бирок бул USB түзмөгү аркылуу аудиону жаздыра алат."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Башкы бет"</string> @@ -2087,222 +2063,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Жумуш колдонмолору бул мазмунду ача алышпайт"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Жеке колдонмолор бул мазмунду колдоого алышпайт"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Жеке колдонмолор бул мазмунду ача алышпайт"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Телефон чалууларда жаздырып же аудиону ойнотуу"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Бул колдонмо демейки телефон катары дайындалганда ага чалууларды жаздырууга жана аудиону ойнотууга уруксат берет."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM карта тармагынын кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM кичи тармагынын кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM картанын корпоративдик кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM операторунун кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM карта кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK кодду киргизүү"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK кодду киргизүү"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK кодду киргизүү"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK кодду киргизүү"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK кодду киргизүү"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"R-UIM network1 картасын ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"R-UIM network2 картасын ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"R-UIM hrpd картасын ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"R-UIM картасынын корпоративдик кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"R-UIM операторунун кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"R-UIM картасын ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK кодду киргизүү"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK кодду киргизүү"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK кодду киргизүү"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK кодду киргизүү"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK кодду киргизүү"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK кодду киргизүү"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Кичи тармак операторунун кулпусун ачуучу PIN код"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM тармагынын кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM кичи тармагынын кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM операторунун кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"SIM картанын корпоративдик кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK коду менен ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK коду менен ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK коду менен ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK коду менен ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK коду менен ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM карта кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"R-UIM network1 картасынын кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"R-UIM network2 картасынын кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"R-UIM hrpd картасынын кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"R-UIM операторунун кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"R-UIM картасынын корпоративдик кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP Equivalent Home PLMN кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Кичи тармак операторунун кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"R-UIM картасынын кулпусун ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK коду менен ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK коду менен ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK коду менен ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK коду менен ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK коду менен ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK коду менен ачуу суралууда…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM тармагынын кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM кичи тармагынын кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM операторунун кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM картанын корпоративдик кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM карта кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"R-UIM Network1 картасынын кулпусу ачылган жок."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"R-UIM Network2 картасынын кулпусу ачылган жок."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"R-UIM Hrpd картасынын кулпусу ачылган жок."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"R-UIM картасынын кулпусун ачуу сурамы аткарылган жок."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"R-UIM операторунун кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"R-UIM картасынын кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK коду менен ачылган жок."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK коду менен ачылган жок."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK коду менен ачылган жок."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK коду менен ачылган жок."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK коду менен ачылган жок."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK коду менен ачылган жок."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK коду менен ачылган жок."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK коду менен ачылган жок."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK коду менен ачылган жок."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK коду менен ачылган жок."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK коду менен ачылган жок."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Кичи тармак операторунун кулпусун ачуу сурамы жөнөтүлгөн жок."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM тармагынын кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM кичи тармагынын кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM операторунун кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM картанын корпоративдик кулпусу ачылган жок."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM карта кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"R-UIM Network1 картасынын кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"R-UIM Network2 картасынын кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"R-UIM Hrpd картасынын кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"R-UIM операторунун кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"R-UIM картасынын корпотативдик кулпусу ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"R-UIM картасы ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK коду менен ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK коду менен ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK коду менен ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK коду менен ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK коду менен ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK коду менен ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK коду менен ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK коду менен ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK коду менен ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK коду менен ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK коду менен ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI кулпусу ийгиликтүү ачылды."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Кичи тармак операторунун кулпусу ийгиликтүү ачылды."</string> </resources> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index 046d92c5f55f..1f03694bad5a 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"ອຸປະກອນທີ່ຍົກເລີກແລ້ວສຳລັບການໃຊ້ສ່ວນບຸກຄົນ"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"ອຸປະກອນມີການຈັດການ"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"ອົງກອນຂອງທ່ານຈັດການອຸປະກອນນີ້ ແລະ ອາດກວດສອບທຣາບຟິກເຄືອຂ່າຍນຳ. ແຕະເພື່ອເບິ່ງລາຍລະອຽດ."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"ຜູ້ເບິ່ງແຍງຂອງທ່ານປ່ຽນການຕັ້ງຄ່າສະຖານທີ່ແລ້ວ"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"ແຕະເພື່ອເບິ່ງການຕັ້ງຄ່າສະຖານທີ່ຂອງທ່ານ."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"ແອັບສາມາດເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານໄດ້"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"ກະລຸນາຕິດຕໍ່ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານເພື່ອສຶກສາເພີ່ມເຕີມ"</string> <string name="country_detector" msgid="7023275114706088854">"ຕົວກວດຫາປະເທດ"</string> <string name="location_service" msgid="2439187616018455546">"ບໍລິການສະຖານທີ່"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"ບໍລິການການແຈ້ງເຕືອນເຊັນເຊີ"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"ອຸປະກອນຂອງທ່ານຈະຖືກລຶບ"</string> <string name="factory_reset_message" msgid="2657049595153992213">"ບໍ່ສາມາດໃຊ້ແອັບຜູ້ເບິ່ງແຍງລະບົບໄດ້. ອຸປະກອນຂອງທ່ານຈະຖືກລຶບຂໍ້ມູນໃນຕອນນີ້.\n\nຫາກທ່ານມີຄຳຖາມ, ໃຫ້ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບອົງກອນຂອງທ່ານ."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"ການພິມຖືກປິດໄວ້ໂດຍ <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"ປົດບລັອກແອັບສ່ວນຕົວຂອງທ່ານ"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"ແອັບຈະຖືກບລັອກໃນມື້ອື່ນ"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ຢຸດໂປຣໄຟລ໌ວຽກຂອງທ່ານເກີນ <xliff:g id="DAYS">%1$d</xliff:g> ມື້ໄດ້"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"ເປີດໃຊ້ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ"</string> <string name="me" msgid="6207584824693813140">"ຂ້າພະເຈົ້າ"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ໂຕເລືອກແທັບເລັດ"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"ຕົວເລືອກ Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"ໂຕເລືອກໂທລະສັບ"</string> <string name="global_action_lock" msgid="6949357274257655383">"ລັອກໜ້າຈໍ"</string> <string name="global_action_power_off" msgid="4404936470711393203">"ປິດ"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"ປິດເຄື່ອງ"</string> + <string name="global_action_restart" msgid="4678451019561687074">"ຣີສະຕາດ"</string> <string name="global_action_emergency" msgid="1387617624177105088">"ສຸກເສີນ"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"ລາຍງານຂໍ້ຜິດພາດ"</string> <string name="global_action_logout" msgid="6093581310002476511">"ສິ້ນສຸດເຊດຊັນ"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ເຂົ້າເຖິງຄຳສັ່ງຜູ່ໃຫ້ບໍລິການພິກັດສະຖານທີ່"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ອະນຸຍາດໃຫ້ແອັບຯເຂົ້າເຖິງຄຳສັ່ງເພີ່ມເຕີມຂອງຜູ່ໃຫ້ບໍລິການສະຖານທີ່. ນີ້ອາດຈະເປັນການເຮັດໃຫ້ແອັບຯ ລົບກວນການເຮັດວຽກຂອງ GPS ຫຼືແຫລ່ງຂໍ້ມູນສະຖານທີ່ອື່ນໆໄດ້."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"ເຂົ້າເຖິງສະຖານທີ່ແນ່ນອນໃນພື້ນໜ້າເທົ່ານັ້ນ"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ແອັບນີ້ສາມາດຮັບເອົາສະຖານທີ່ແນ່ນອນຂອງທ່ານໄດ້ທຸກເວລາທີ່ມັນຢູ່ໃນພື້ນໜ້າ. ການບໍລິການສະຖານທີ່ຕ້ອງເປີດຢູ່ ແລະ ສາມາດໃຊ້ໄດ້ໃນອຸປະກອນຂອງທ່ານເພື່ອໃຫ້ແອັບສາມາດໃຊ້ພວກມັນໄດ້. ນີ້ອາດຈະເຮັດໃຫ້ການໃຊ້ແບັດເຕີຣີເພີ່ມຂຶ້ນ."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ແອັບນີ້ສາມາດຂໍສະຖານທີ່ແບບລະອຽດຂອງທ່ານຈາກບໍລິການສະຖານທີ່ໄດ້ໃນຂະນະທີ່ກຳລັງໃຊ້ແອັບຢູ່. ທ່ານຕ້ອງເປີດໃຊ້ບໍລິການສະຖານທີ່ສຳລັບອຸປະກອນຂອງທ່ານກ່ອນເພື່ອໃຫ້ແອັບຂໍຂໍ້ມູນສະຖານທີ່. ນີ້ອາດເພີ່ມການນຳໃຊ້ແບັດເຕີຣີ."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ເຂົ້າເຖິງສະຖານທີ່ໂດຍປະມານເມື່ອຢູ່ໃນພື້ນໜ້າເທົ່ານັ້ນ"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ແອັບນີ້ສາມາດລະບຸສະຖານທີ່ໂດຍປະມານການຂອງທ່ານໄດ້ສະເພາະເມື່ອມັນຢູ່ໃນພື້ນຫຼັງເທົ່ານັ້ນ. ຈະຕ້ອງເປີດໃຊ້ບໍລິການສະຖານທີ່ ແລະ ໃຊ້ໄດ້ຢູ່ລົດຂອງທ່ານເພື່ອໃຫ້ແອັບສາມາດໃຊ້ພວກມັນໄດ້."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ແອັບນີ້ສາມາດຂໍສະຖານທີ່ໂດຍປະມານຂອງທ່ານຈາກບໍລິການສະຖານທີ່ໄດ້ໃນຂະນະທີ່ກຳລັງໃຊ້ແອັບຢູ່. ທ່ານຕ້ອງເປີດໃຊ້ບໍລິການສະຖານທີ່ສຳລັບອຸປະກອນຂອງທ່ານກ່ອນເພື່ອໃຫ້ແອັບຂໍຂໍ້ມູນສະຖານທີ່."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ເຂົ້າເຖິງສະຖານທີ່ໃນພື້ນຫຼັງ"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ແອັບນີ້ສາມາດເຂົ້າເຖິງສະຖານທີ່ໃນເວລາເຮັດວຽກໃນພື້ນຫຼັງ, ນອກເໜືອໄປຈາກການເຂົ້າເຖິງສະຖານທີ່ໃນພື້ນໜ້າ."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ແອັບນີ້ສາມາດເຂົ້າເຖິງສະຖານທີ່ໄດ້ຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ປ່ຽນການຕັ້ງຄ່າສຽງຂອງທ່ານ"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂການຕັ້ງຄ່າສຽງສ່ວນກາງ ເຊັ່ນ: ລະດັບສຽງ ແລະລຳໂພງໃດທີ່ຖືກໃຊ້ສົ່ງສຽງອອກ."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ບັນທຶກສຽງ"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"ຖ່າຍຮູບ ແລະວິດີໂອ"</string> <string name="permdesc_camera" msgid="1354600178048761499">"This app can take pictures and record videos using the camera at any time."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ຫຼື ບໍລິການເຂົ້າເຖິງກ້ອງຂອງລະບົບໄດ້ເພື່ອຖ່າຍຮູບ ແລະ ວິດີໂອ"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"ສິດ ຫຼື ແອັບລະບົບນີ້ສາມາດຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອໂດຍໃຊ້ກ້ອງຂອງລະບົບຕອນໃດກໍໄດ້. ຕ້ອງໃຊ້ສິດອະນຸຍາດ android.permission.CAMERA ໃຫ້ແອັບຖືນຳ"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ຫຼື ບໍລິການຮັບການເອີ້ນກັບກ່ຽວກັບອຸປະກອນກ້ອງຖືກເປີດ ຫຼື ປິດໄດ້."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"ແອັບນີ້ສາມາດຮັບການເອີ້ນກັບໄດ້ເມື່ອມີອຸປະກອນກ້ອງໃດຖືກເປີດ (ໂດຍແພັກເກດແອັບພລິເຄຊັນຫຍັງ) ຫຼື ຖືກປິດ."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"ຄວບຄຸມການສັ່ນ"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"ອະນຸຍາດໃຫ້ແອັບຯຄວບຄຸມໂຕສັ່ນ."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"ອະນຸຍາດໃຫ້ແອັບເຂົ້າເຖິງສະຖານະການສັ່ນໄດ້."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"ກຳລັງຕໍ່ອາຍຸເນື້ອຫາປັດຈຸບັນ"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> ໃໝ່"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"ແຕະເພື່ອຕັ້ງຄ່າ"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ສຳລັບການໂອນຮູບຖ່າຍ ແລະມີເດຍ"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"ເກີດບັນຫາກັບ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"ແຕະເພື່ອແກ້ໄຂ"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> ເສຍຫາຍ. ແຕະເພື່ອສ້ອມແປງ."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"ບໍ່ຮອງຮັບ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"ອຸປະກອນນີ້ບໍ່ຮອງຮັບ <xliff:g id="NAME">%s</xliff:g> ນີ້. ແຕະເພື່ອຕັ້ງຄ່າໃນຮູບແບບທີ່ຮອງຮັບ."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"ອຸປະກອນນີ້ບໍ່ຮອງຮັບ <xliff:g id="NAME">%s</xliff:g> ນີ້. ແຕະເພື່ອຕັ້ງຄ່າໃນຮູບແບບທີ່ຮອງຮັບ."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"ອຸປະກອນນີ້ບໍ່ຮອງຮັບ <xliff:g id="NAME">%s</xliff:g> ນີ້."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> ຖືກຖອດອອກໄປແບບບໍ່ຄາດຄິດ"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"ກະລຸນາດີດມີເດຍອອກກ່ອນການຖອດເພື່ອຫຼີກເວັ້ນການສູນເສຍຂໍ້ມູນ"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"ຖອດ <xliff:g id="NAME">%s</xliff:g> ອອກແລ້ວ"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ເພີ່ມລະດັບສຽງໃຫ້ເກີນກວ່າລະດັບທີ່ແນະນຳບໍ?\n\nການຮັບຟັງສຽງໃນລະດັບທີ່ສູງເປັນໄລຍະເວລາດົນອາດເຮັດໃຫ້ການຟັງຂອງທ່ານມີບັນຫາໄດ້."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ໃຊ້ປຸ່ມລັດການຊ່ວຍເຂົ້າເຖິງບໍ?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ເມື່ອເປີດໃຊ້ທາງລັດແລ້ວ, ການກົດປຸ່ມລະດັບສຽງທັງສອງຄ້າງໄວ້ 3 ວິນາທີຈະເປັນການເລີ່ມຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງ."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"ເປີດໃຊ້ຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງບໍ?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"ກົດປຸ່ມລະດັບສຽງທັງສອງຄ້າງໄວ້ສອງສາມວິນາທີເພື່ອເປີດໃຊ້ຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງ. ນີ້ອາດປ່ຽນວິທີການເຮັດວຽກຂອງອຸປະກອນທ່ານ.\n\nຄຸນສົມບັດປັດຈຸບັນ:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nທ່ານສາມາດປ່ຽນຄຸນສົມບັດທີ່ເລືອກໄດ້ໃນການຕັ້ງຄ່າ > ການຊ່ວຍເຂົ້າເຖິງ."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"ເປີດໃຊ້ TalkBack ບໍ?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"ກົດປຸ່ມລະດັບສຽງທັງສອງຄ້າງໄວ້ສອງສາມວິນາທີເພື່ອເປີດໃຊ້ TalkBack, ຕົວອ່ານໜ້າຈໍທີ່ມີປະໂຫຍດສຳລັບຄົນຕາບອດ ຫຼື ມີບັນຫາທາງສາຍຕາ. TalkBack ຈະປ່ຽນວິທີການເຮັດວຽກຂອງໂທລະສັບທ່ານໂດຍສົມບູນ.\n\nທ່ານສາມາດປ່ຽນທາງລັດນີ້ເປັນຄຸນສົມບັດອື່ນໄດ້ໃນການຕັ້ງຄ່າ > ການຊ່ວຍເຂົ້າເຖິງ."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"ເປີດໃຊ້ <xliff:g id="SERVICE">%1$s</xliff:g> ບໍ?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"ກົດປຸ່ມລະດັບສຽງທັງສອງຄ້າງໄວ້ສອງສາມວິນາທີເພື່ອເປີດໃຊ້ <xliff:g id="SERVICE">%1$s</xliff:g>, ຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງ. ນີ້ອາດປ່ຽນວິທີການເຮັດວຽກຂອງອຸປະກອນທ່ານ.\n\nທ່ານສາມາດປ່ຽນທາງລັດນີ້ເປັນຄຸນສົມບັດອື່ນໄດ້ໃນການຕັ້ງຄ່າ > ການຊ່ວຍເຂົ້າເຖິງ."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ເປີດໃຊ້"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ບໍ່ເປີດ"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ອະນຸຍາດໃຫ້ <xliff:g id="SERVICE">%1$s</xliff:g> ຄວບຄຸມອຸປະກອນທ່ານໄດ້ເຕັມຮູບແບບບໍ?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ຫາກທ່ານເປີດໃຊ້ <xliff:g id="SERVICE">%1$s</xliff:g>, ອຸປະກອນຂອງທ່ານຈະບໍ່ໃຊ້ການລັອກໜ້າຈໍຂອງທ່ານເພື່ອເພີ່ມການເຂົ້າລະຫັດຂໍ້ມູນ."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"ການຄວບຄຸມແບບເຕັມຮູບແບບແມ່ນເໝາະສົມສຳລັບແອັບທີ່ຊ່ວຍທ່ານໃນດ້ານການຊ່ວຍເຂົ້າເຖິງ, ແຕ່ບໍ່ເໝາະສຳລັບທຸກແອັບ."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ອະນຸຍາດ"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ປະຕິເສດ"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ແຕະໃສ່ຄຸນສົມບັດໃດໜຶ່ງເພື່ອເລີ່ມການນຳໃຊ້ມັນ:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ເລືອກຄຸນສົມບັດເພື່ອໃຊ້ກັບປຸ່ມການຊ່ວຍເຂົ້າເຖິງ"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"ເລືອກຄຸນສົມບັດເພື່ອໃຊ້ກັບທາງລັດປຸ່ມລະດັບສຽງ"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"ປິດ <xliff:g id="SERVICE_NAME">%s</xliff:g> ໄວ້ແລ້ວ"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ແກ້ໄຂທາງລັດ"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ແລ້ວໆ"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ໃຊ້ປຸ່ມລັດ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ການປີ້ນສີ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ການແກ້ໄຂຄ່າສີ"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້. ເປີດໃຊ້ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ແລ້ວ."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້. ປິດ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ໄວ້ແລ້ວ."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"ກົດປຸ່ມສຽງທັງສອງພ້ອມກັນຄ້າງໄວ້ສາມວິນາທີເພື່ອໃຊ້ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"ເລືອກຄຸນສົມບັດທີ່ຈະໃຊ້ເມື່ອທ່ານແຕະປຸ່ມການຊ່ວຍເຂົ້າເຖິງ:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"ເລືອກຄຸນສົມບັດເພື່ອໃຊ້ກັບທ່າທາງການຊ່ວຍເຂົ້າເຖິງ (ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍດ້ວຍສອງນິ້ວ):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"ເລືອກຄຸນສົມບັດເພື່ອໃຊ້ກັບທ່າທາງການຊ່ວຍເຂົ້າເຖິງ (ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍດ້ວຍສາມນິ້ວ):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"ເພື່ອສະຫຼັບລະຫວ່າງຄຸນສົມບັດຕ່າງໆ, ໃຫ້ແຕະໃສ່ປຸ່ມການຊ່ວຍເຂົ້າເຖິງຄ້າງໄວ້."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"ເພື່ອສະຫຼັບລະຫວ່າງບໍລິຄຸນສົມບັດຕ່າງໆ, ໃຫ້ປັດຂຶ້ນດ້ວຍສອງນິ້ວຄ້າງໄວ້."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"ເພື່ອສະຫຼັບລະຫວ່າງຄຸນສົມບັດຕ່າງໆ, ໃຫ້ປັດຂຶ້ນດ້ວຍສາມນິ້ວຄ້າງໄວ້."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ການຂະຫຍາຍ"</string> <string name="user_switched" msgid="7249833311585228097">"ຜູ່ໃຊ້ປັດຈຸບັນ <xliff:g id="NAME">%1$s</xliff:g> ."</string> <string name="user_switching_message" msgid="1912993630661332336">"ກຳລັງສະລັບໄປຫາ <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> ໄຟລ໌</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> ໄຟລ໌</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"ບໍ່ມີຄົນທີ່ແນະນຳໃຫ້ແບ່ງປັນນຳ"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"ລາຍຊື່ແອັບ"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"ແອັບນີ້ບໍ່ໄດ້ຮັບສິດອະນຸຍາດໃນການບັນທຶກ ແຕ່ສາມາດບັນທຶກສຽງໄດ້ຜ່ານອຸປະກອນ USB ນີ້."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"ເຮືອນ"</string> @@ -2073,249 +2048,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"ວຽກ"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ມຸມມອງສ່ວນຕົວ"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"ມຸມມອງວຽກ"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"ບໍ່ສາມາດແບ່ງປັນກັບແອັບວຽກໄດ້"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ທ່ານແບ່ງປັນເນື້ອຫານີ້ດ້ວຍແອັບໃນໂປຣໄຟລ໌ວຽກຂອງທ່ານ"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"ບໍ່ສາມາດເປີດດ້ວຍແອັບວຽກໄດ້"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ທ່ານເປີດເນື້ອຫານີ້ດ້ວຍແອັບໃນໂປຣໄຟລ໌ວຽກຂອງທ່ານ"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"ບໍ່ສາມາດແບ່ງປັນກັບແອັບສ່ວນຕົວໄດ້"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ທ່ານແບ່ງປັນເນື້ອຫານີ້ກັບແອັບໃນໂປຣໄຟລ໌ສ່ວນຕົວຂອງທ່ານ"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"ບໍ່ສາມາດເປີດດ້ວຍແອັບສ່ວນຕົວໄດ້"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ທ່ານເປີດເນື້ອຫານີ້ກັບແອັບໃນໂປຣໄຟລ໌ສ່ວນຕົວຂອງທ່ານ"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"ຢຸດໂປຣໄຟລ໌ວຽກໄວ້ຊົ່ວຄາວແລ້ວ"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"ເປີດໃຊ້"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ບັນທຶກ ຫຼື ຫຼິ້ນສຽງໃນການໂທລະສັບ"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ອະນຸຍາດແອັບນີ້, ເມື່ອມອບໝາຍເປັນແອັບພລິເຄຊັນໂທລະສັບເລີ່ມຕົ້ນເພື່ອບັນທຶກ ຫຼື ຫຼິ້ນສຽງໃນການໂທລະສັບ."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"ບໍ່ມີແອັບວຽກທີ່ຮອງຮັບເນື້ອຫານີ້"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"ບໍ່ມີແອັບວຽກທີ່ສາມາດເປີດເນື້ອຫານີ້ໄດ້"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"ບໍ່ມີແອັບສ່ວນຕົວທີ່ຮອງຮັບເນື້ອຫານີ້"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"ບໍ່ມີແອັບສ່ວນຕົວທີ່ສາມາດເປີດເນື້ອຫານີ້ໄດ້"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN ປົດລັອກເຄືອຂ່າຍຊິມ"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN ການປົດລັອກຊຸດຍ່ອຍເຄືອຂ່າຍຊິມ"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN ປົດລັອກ SIM ອົງການ"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN ປົດລັອກຜູ້ໃຫ້ບໍລິການຊິມ"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN ປົດລັອກຊິມ"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"ໃສ່ PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"ໃສ່ PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"ໃສ່ PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"ໃສ່ PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"ໃສ່ PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN ປົດລັອກ RUIM network1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN ປົດລັອດ RUIM network2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN ປົດລັອກ RUIM hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN ປົດລັອກອົງການ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN ປົດລັອກຜູ້ໃຫ້ບໍລິການ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN ປົດລັອກ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"ໃສ່ PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"ໃສ່ PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"ໃສ່ PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"ໃສ່ PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"ໃສ່ PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"ໃສ່ PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN ປົດລັອກ SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN ປົດລັອກ PLMN ເຮືອນທຽບເທົ່າ SP"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN ປົດລັອກ ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN ປົດລັອກ IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN ປົດລັອກຜູ້ໃຫ້ບໍລິການຊຸດຍ່ອຍເຄືອຂ່າຍ"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"ກຳລັງຮ້ອງຂໍການປົດລັອກເຄືອຂ່າຍຊິມ…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"ກຳລັງຮ້ອງຂໍການປົດລັອກຊຸດຍ່ອຍເຄືອຂ່າຍຊິມ…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"ກຳລັງຮ້ອງຂໍການປົດລັອກຜູ້ໃຫ້ບໍລິການຊິມ…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"ກຳລັງຮ້ອງຊໍການປົດລັອກ SIM ອົງການ…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"ກຳລັງຮ້ອງຂໍການປົດລັອກຊິມ…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"ກຳລັງຮ້ອງຂໍການປົດລັອກ RUIM network1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"ກຳລັງຮ້ອງຂໍການປົດລັອກ RUIM network2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"ກຳລັງຮ້ອງຂໍການປົດລັອກ RUIM hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"ກຳລັງຮ້ອງຂໍການປົດລັອກຜູ້ໃຫ້ບໍລິການ RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"ກຳລັງຮ້ອງຂໍການປົດລັອກ RUIM ອົງການ…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"ກຳລັງຮ້ອງຂໍການປົດລັອກ SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PLMN ເຮືອນທຽບເທົ່າ SP…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ກຳລັງຮ້ອງຂໍການປົດລັອກ ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"ກຳລັງຮ້ອງຂໍການປົດລັອກ IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"ກຳລັງຮ້ອງຂໍການປົດລັອກຜູ້ໃຫ້ບໍລິການຊຸດຍ່ອຍເຄືອຂ່າຍ…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"ກຳລັງຮ້ອງຂໍການປົດລັອກ RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"ກຳລັງຮ້ອງຂໍການປົດລັອກ PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"ຮ້ອງຂໍການປົດລັອກເຄືອຂ່າຍຊິມສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"ຮ້ອງຂໍການປົດລັອກຊຸດຍ່ອຍເຄືອຂ່າຍຊິມບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"ຮ້ອງຂໍການປົດລັອກຜູ້ໃຫ້ບໍລິການຊິມບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"ຮ້ອງຂໍການປົດລັອກ SIM ອົງການບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"ຮ້ອງຂໍການປົດລັອກຊິມບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"ຮ້ອງຂໍການປົດລັອກ RUIM Network1 ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"ຮ້ອງຂໍການປົດລັອກ RUIM Network2 ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"ຮ້ອງຂໍປົດລັອກ RUIM Hrpd ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"ຮ້ອງຂໍປົດລັອກ RUIM ອົງການບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"ຮ້ອງຂໍການປົດລັອກຜູ້ໃຫ້ບໍລິການ RUIM ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"ຮ້ອງຂໍການປົດລັອກ RUIM ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"ປົດລັອກ PUK ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"ປົດລັອກ PUK ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"ປົດລັອກ PUK ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"ປົດລັອກ PUK ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"ປົດລັອກ PUK ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"ປົດລັອກ PUK ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"ປົດລັອກ PUK ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"ປົດລັອກ PUK ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"ປົດລັອກ PUK ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"ປົດລັອກ PUK ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"ປົດລັອກ PUK ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"ຮ້ອງຂໍການປົດລັອກ SPN ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"ຮ້ອງຂໍການປົດລັອກ PLMN ເຮືອນທຽບເທົ່າ SP ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ຮ້ອງຂໍການປົດລັອກ ICCID ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"ຮ້ອງຂໍການປົດລັອກ IMPI ບໍ່ສຳເລັດ."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"ຮ້ອງຂໍການປົດລັອກຜູ້ໃຫ້ບໍລິການຊຸດຍ່ອຍເຄືອຂ່າຍສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"ປົດລັອກເຄືອຂ່າຍຊິມສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"ປົດລັອກຊຸດຍ່ອຍເຄືອຂ່າຍຊິມສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"ປົດລັອກຜູ້ໃຫ້ບໍລິການຊິມສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"ປົດລັອກ SIM ອົງການສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"ປົດລັອກຊິມສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"ປົດລັອກ RUIM Network1 ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"ປົດລັອກ RUIM Network2 ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"ປົດລັອກ RUIM Hrpd ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"ປົດລັອກຜູ້ໃຫ້ບໍລິການ RUIM ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"ປົດລັອກ RUIM ອົງການສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"ປົດລັອກ RUIM ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"ປົດລັອກ PUK ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"ປົດລັອກ PUK ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"ປົດລັອກ PUK ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"ປົດລັອກ PUK ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"ປົດລັອກ PUK ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"ປົດລັອກ PUK ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"ປົດລັອກ PUK ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"ປົດລັອກ PUK ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"ປົດລັອກ PUK ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"ປົດລັອກ PUK ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"ປົດລັອກ PUK ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"ປົດລັອກ SPN ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"ປົດລັອກ PLMN ເຮືອນທຽບເທົ່າ SP ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ປົດລັອກ ICCID ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"ປົດລັອກ IMPI ສຳເລັດແລ້ວ."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"ປົດລັອກຜູ້ໃຫ້ບໍລິການຊຸດຍ່ອຍເຄືອຂ່າຍສຳເລັດແລ້ວ."</string> </resources> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index 728179314e3a..3956dbd8c257 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -195,8 +195,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administratorius atmetė prašymą įrenginį naudoti asmeniniais tikslais"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Įrenginys yra tvarkomas"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Šį įrenginį tvarko organizacija ir gali stebėti tinklo srautą. Palieskite, kad gautumėte daugiau informacijos."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Vietovės nustatymus pakeitė administratorius"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Palieskite, kad peržiūrėtumėte vietovės nustatymus."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Programos gali pasiekti jūsų vietovę"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Jei norite sužinoti daugiau, susisiekite su IT administratoriumi"</string> <string name="country_detector" msgid="7023275114706088854">"Šalies detektorius"</string> <string name="location_service" msgid="2439187616018455546">"Vietovės paslauga"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Jutiklių pranešimų paslauga"</string> @@ -204,14 +204,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Įrenginys bus ištrintas"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Administratoriaus programos negalima naudoti. Dabar įrenginio duomenys bus ištrinti.\n\nJei turite klausimų, susisiekite su organizacijos administratoriumi."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Neleidžiama spausdinti (<xliff:g id="OWNER_APP">%s</xliff:g>)."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Asm. progr. blok. panaikinim."</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Progr. bus užblokuotos rytoj"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT administratorius neleidžia sustabdyti darbo profilio ilgiau nei <xliff:g id="DAYS">%1$d</xliff:g> d."</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Įjungti darbo profilį"</string> <string name="me" msgid="6207584824693813140">"Aš"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Planšetinio kompiuterio parinktys"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"„Android TV“ parinktys"</string> @@ -245,10 +241,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Telefono parinktys"</string> <string name="global_action_lock" msgid="6949357274257655383">"Ekrano užraktas"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Išjungiamas maitinimas"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Maitinimas"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Paleisti iš naujo"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Skambutis pagalbos numeriu"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Pranešimas apie riktą"</string> <string name="global_action_logout" msgid="6093581310002476511">"Baigti seansą"</string> @@ -434,11 +428,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"pasiekti papildomas vietos teikimo įrankio komandas"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Programai leidžiama pasiekti papildomas vietovės nustatymo paslaugų teikėjų komandas. Dėl to programa gali trukdyti veikti GPS ar kitiems vietovės nustatymo šaltiniams."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"pasiekti tikslią vietovę, tik kai programa veikia priekiniame plane"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ši programa gali gauti tikslius jūsų vietovės duomenis, tik kai veikia priekiniame plane. Vietovės paslaugos turi būti įjungtos ir pasiekiamos įrenginyje, kad programa galėtų jas naudoti. Dėl to akumuliatoriui gali reikėti daugiau energijos."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ši programa gali gauti tikslius jūsų vietovės duomenis iš Vietovės paslaugų, kai programa naudojama. Kad programa galėtų gauti vietovės duomenis, Vietovės paslaugos turi būti įjungtos įrenginyje. Dėl to gali padidėti akumuliatoriaus energijos vartojimas."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"pasiekti apytikslę vietovę, tik kai programa veikia priekiniame plane"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ši programa gali gauti apytikslius jūsų vietovės duomenis, tik kai veikia priekiniame plane. Vietovės paslaugos turi būti įjungtos ir pasiekiamos įrenginyje, kad programa galėtų jas naudoti."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ši programa gali gauti apytikslius jūsų vietovės duomenis iš Vietovės paslaugų, kai programa naudojama. Kad programa galėtų gauti vietovės duomenis, Vietovės paslaugos turi būti įjungtos įrenginyje."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"prieiga prie vietovės fone"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ši programa gali pasiekti vietovę, kai veikia fone ar priekiniame plane."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ši programa gali bet kada pasiekti vietovę, net kai programa nenaudojama."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"keisti garso nustatymus"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Leidžiama programai keisti visuotinius garso nustatymus, pvz., garsumą ir tai, kuris garsiakalbis naudojamas išvesčiai."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"įrašyti garsą"</string> @@ -450,11 +444,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"fotografuoti ir filmuoti"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Ši programa gali bet kada fotografuoti ir įrašyti vaizdo įrašų naudodama fotoaparatą."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Suteikti programai arba paslaugai prieigą prie sistemos fotoaparatų, kad būtų galima daryti nuotraukas ir įrašyti vaizdo įrašus"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ši privilegijuota arba sistemos programa gali daryti nuotraukas ir įrašyti vaizdo įrašus naudodama sistemos fotoaparatą bet kuriuo metu. Programai taip pat būtinas leidimas „android.permission.CAMERA“"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Leisti programai ar paslaugai sulaukti atgalinio skambinimo, kai atidaromas ar uždaromas fotoaparatas."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ši programa gali sulaukti atgalinio skambinimo, kai atidaromas ar uždaromas (kurios nors programos) koks nors fotoaparatas."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"valdyti vibraciją"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Leidžiama programai valdyti vibravimą."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Programai leidžiama pasiekti vibratoriaus būseną."</string> @@ -1390,13 +1382,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Peržiūrimas dabartinis turinys"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nauja laikmena (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Palieskite, kad nustatytumėte"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Norint perkelti nuotraukas ir mediją"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Kilo problema dėl laikmenos (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Palieskite ir ištaisykite tai"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> sugadinta. Pasirinkite, kad pataisytumėte."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Nepalaikoma saugykla (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Šis įrenginys nepalaiko šios <xliff:g id="NAME">%s</xliff:g>. Palieskite, kad nustatytumėte palaikomu formatu."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Šis įrenginys nepalaiko šios <xliff:g id="NAME">%s</xliff:g>. Pasirinkite ir nustatykite palaikomu formatu."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> netikėtai pašalinta"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Prieš šalindami išimkite laikmeną, kad neprarastumėte turinio"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Laikmena (<xliff:g id="NAME">%s</xliff:g>) atjungta"</string> @@ -1668,24 +1664,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Padidinti garsą daugiau nei rekomenduojamas lygis?\n\nIlgai klausydami dideliu garsu galite pažeisti klausą."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Naudoti spartųjį pritaikymo neįgaliesiems klavišą?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kai spartusis klavišas įjungtas, paspaudus abu garsumo mygtukus ir palaikius 3 sekundes bus įjungta pritaikymo neįgaliesiems funkcija."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Įjungti pritaikymo neįgaliesiems funkcijas?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Paspaudus abu garsumo klavišus ir palaikius kelias sekundes įjungiamos pritaikymo neįgaliesiems funkcijos. Tai gali pakeisti įrenginio veikimą.\n\nDabartinės funkcijos:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nPasirinktas funkcijas galite pakeisti skiltyje „Nustatymai“ > „Pritaikomumas“."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Įjungti „TalkBack“?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Paspaudus abu garsumo klavišus ir palaikius kelias sekundes įjungiama funkcija „TalkBack“ – ekrano skaitytuvas, kuris naudingas akliems arba sutrikusio regėjimo asmenims. „TalkBack“ visiškai pakeičia įrenginio veikimą.\n\nGalite pakeisti šį spartųjį klavišą į kitą funkciją skiltyje „Nustatymai“ > „Pritaikomumas“."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Įjungti „<xliff:g id="SERVICE">%1$s</xliff:g>“?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Paspaudus abu garsumo klavišus ir palaikius kelias sekundes įjungiama pritaikymo neįgaliesiems funkcija „<xliff:g id="SERVICE">%1$s</xliff:g>“. Tai gali pakeisti įrenginio veikimą.\n\nGalite pakeisti šį spartųjį klavišą į kitą funkciją skiltyje „Nustatymai“ > „Pritaikomumas“."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Įjungti"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Neįjungti"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Leisti „<xliff:g id="SERVICE">%1$s</xliff:g>“ valdyti visas įrenginio funkcijas?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jei įjungsite „<xliff:g id="SERVICE">%1$s</xliff:g>“, įrenginyje nebus naudojamas ekrano užraktas siekiant patobulinti duomenų šifruotę."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Galimybę valdyti visas funkcijas patariama suteikti programoms, kurios padeda specialiųjų poreikių turintiems asmenims, bet ne daugumai programų."</string> @@ -1696,10 +1683,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Leisti"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Atmesti"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Norėdami naudoti funkciją, palieskite ją:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Funkcijų, kurioms bus naudojamas pritaikomumo mygtukas, pasirinkimas"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Funkcijų, kurioms bus naudojamas garsumo spartusis klavišas, pasirinkimas"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Paslauga „<xliff:g id="SERVICE_NAME">%s</xliff:g>“ išjungta"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Redaguoti sparčiuosius klavišus"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Atlikta"</string> @@ -1707,23 +1692,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Naudoti spartųjį klavišą"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Spalvų inversija"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Spalvų taisymas"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Laikomi garsumo klavišai. „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“ įjungta."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Laikomi garsumo klavišai. „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“ išjungta."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Jei norite naudoti „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“, paspauskite abu garsumo klavišus ir palaikykite tris sekundes"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Pasirinkite funkciją, kuri bus naudojama, kai paliesite pritaikomumo mygtuką:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Pasirinkite funkciją, kuri bus naudojama su pritaikomumo gestu (perbraukimas aukštyn dviem pirštais iš ekrano apačios):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Pasirinkite funkciją, kuri bus naudojama su pritaikomumo gestu (perbraukimas aukštyn trimis pirštais iš ekrano apačios):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Norėdami perjungti funkcijas, palieskite ir palaikykite pritaikomumo mygtuką."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Norėdami perjungti funkcijas, perbraukite aukštyn dviem pirštais ir palaikykite."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Norėdami perjungti funkcijas, perbraukite aukštyn trimis pirštais ir palaikykite."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Didinimas"</string> <string name="user_switched" msgid="7249833311585228097">"Dabartinis naudotojas: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Perjungiama į <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2118,8 +2095,7 @@ <item quantity="many">„<xliff:g id="FILE_NAME_2">%s</xliff:g>“ ir <xliff:g id="COUNT_3">%d</xliff:g> failo</item> <item quantity="other">„<xliff:g id="FILE_NAME_2">%s</xliff:g>“ ir <xliff:g id="COUNT_3">%d</xliff:g> failų</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Nėra rekomenduojamų žmonių, su kuriais būtų galima bendrinti"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Programų sąrašas"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Šiai programai nebuvo suteiktas leidimas įrašyti, bet ji gali užfiksuoti garsą per šį USB įrenginį."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Pagrindinis"</string> @@ -2155,222 +2131,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Jokiose darbo programose negalima atidaryti šio turinio"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Jokios asmeninės programos nepalaiko šio turinio"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Jokiose asmeninėse programose negalima atidaryti šio turinio"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Telefonų skambučių garso įrašo įrašymas arba leidimas"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Leidžiama šiai programai, esant prisijungus kaip numatytajai numerio rinkiklio programai, įrašyti ar leisti telefonų skambučių garso įrašą."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM tinklo operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM tinklo poaibio operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM bendrojo operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM paslaugos teikėjo operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Įvesti PUK kodą"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Įvesti PUK kodą"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Įvesti PUK kodą"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Įvesti PUK kodą"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Įvesti PUK kodą"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM „network1“ operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM „network2“ operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM HRPD operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM bendrojo operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM paslaugos teikėjo operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Įvesti PUK kodą"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Įvesti PUK kodą"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Įvesti PUK kodą"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Įvesti PUK kodą"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Įvesti PUK kodą"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Įvesti PUK kodą"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP „Equivalent Home“ PLMN operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Tinklo poaibio paslaugos teikėjo operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Teikiama SIM tinklo operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Teikiama SIM tinklo poaibio operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Teikiama SIM paslaugos teikėjo operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Teikiama SIM bendrojo operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Teikiama operatoriaus pasirinkimo ribojimo panaikinimo naudojant PUK kodą užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Teikiama operatoriaus pasirinkimo ribojimo panaikinimo naudojant PUK kodą užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Teikiama operatoriaus pasirinkimo ribojimo panaikinimo naudojant PUK kodą užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Teikiama operatoriaus pasirinkimo ribojimo panaikinimo naudojant PUK kodą užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Teikiama operatoriaus pasirinkimo ribojimo panaikinimo naudojant PUK kodą užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Teikiama SIM operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Teikiama RUIM „network1“ operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Teikiama RUIM „network2“ operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Teikiama RUIM HRPD operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Teikiama RUIM paslaugos teikėjo operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Teikiama RUIM bendrojo operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Teikiama SPN operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Teikiama SP „Equivalent Home“ PLMN operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Teikiama ICCID operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Teikiama IMPI operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Teikiama tinklo poaibio paslaugos teikėjo operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Teikiama RUIM operatoriaus pasirinkimo ribojimo panaikinimo užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Teikiama operatoriaus pasirinkimo ribojimo panaikinimo naudojant PUK kodą užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Teikiama operatoriaus pasirinkimo ribojimo panaikinimo naudojant PUK kodą užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Teikiama operatoriaus pasirinkimo ribojimo panaikinimo naudojant PUK kodą užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Teikiama operatoriaus pasirinkimo ribojimo panaikinimo naudojant PUK kodą užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Teikiama operatoriaus pasirinkimo ribojimo panaikinimo naudojant PUK kodą užklausa…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Teikiama operatoriaus pasirinkimo ribojimo panaikinimo naudojant PUK kodą užklausa…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM tinklo operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM tinklo poaibio operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM paslaugos teikėjo operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM bendrojo operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM „network1“ operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM „network2“ operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM HRPD operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM bendrojo operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM paslaugos teikėjo operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Nepavyko panaikinti operatoriaus pasirinkimo ribojimo naudojant PUK kodą."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Nepavyko panaikinti operatoriaus pasirinkimo ribojimo naudojant PUK kodą."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Nepavyko panaikinti operatoriaus pasirinkimo ribojimo naudojant PUK kodą."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Nepavyko panaikinti operatoriaus pasirinkimo ribojimo naudojant PUK kodą."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Nepavyko panaikinti operatoriaus pasirinkimo ribojimo naudojant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Nepavyko panaikinti operatoriaus pasirinkimo ribojimo naudojant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Nepavyko panaikinti operatoriaus pasirinkimo ribojimo naudojant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Nepavyko panaikinti operatoriaus pasirinkimo ribojimo naudojant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Nepavyko panaikinti operatoriaus pasirinkimo ribojimo naudojant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Nepavyko panaikinti operatoriaus pasirinkimo ribojimo naudojant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Nepavyko panaikinti operatoriaus pasirinkimo ribojimo naudojant PUK kodą."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP „Equivalent Home“ PLMN operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Tinklo poaibio paslaugos teikėjo operatoriaus pasirinkimo ribojimo panaikinimo užklausa atmesta."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM tinklo operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM tinklo poaibio operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM paslaugos teikėjo operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM bendrasis operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM „network1“ operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM „network2“ operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM HRPD operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Nepavyko panaikinti RUIM paslaugos teikėjo operatoriaus pasirinkimo ribojimo."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM bendrasis operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Operatoriaus pasirinkimo ribojimas sėkmingai panaikintas taikant PUK kodą."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Operatoriaus pasirinkimo ribojimas sėkmingai panaikintas taikant PUK kodą."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Operatoriaus pasirinkimo ribojimas sėkmingai panaikintas taikant PUK kodą."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Operatoriaus pasirinkimo ribojimas sėkmingai panaikintas taikant PUK kodą."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Operatoriaus pasirinkimo ribojimas sėkmingai panaikintas taikant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Operatoriaus pasirinkimo ribojimas sėkmingai panaikintas taikant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Operatoriaus pasirinkimo ribojimas sėkmingai panaikintas taikant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Operatoriaus pasirinkimo ribojimas sėkmingai panaikintas taikant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Operatoriaus pasirinkimo ribojimas sėkmingai panaikintas taikant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Operatoriaus pasirinkimo ribojimas sėkmingai panaikintas taikant PUK kodą."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Operatoriaus pasirinkimo ribojimas sėkmingai panaikintas taikant PUK kodą."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP „Equivalent Home“ PLMN operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Tinklo poaibio paslaugos teikėjo operatoriaus pasirinkimo ribojimas sėkmingai panaikintas."</string> </resources> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 538749eeb559..778a08b589be 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -193,8 +193,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrators atteicās no tādas ierīces pārvaldības, ko var izmantot personiskām vajadzībām"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Ierīce tiek pārvaldīta"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Jūsu organizācija pārvalda šo ierīci un var uzraudzīt tīkla datplūsmu. Pieskarieties, lai saņemtu detalizētu informāciju."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Atrašanās vietas iestatījumus nomainīja administrators"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Pieskarieties, lai skatītu atrašanās vietas iestatījumus."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Lietotne var piekļūt jūsu atrašanās vietas datiem"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Lai uzzinātu vairāk, sazinieties ar savu IT administratoru"</string> <string name="country_detector" msgid="7023275114706088854">"Valsts noteikšanas rīks"</string> <string name="location_service" msgid="2439187616018455546">"Atrašanās vietas pakalpojums"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensoru paziņojumu pakalpojums"</string> @@ -202,14 +202,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Jūsu ierīces dati tiks dzēsti"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Administratora lietotni nevar izmantot. Ierīcē saglabātie dati tiks dzēsti.\n\nJa jums ir kādi jautājumi, sazinieties ar savas organizācijas administratoru."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Drukāšanu atspējoja <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Atbloķējiet person. lietotnes"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Lietotnes tiks bloķētas rīt"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Jūsu IT administrators neatļauj apturēt jūsu darba profila darbību ilgāk nekā <xliff:g id="DAYS">%1$d</xliff:g> dienas"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Ieslēgt darba profilu"</string> <string name="me" msgid="6207584824693813140">"Man"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Planšetdatora opcijas"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV opcijas"</string> @@ -242,11 +238,9 @@ <string name="global_actions" product="tv" msgid="3871763739487450369">"Android TV opcijas"</string> <string name="global_actions" product="default" msgid="6410072189971495460">"Tālruņa opcijas"</string> <string name="global_action_lock" msgid="6949357274257655383">"Ekrāna bloķētājs"</string> - <string name="global_action_power_off" msgid="4404936470711393203">"Strāvas padeve ir izslēgta."</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_off" msgid="4404936470711393203">"Strāvas padeve izslēgta."</string> + <string name="global_action_power_options" msgid="1185286119330160073">"Barošana"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Restartēt"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Ārkārtas situācija"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Kļūdu ziņojums"</string> <string name="global_action_logout" msgid="6093581310002476511">"Beigt sesiju"</string> @@ -431,11 +425,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"piekļūt atrašanās vietas nodrošinātāja papildu komandām"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ļauj lietotnei piekļūt papildu atrašanās vietas noteikšanas nodrošinātāju komandām. Tas var ļaut lietotnei traucēt GPS vai citu atrašanās vietas noteikšanas avotu darbību."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"piekļuve precīzai atrašanās vietai, tikai darbojoties priekšplānā"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Šī lietotne var iegūt precīzu jūsu atrašanās vietu, tikai darbojoties priekšplānā. Jūsu ierīcē ir jābūt ieslēgtiem un pieejamiem atrašanās vietu pakalpojumiem, lai lietotne varētu tos izmantot. Tādējādi var palielināties akumulatora jaudas patēriņš."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Šī lietotne var iegūt precīzus jūsu atrašanās vietas datus no atrašanās vietu pakalpojumiem, kamēr lietotne tiek izmantota. Lai lietotne varētu iegūt atrašanās vietas datus, jūsu ierīcē ir jābūt ieslēgtiem atrašanās vietu pakalpojumiem. Tas var palielināt akumulatora lietojuma patēriņu."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"piekļuve aptuvenai atrašanās vietai, tikai darbojoties priekšplānā"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Šī lietotne var iegūt aptuvenu jūsu atrašanās vietu, tikai darbojoties priekšplānā. Jūsu ierīcē ir jābūt ieslēgtiem un pieejamiem atrašanās vietu pakalpojumiem, lai lietotne varētu tos izmantot."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Šī lietotne var iegūt aptuvenus jūsu atrašanās vietas datus no atrašanās vietu pakalpojumiem, kamēr lietotne tiek izmantota. Lai lietotne varētu iegūt atrašanās vietas datus, jūsu ierīcē ir jābūt ieslēgtiem atrašanās vietu pakalpojumiem."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"piekļūt atrašanās vietai fonā"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Šī lietotne var piekļūt atrašanās vietas datiem, darbojoties ne tikai priekšplānā, bet arī fonā."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Šī lietotne var jebkurā brīdī piekļūt atrašanās vietas datiem, pat ja lietotne netiek izmantota."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"mainīt audio iestatījumus"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Ļauj lietotnei mainīt globālos audio iestatījumus, piemēram, skaļumu un izejai izmantoto skaļruni."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ierakstīt audio"</string> @@ -447,11 +441,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"uzņemt attēlus un videoklipus"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Šī lietotne jebkurā brīdī var uzņemt attēlus un ierakstīt videoklipus, izmantojot kameru."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Atļauja lietojumprogrammai vai pakalpojumam piekļūt sistēmas kamerām, lai uzņemtu attēlus un videoklipus"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Šī privileģētā vai sistēmas lietotne var jebkurā brīdī uzņemt attēlus un ierakstīt videoklipus, izmantojot sistēmas kameru. Lietotnei nepieciešama arī atļauja android.permission.CAMERA."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Atļaut lietojumprogrammai vai pakalpojumam saņemt atzvanus par kameras ierīču atvēršanu vai aizvēršanu"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Šajā lietotnē var saņemt atzvanus, ja tiek atvērta vai aizvērta jebkāda kameras ierīce (atkarībā no lietojumprogrammas)."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kontrolēt vibrosignālu"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Ļauj lietotnei kontrolēt vibrosignālu."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Ļauj lietotnei piekļūt vibrosignāla statusam."</string> @@ -1370,13 +1362,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Notiek pašreizējā satura pārskatīšana."</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Jauna ierīce: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Pieskarieties, lai iestatītu."</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Fotoattēlu un satura pārsūtīšanai."</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problēma saistībā ar <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Pieskarieties, lai novērstu problēmu."</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> ir bojāta. Atlasiet, lai labotu."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Neatbalstīts datu nesējs (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Šī ierīce neatbalsta datu nesēju <xliff:g id="NAME">%s</xliff:g>. Pieskarieties, lai iestatītu to atbalstītā formātā."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Šajā ierīcē netiek atbalstīta šī <xliff:g id="NAME">%s</xliff:g>. Atlasiet, lai iestatītu atbalstītu formātu."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> tika negaidīti izņemta"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Lai nezaudētu saturu, pirms izņemšanas izstumiet datu nesēju."</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Ierīce <xliff:g id="NAME">%s</xliff:g> izņemta"</string> @@ -1646,24 +1642,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vai palielināt skaļumu virs ieteicamā līmeņa?\n\nIlgstoši klausoties skaņu lielā skaļumā, var tikt bojāta dzirde."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vai izmantot pieejamības saīsni?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kad īsinājumtaustiņš ir ieslēgts, nospiežot abas skaļuma pogas un 3 sekundes turot tās, tiks aktivizēta pieejamības funkcija."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Vai ieslēgt pieejamības funkcijas?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Turot nospiestus abus skaļuma taustiņus dažas sekundes, tiek ieslēgtas pieejamības funkcijas. Tas var mainīt ierīces darbību.\n\nPašreizējās funkcijas:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nAtlasītās funkcijas varat mainīt šeit: Iestatījumi > Pieejamība."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Vai ieslēgt TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Turot nospiestus abus skaļuma taustiņus dažas sekundes, tiek ieslēgts ekrāna lasītājs TalkBack, kas ir noderīgs neredzīgiem un vājredzīgiem cilvēkiem. TalkBack pilnībā maina ierīces darbību.\n\nŠo saīsni uz citu funkciju varat mainīt šeit: Iestatījumi > Pieejamība."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Vai ieslēgt pakalpojumu <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Turot nospiestus abus skaļuma taustiņus dažas sekundes, tiek ieslēgta pieejamības funkcija <xliff:g id="SERVICE">%1$s</xliff:g>. Tas var mainīt ierīces darbību.\n\nŠo saīsni uz citu funkciju varat mainīt šeit: Iestatījumi > Pieejamība."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Ieslēgt"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Neieslēgt"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vai atļaut pakalpojumam <xliff:g id="SERVICE">%1$s</xliff:g> pilnībā kontrolēt jūsu ierīci?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ja ieslēgsiet pakalpojumu <xliff:g id="SERVICE">%1$s</xliff:g>, ierīce neizmantos ekrāna bloķēšanu datu šifrēšanas uzlabošanai."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Pilnīga kontrole ir piemērota lietotnēm, kas nepieciešamas lietotājiem ar īpašām vajadzībām, taču ne lielākajai daļai lietotņu."</string> @@ -1674,10 +1661,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Atļaut"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Neatļaut"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Pieskarieties funkcijai, lai sāktu to izmantot"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Izvēlieties funkcijas, ko izmantot ar pieejamības pogu"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Izvēlieties funkcijas, ko izmantot ar skaļuma pogu īsinājumtaustiņu"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Pakalpojums <xliff:g id="SERVICE_NAME">%s</xliff:g> ir izslēgts."</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Rediģēt īsinājumtaustiņus"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gatavs"</string> @@ -1685,23 +1670,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Izmantot saīsni"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Krāsu inversija"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Krāsu korekcija"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Turējāt nospiestas skaļuma pogas. Pakalpojums <xliff:g id="SERVICE_NAME">%1$s</xliff:g> tika ieslēgts."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Turējāt nospiestas skaļuma pogas. Pakalpojums <xliff:g id="SERVICE_NAME">%1$s</xliff:g> tika izslēgts."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Lai izmantotu pakalpojumu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, nospiediet abus skaļuma taustiņus un turiet tos trīs sekundes."</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Izvēlieties funkciju, ko izmantot, kad pieskaraties pieejamības pogai."</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Izvēlieties funkciju, ko izmantot ar pieejamības žestu (vilkšana ar diviem pirkstiem augšup no ekrāna apakšdaļas)."</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Izvēlieties funkciju, ko izmantot ar pieejamības žestu (vilkšana ar trīs pirkstiem augšup no ekrāna apakšdaļas)."</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Lai pārslēgtu funkcijas, pieskarieties pieejamības pogai un turiet to."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Lai pārslēgtu funkcijas, velciet ar diviem pirkstiem augšup un turiet."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Lai pārslēgtu funkcijas, velciet ar trīs pirkstiem augšup un turiet."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Palielinājums"</string> <string name="user_switched" msgid="7249833311585228097">"Pašreizējais lietotājs: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Notiek pāriešana uz: <xliff:g id="NAME">%1$s</xliff:g>"</string> @@ -2084,8 +2061,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> un <xliff:g id="COUNT_3">%d</xliff:g> fails</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> un <xliff:g id="COUNT_3">%d</xliff:g> faili</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Nav ieteikta neviena persona, ar ko kopīgot"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lietotņu saraksts"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Šai lietotnei nav piešķirta ierakstīšanas atļauja, taču tā varētu tvert audio, izmantojot šo USB ierīci."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Sākums"</string> @@ -2121,222 +2097,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Šo saturu nevar atvērt darba lietotnēs."</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Personīgās lietotnes nevar atbalstīt šo saturu."</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Šo saturu nevar atvērt personīgajās lietotnēs."</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Ierakstīt vai atskaņot audio tālruņa sarunās"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Ļauj šai lietotnei ierakstīt vai atskaņot audio tālruņa sarunās, kad tā ir iestatīta kā noklusējuma tālruņa lietojumprogramma."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM tīkla atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM tīkla apakškopas atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM Corporate atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM pakalpojuma sniedzēja atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Ievadiet PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Ievadiet PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Ievadiet PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Ievadiet PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Ievadiet PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM 1. tīkla veida atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM 2. tīkla veida atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM hrpd atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM Corporate atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM pakalpojuma sniedzēja atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Ievadiet PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Ievadiet PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Ievadiet PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Ievadiet PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Ievadiet PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Ievadiet PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Tīkla apakškopas pakalpojuma sniedzēja atbloķēšanas PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Notiek SIM tīkla atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Notiek SIM tīkla apakškopas atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Notiek SIM pakalpojuma sniedzēja atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Notiek SIM Corporate atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Notiek PUK atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Notiek PUK atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Notiek PUK atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Notiek PUK atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Notiek PUK atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Notiek SIM atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Notiek RUIM 1. tīkla veida atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Notiek RUIM 2. tīkla veida atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Notiek RUIM hrpd atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Notiek RUIM pakalpojuma sniedzēja atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Notiek RUIM Corporate atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Notiek SPN atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Notiek SP Equivalent Home PLMN atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Notiek ICCID atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Notiek IMPI atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Notiek tīkla apakškopas pakalpojuma sniedzēja atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Notiek RUIM atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Notiek PUK atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Notiek PUK atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Notiek PUK atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Notiek PUK atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Notiek PUK atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Notiek PUK atbloķēšanas pieprasīšana…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM tīkla atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM tīkla apakškopas atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM pakalpojuma sniedzēja atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM Corporate atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM 1. tīkla veida atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM 2. tīkla veida atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM Corporate atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM pakalpojuma sniedzēja atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK atbloķēšana neizdevās."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK atbloķēšana neizdevās."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK atbloķēšana neizdevās."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK atbloķēšana neizdevās."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK atbloķēšana neizdevās."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK atbloķēšana neizdevās."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK atbloķēšana neizdevās."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK atbloķēšana neizdevās."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK atbloķēšana neizdevās."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK atbloķēšana neizdevās."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK atbloķēšana neizdevās."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Tīkla apakškopas pakalpojuma sniedzēja atbloķēšanas pieprasījums nebija veiksmīgs."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM tīkla atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM tīkla apakškopas atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM pakalpojuma sniedzēja atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM Corporate atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM 1. tīkla veida atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM 2. tīkla veida atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM pakalpojuma sniedzēja atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM Corporate atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI atbloķēšana bija veiksmīga."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Tīkla apakškopas pakalpojuma sniedzēja atbloķēšana bija veiksmīga."</string> </resources> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index e30c51ce8002..4c75e994cb44 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Уред откажан од администраторот за лична употреба"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Некој управува со уредот"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Вашата организација управува со уредов и можно е да го следи сообраќајот на мрежата. Допрете за детали."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Администраторот ги променил поставките за локација"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Допрете за да ги видите поставките за локација."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Апликациите може да пристапуваат до вашата локација"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Контактирајте со IT-администраторот за да дознаете повеќе"</string> <string name="country_detector" msgid="7023275114706088854">"Детектор на земја"</string> <string name="location_service" msgid="2439187616018455546">"Услуги според локација"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Услуга за известување од сензорот"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Уредот ќе се избрише"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Апликацијата на администраторот не може да се користи. Уредот ќе се избрише сега.\n\nАко имате прашања, контактирајте со администраторот на организацијата."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Печатењето е оневозможено од <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Деблокирајте лични апликации"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Блокирање на апликациите утре"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT-администраторот не дозволува паузирање на работниот профил за повеќе од <xliff:g id="DAYS">%1$d</xliff:g> дена"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Вклучи го работниот профил"</string> <string name="me" msgid="6207584824693813140">"Јас"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Опции на таблет"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Опции на Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Опции на телефон"</string> <string name="global_action_lock" msgid="6949357274257655383">"Заклучи екран"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Исклучи"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Напојување"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Рестартирај"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Итен случај"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Извештај за грешка"</string> <string name="global_action_logout" msgid="6093581310002476511">"Завршете ја сесијата"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"пристапи кон наредби на давателот на дополнителна локација"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Овозможува апликацијата да пристапи кон дополнителни наредби на давател на локација. Ова може да овозможи апликацијата да го попечи функционирањето на GPS или други извори на локација."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"пристап до прецизната локација само во преден план"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Апликацијава може да ја добие вашата точна локација само кога е во преден план. Услугите според локација мора да се вклучени и достапни на уредот за да може да ги користи апликацијата. Ова може да го зголеми трошењето на батеријата."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Апликацијава може да ја добие вашата прецизна локација од „Услугите според локација“ кога се користи. „Услугите според локација“ за уредот мора да се вклучени ако сакате апликацијата да ја добие локацијата. Ова може да го зголеми користењето на батеријата."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"пристап до приближната локација само во преден план"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Апликацијава може да ја добие вашата приближна локација само кога е во преден план. Услугите според локација мора да се вклучени и достапни на уредот за да може да ги користи апликацијата."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Апликацијава може да ја добие вашата приближна локација од „Услугите според локација“ кога се користи. „Услугите според локација“ за уредот мора да се вклучени ако сакате апликацијата да ја добие локацијата."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"пристап до локацијата во заднина"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Оваа апликација, покрај тоа што може да пристапува до локацијата кога е во преден план, има пристап и кога се извршува во заднина."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Апликацијава може да пристапува до локацијата во секое време, дури и кога не се користи."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"менува аудио поставки"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Овозможува апликацијата да ги менува глобалните аудио поставки, како што се јачината на звукот и кој звучник се користи за излез."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"снимај аудио"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"снимај слики и видеа"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Апликацијава може да фотографира и да снима видеа со камерата во секое време."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Дозволете апликацијата или услугата да пристапува до системските камери за да фотографира и да снима видеа"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Оваа привилегирана или системска апликација може да фотографира и да снима видеа со системската камера во секое време. Потребно е апликацијата да ја има и дозволата android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Дозволете апликацијатa или услугата да прима повратни повици за отворањето или затворањето на уредите со камера."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Оваа апликација може да прима повратни повици кога кој било уред со камера се отвора (од некоја апликација) или затвора."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"контролирај вибрации"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Дозволува апликацијата да ги контролира вибрациите."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Ѝ дозволува на апликацијата да пристапи до состојбата на вибрации."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Се прегледуваат тековните содржини"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Нова <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Допрете за поставување"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"За пренесување фотографии и медиуми"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Проблем со <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Допрете за да го поправите ова"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> е оштетена. Изберете за поправање."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Неподдржана <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Уредот не ја поддржува оваа <xliff:g id="NAME">%s</xliff:g>. Допрете за поставување во поддржан формат."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Уредов не ја поддржува оваа <xliff:g id="NAME">%s</xliff:g>. Изберете за поставување во поддржан формат."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Уредов не ја поддржува оваа <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> неочекувано е отстранета"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Исклучете ја надворешната меморија пред да ја отстраните за да избегнете губење содржини"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> е отстранета"</string> @@ -1626,24 +1621,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Да го зголемиме звукот над препорачаното ниво?\n\nСлушањето звуци со голема јачина подолги периоди може да ви го оштети сетилото за слух."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Да се користи кратенка за „Пристапност“?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Кога е вклучена кратенката, ако ги притиснете двете копчиња за јачина на звук во времетраење од 3 секунди, ќе се стартува функција за пристапност."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Да се вклучат функциите за пристапност?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Ако ги задржите притиснати двете копчиња за јачина на звук неколку секунди, ќе се вклучат функциите за пристапност. Ова може да го промени начинот на функционирање на уредот.\n\nТековни функции:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nМоже да ги промените избраните функции во „Поставки > Пристапност“."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Да се вклучи TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Ако ги задржите притиснати двете копчиња за јачина на звук неколку секунди, ќе се вклучи функцијата TalkBack, којашто е читач на екран корисен за слепи лица или лица со слаб вид. TalkBack целосно го менува начинот на функционирање на уредот.\n\nМоже да ја измените кратенкава да биде за друга функција во „Поставки > Пристапност“."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Да се вклучи <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ако ги задржите притиснати двете копчиња за јачина на звук неколку секунди, ќе се вклучи функцијата за пристапност <xliff:g id="SERVICE">%1$s</xliff:g>. Ова може да го промени начинот на функционирање на уредот.\n\nМоже да ја измените кратенкава да биде за друга функција во „Поставки > Пристапност“."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Вклучи"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Не вклучувај"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Дали дозволувате <xliff:g id="SERVICE">%1$s</xliff:g> да има целосна контрола врз вашиот уред?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако вклучите <xliff:g id="SERVICE">%1$s</xliff:g>, уредот нема да го користи заклучувањето на екранот за да го подобри шифрирањето на податоците."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Целосната контрола е соодветна за апликации што ви помагаат со потребите за пристапност, но не и за повеќето апликации."</string> @@ -1654,10 +1640,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дозволи"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Одбиј"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Допрете на функција за да почнете да ја користите:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Изберете ги функциите што ќе ги користите со копчето за пристапност"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Изберете ги функциите што ќе ги користите со кратенката за копчето за јачина на звук"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> е исклучена"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Изменете ги кратенките"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string> @@ -1665,23 +1649,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Користи кратенка"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инверзија на бои"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Корекција на бои"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ги задржавте копчињата за јачина на звук. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е вклучена."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ги задржавте копчињата за јачина на звук. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е исклучена."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Притиснете ги и задржете ги двете копчиња за јачина на звукот во траење од три секунди за да користите <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Изберете функција за користење кога ќе го допрете копчето за пристапност:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Изберете ја функцијата што ќе ја користите со движењето за пристапност (повлекување нагоре од дното на екранот со два прста):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Изберете ја функцијата што ќе ја користите со движењето за пристапност (повлекување нагоре од дното на екранот со три прста):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"За префрлање помеѓу функциите, допрете и задржете го копчето за пристапност."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"За префрлање помеѓу функциите, повлечете нагоре со два прста и задржете."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"За префрлање помеѓу функциите, повлечете нагоре со три прста и задржете."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Зголемување"</string> <string name="user_switched" msgid="7249833311585228097">"Тековен корисник <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Се префрла на <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2052,8 +2028,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> датотека</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> датотеки</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Нема препорачани луѓе со кои може да се сподели"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Список со апликации"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"На апликацијава не ѝ е доделена дозвола за снимање, но може да снима аудио преку овој USB-уред."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Почеток"</string> @@ -2076,235 +2051,125 @@ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Личен приказ"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Работен приказ"</string> <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Ова не може да се споделува со работни апликации"</string> - <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"Вашиот IT-администратор не ви дозволува да ги споделувате овие содржини со апликации од вашиот работен профил"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"IT-администраторот не ви дозволува да ги споделувате овие содржини со апликации од вашиот работен профил"</string> <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Ова не може да се отвора со работни апликации"</string> - <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"Вашиот IT-администратор не ви дозволува да ги отворате овие содржини со апликации од вашиот работен профил"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"IT-администраторот не ви дозволува да ги отворате овие содржини со апликации од вашиот работен профил"</string> <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Ова не може да се споделува со лични апликации"</string> - <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"Вашиот IT-администратор не ви дозволува да ги споделувате овие содржини со апликации од вашиот личен профил"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"IT-администраторот не ви дозволува да ги споделувате овие содржини со апликации од вашиот личен профил"</string> <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Ова не може да се отвора со лични апликации"</string> - <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"Вашиот IT-администратор не ви дозволува да ги отворате овие содржини со апликации од вашиот личен профил"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"IT-администраторот не ви дозволува да ги отворате овие содржини со апликации од вашиот личен профил"</string> <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Работниот профил е паузиран"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"Вклучи"</string> <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"Нема работни апликации што може да ги поддржат овие содржини"</string> <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Нема работни апликации што може да ги отворат овие содржини"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Нема лични апликации што може да ги поддржат овие содржини"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Нема лични апликации што може да ги отворат овие содржини"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Снимајте или пуштајте аудио во телефонски повици"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Дозволува апликацијава да снима или да пушта аудио во телефонски повици кога е назначена како стандардна апликација за бирање."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN за отклучување на мрежата на SIM-картичката"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN за отклучување на подмножество на мрежата на SIM-картичката"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN за отклучување на корпоративната SIM-картичка"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN за отклучување на операторот на SIM-картичката"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN за отклучување на SIM-картичката"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Внесете PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Внесете PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Внесете PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Внесете PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Внесете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN за отклучување на мрежата Network1 на RUIM-картичката"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN за отклучување на мрежата Network2 на RUIM-картичката"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN за отклучување на HRPD-мрежата на RUIM-картичката"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN за отклучување на корпоративната RUIM-картичка"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN за отклучување на операторот на RUIM-картичката"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN за отклучување на RUIM-картичката"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Внесете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Внесете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Внесете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Внесете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Внесете PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Внесете PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN за отклучување на SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN за отклучување на еквивалентната домашна PLMN-мрежа на операторот"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN за отклучување на ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN за отклучување на IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN за отклучување на операторот на подмножеството на мрежата"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Се бара отклучување на мрежата на SIM-картичката…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Се бара отклучување на подмножеството на мрежата на SIM-картичката…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Се бара отклучување на операторот на SIM-картичката…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Се бара отклучување на корпоративната SIM-картичка…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Се бара отклучување со PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Се бара отклучување со PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Се бара отклучување со PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Се бара отклучување со PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Се бара отклучување со PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Се бара отклучување на SIM-картичката…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Се бара отклучување на мрежата Network1 на RUIM-картичката…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Се бара отклучување на мрежата Network2 на RUIM-картичката…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Се бара отклучување на HRPD-мрежата на RUIM-картичката…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Се бара отклучување на операторот на RUIM-картичката…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Се бара отклучување на корпоративната RUIM-картичка…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Се бара отклучување на SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Се бара отклучување на еквивалентната домашна PLMN-мрежа на операторот…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Се бара отклучување на ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Се бара отклучување на IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Се бара отклучување на операторот на подмножеството на мрежата…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Се бара отклучување на RUIM-картичката…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Се бара отклучување со PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Се бара отклучување со PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Се бара отклучување со PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Се бара отклучување со PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Се бара отклучување со PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Се бара отклучување со PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Барањето за отклучување на мрежата на SIM-картичката е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Барањето за отклучување на подмножеството на мрежата на SIM-картичката е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Барањето за отклучување на операторот на SIM-картичката е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Барањето отклучување на корпоративната SIM-картичка е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Барањето за отклучување на SIM-картичката е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Барањето за отклучување на мрежата Network1 на RUIM-картичката е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Барањето за отклучување на мрежата Network2 на RUIM-картичката е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Барањето за отклучување на HRPD-мрежата на RUIM-картичката е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Барањето за отклучување на корпоративната RUIM-картичка е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Барањето за отклучување на операторот на RUIM-картичката е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Барањето за отклучување на RUIM-картичката е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Отклучувањето со PUK е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Отклучувањето со PUK е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Отклучувањето со PUK е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Отклучувањето со PUK е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Отклучувањето со PUK е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Отклучувањето со PUK е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Отклучувањето со PUK е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Отклучувањето со PUK е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Отклучувањето со PUK е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Отклучувањето со PUK е неуспешно."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Отклучувањето со PUK е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Барањето за отклучување на SPN е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Барањето за отклучување на еквивалентната домашна PLMN-мрежа на операторот е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Барањето за отклучување на ICCID е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Барањето за отклучување на IMPI е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Барањето за отклучување на операторот на подмножеството на мрежата е неуспешно."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Отклучувањето на мрежата на SIM-картичката е успешно."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Отклучувањето на подмножеството на мрежата на SIM-картичката е успешно."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Отклучувањето на операторот на SIM-картичката е успешно."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Отклучувањето на корпоративната SIM-картичка е успешно."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Отклучувањето на SIM-картичката е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Отклучувањето на мрежата Network1 на RUIM-картичката е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Отклучувањето на мрежата Network2 на RUIM-картичката е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Отклучувањето на HRPD-мрежата на RUIM-картичката е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Отклучувањето на операторот на RUIM-картичката е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Отклучувањето на корпоративната RUIM-картичка е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Отклучувањето на RUIM-картичката е успешно."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Отклучувањето со PUK е успешно."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Отклучувањето со PUK е успешно."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Отклучувањето со PUK е успешно."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Отклучувањето со PUK е успешно."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Отклучувањето со PUK е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Отклучувањето со PUK е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Отклучувањето со PUK е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Отклучувањето со PUK е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Отклучувањето со PUK е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Отклучувањето со PUK е успешно."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Отклучувањето со PUK е успешно."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Отклучувањето на SPN е успешно."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Отклучувањето на еквивалентната домашна PLMN-мрежа на операторот е успешно."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Отклучувањето на ICCID е успешно."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Отклучувањето на IMPI е успешно."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Отклучувањето на операторот на подмножеството на мрежата е успешно."</string> </resources> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index cf4583c48b1b..84dfa955c532 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"വ്യക്തിപരമായ ഉപയോഗത്തിനായി, ഉപകരണത്തിന്റെ ഔദ്യോഗിക ഉപയോഗം അഡ്മിൻ അവസാനിപ്പിച്ചു"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"ഉപകരണം മാനേജുചെയ്യുന്നുണ്ട്"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"നിങ്ങളുടെ സ്ഥാപനമാണ് ഈ ഉപകരണം മാനേജുചെയ്യുന്നത്, നെറ്റ്വർക്ക് ട്രാഫിക്ക് നിരീക്ഷിക്കുകയും ചെയ്തേക്കാം, വിശദാംശങ്ങൾ അറിയാൻ ടാപ്പുചെയ്യുക."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"നിങ്ങളുടെ അഡ്മിൻ ലൊക്കേഷൻ ക്രമീകരണം മാറ്റി"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"നിങ്ങളുടെ ലൊക്കേഷൻ ക്രമീകരണം കാണാൻ ടാപ്പ് ചെയ്യുക."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"ആപ്പുകൾക്ക് നിങ്ങളുടെ ലൊക്കേഷൻ ആക്സസ് ചെയ്യാനാകും"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"കൂടുതലറിയാൻ നിങ്ങളുടെ ഐടി അഡ്മിനെ ബന്ധപ്പെടുക"</string> <string name="country_detector" msgid="7023275114706088854">"രാജ്യം കണ്ടെത്താനുള്ള സംവിധാനം"</string> <string name="location_service" msgid="2439187616018455546">"ലൊക്കേഷൻ സേവനം"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"സെൻസർ അറിയിപ്പ് സേവനം"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"നിങ്ങളുടെ ഉപകരണം മായ്ക്കും"</string> <string name="factory_reset_message" msgid="2657049595153992213">"അഡ്മിൻ ആപ്പ് ഉപയോഗിക്കാനാകില്ല. നിങ്ങളുടെ ഉപകരണം ഇപ്പോൾ മായ്ക്കപ്പെടും.\n\nനിങ്ങൾക്ക് ചോദ്യങ്ങൾ ഉണ്ടെങ്കിൽ, നിങ്ങളുടെ സ്ഥാപനത്തിന്റെ അഡ്മിനെ ബന്ധപ്പെടുക."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> പ്രിന്റിംഗ് പ്രവർത്തനരഹിതമാക്കി."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"വ്യക്തിപര ആപ്പ് അൺബ്ലോക്കാക്കൂ"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"ആപ്പുകൾ നാളെ ബ്ലോക്ക് ചെയ്യും"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"നിങ്ങളുടെ ഔദ്യോഗിക പ്രൊഫൈൽ <xliff:g id="DAYS">%1$d</xliff:g> ദിവസത്തിൽ കൂടുതൽ താൽക്കാലികമായി നിർത്താൻ നിങ്ങളുടെ ഐടി അഡ്മിൻ അനുവദിക്കുന്നില്ല"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"ഔദ്യോഗിക പ്രൊഫൈൽ ഓണാക്കുക"</string> <string name="me" msgid="6207584824693813140">"ഞാന്"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ടാബ്ലെറ്റ് ഓപ്ഷനുകൾ"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android ടിവി ഓപ്ഷനുകൾ"</string> @@ -428,11 +424,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ലൊക്കേഷൻ ദാതാവിന്റെ അധിക കമാൻഡുകൾ ആക്സസ്സുചെയ്യുക"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ലൊക്കേഷൻ ദാതാവിന്റെ അധിക കമാൻഡുകൾ ആക്സസ്സുചെയ്യാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് GPS-ന്റെയോ മറ്റ് ലൊക്കേഷൻ ഉറവിടങ്ങളുടെയോ പ്രവർത്തനത്തിൽ ഇടപെടാൻ അപ്ലിക്കേഷനെ അനുവദിക്കാനിടയുണ്ട്."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"ഫോർഗ്രൗണ്ടിൽ മാത്രം കൃത്യമായ ലൊക്കേഷൻ ആക്സസ് ചെയ്യുക"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ഫോർഗ്രൗണ്ടിൽ ഉള്ളപ്പോൾ മാത്രമേ ഈ ആപ്പിന് നിങ്ങളുടെ കൃത്യമായ ലൊക്കേഷൻ ലഭിക്കൂ. ഈ ആപ്പിന് ലൊക്കേഷൻ സേവനങ്ങൾ ഉപയോഗിക്കാൻ കഴിയണമെങ്കിൽ, അവ നിങ്ങളുടെ ഉപകരണത്തിൽ ലഭ്യമായിരിക്കുകയും ഓണായിരിക്കുകയും വേണം. ഇത് ബാറ്ററി ഉപഭോഗം വർദ്ധിപ്പിച്ചേക്കാം."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ആപ്പ് ഉപയോഗത്തിലിരിക്കുമ്പോൾ ലൊക്കേഷൻ സേവനങ്ങളിൽ നിന്ന് നിങ്ങളുടെ കൃത്യമായ ലൊക്കേഷൻ ഈ ആപ്പിന് നേടാനാവും. ആപ്പിന് ലൊക്കേഷൻ ലഭിക്കാൻ നിങ്ങളുടെ ഉപകരണത്തിനുള്ള ലൊക്കേഷൻ സേവനങ്ങൾ ഓണാക്കേണ്ടതുണ്ട്. ഇത് ബാറ്ററി ഉപയോഗം വർദ്ധിപ്പിച്ചേക്കാം."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ഫോർഗ്രൗണ്ടിൽ മാത്രം ഏകദേശ ലൊക്കേഷൻ ആക്സസ് ചെയ്യുക"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ഫോർഗ്രൗണ്ടിൽ ഉള്ളപ്പോൾ മാത്രമേ ഈ ആപ്പിന് നിങ്ങളുടെ ഏകദേശ ലൊക്കേഷൻ ലഭിക്കൂ. ഈ ആപ്പിന് ലൊക്കേഷൻ സേവനങ്ങൾ ഉപയോഗിക്കാൻ കഴിയണമെങ്കിൽ, അവ നിങ്ങളുടെ ഉപകരണത്തിൽ ലഭ്യമായിരിക്കുകയും ഓണായിരിക്കുകയും വേണം."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ആപ്പ് ഉപയോഗത്തിലിരിക്കുമ്പോൾ ലൊക്കേഷൻ സേവനങ്ങളിൽ നിന്ന് നിങ്ങളുടെ ഏകദേശ ലൊക്കേഷൻ ഈ ആപ്പിന് നേടാനാവും. ആപ്പിന് ലൊക്കേഷൻ ലഭിക്കാൻ നിങ്ങളുടെ ഉപകരണത്തിനുള്ള ലൊക്കേഷൻ സേവനങ്ങൾ ഓണാക്കേണ്ടതുണ്ട്."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"പശ്ചാത്തലത്തിൽ ലൊക്കേഷൻ ആക്സസ് ചെയ്യുക"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"പശ്ചാത്തലത്തിൽ പ്രവർത്തിക്കുമ്പോൾ, ഫോർഗ്രൗണ്ട് ലൊക്കേഷന് പുറമെ, ലൊക്കേഷൻ ആക്സസ് ചെയ്യാനും ഈ ആപ്പിന് കഴിയും."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ആപ്പ് ഉപയോഗത്തിലല്ലെങ്കിൽ പോലും ഈ ആപ്പിന് ഏത് സമയത്തും ലൊക്കേഷൻ ആക്സസ് ചെയ്യാം."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"നിങ്ങളുടെ ഓഡിയോ ക്രമീകരണങ്ങൾ മാറ്റുക"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"വോളിയവും ഔട്ട്പുട്ടിനായി ഉപയോഗിച്ച സ്പീക്കറും പോലുള്ള ആഗോള ഓഡിയോ ക്രമീകരണങ്ങൾ പരിഷ്ക്കരിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ഓഡിയോ റെക്കോർഡ് ചെയ്യുക"</string> @@ -447,7 +443,7 @@ <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> <skip /> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"ക്യാമറയുള്ള ഉപകരണങ്ങൾ ഓണാക്കുന്നതിനെയോ അടയ്ക്കുന്നതിനെയോ കുറിച്ചുള്ള കോൾബാക്കുകൾ സ്വീകരിക്കാൻ ആപ്പിനെയോ സേവനത്തെയോ അനുവദിക്കുക."</string> - <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"ക്യാമറയുള്ള ഏതെങ്കിലും ഉപകരണം ഓണാക്കുമ്പോഴോ (ആപ്പ് മുഖേന) അടയ്ക്കുമ്പോഴോ ഈ ആപ്പിന് കോൾബാക്കുകൾ സ്വീകരിക്കാനാവും."</string> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"ഏതെങ്കിലും ക്യാമറ ഉപകരണം തുറക്കുമ്പോഴോ (ഏത് ആപ്പ് ഉപയോഗിച്ചും) അടയ്ക്കുമ്പോഴോ ഈ ആപ്പിന് കോൾബാക്കുകൾ സ്വീകരിക്കാനാവും."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"വൈബ്രേറ്റുചെയ്യൽ നിയന്ത്രിക്കുക"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"വൈബ്രേറ്റർ നിയന്ത്രിക്കുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"വൈബ്രേറ്റ് ചെയ്യൽ ആക്സസ് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string> @@ -769,7 +765,7 @@ <string name="phoneTypeTtyTdd" msgid="532038552105328779">"TTY TDD"</string> <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"ഓഫീസ് മൊബൈല്"</string> <string name="phoneTypeWorkPager" msgid="3748332310638505234">"ഔദ്യോഗിക പേജര്"</string> - <string name="phoneTypeAssistant" msgid="757550783842231039">"അസിസ്റ്റന്റ്"</string> + <string name="phoneTypeAssistant" msgid="757550783842231039">"Assistant"</string> <string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string> <string name="eventTypeCustom" msgid="3257367158986466481">"ഇഷ്ടാനുസൃതം"</string> <string name="eventTypeBirthday" msgid="7770026752793912283">"ജന്മദിനം"</string> @@ -802,7 +798,7 @@ <string name="orgTypeOther" msgid="5450675258408005553">"മറ്റുള്ളവ"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"ഇഷ്ടാനുസൃതം"</string> <string name="relationTypeCustom" msgid="282938315217441351">"ഇഷ്ടാനുസൃതം"</string> - <string name="relationTypeAssistant" msgid="4057605157116589315">"സഹായി"</string> + <string name="relationTypeAssistant" msgid="4057605157116589315">"Assistant"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"സഹോദരന്"</string> <string name="relationTypeChild" msgid="9076258911292693601">"കുട്ടി"</string> <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"ഗാര്ഹിക പങ്കാളി"</string> @@ -1349,13 +1345,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"നിലവിലെ ഉള്ളടക്കം അവലോകനം ചെയ്യുന്നു"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"പുതിയ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"സജ്ജമാക്കാൻ ടാപ്പ് ചെയ്യുക"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ഫോട്ടോകളും മീഡിയയും ട്രാൻസ്ഫർ ചെയ്യാൻ"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g>-ൽ പ്രശ്നം"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"പരിഹരിക്കാൻ ടാപ്പ് ചെയ്യുക"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> കേടായി. പരിഹരിക്കാൻ തിരഞ്ഞെടുക്കുക."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"പിന്തുണയില്ലാത്ത <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"ഈ ഉപകരണം <xliff:g id="NAME">%s</xliff:g> പിന്തുണയ്ക്കുന്നതല്ല. പിന്തുണയുള്ള ഫോർമാറ്റിൽ സജ്ജമാക്കുന്നതിന് ടാപ്പുചെയ്യുക."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"<xliff:g id="NAME">%s</xliff:g> ഈ ഉപകരണത്തിന് അനുയോജ്യമല്ല. അനുയോജ്യമായ ഒരു ഫോർമാറ്റിൽ സജ്ജമാക്കുന്നതിന് തിരഞ്ഞെടുക്കുക."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> അപ്രതീക്ഷിതമായി നീക്കംചെയ്തു"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"ഉള്ളടക്കം നഷ്ടമാകുന്നത് തടയാൻ, നീക്കം ചെയ്യുന്നതിന് മുൻപ് മീഡിയ ഒഴിവാക്കുക"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> നീക്കം ചെയ്തു"</string> @@ -2086,8 +2086,6 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"ഔദ്യോഗിക ആപ്പുകൾക്കൊന്നും ഈ ഉള്ളടക്കം തുറക്കാനാവില്ല"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"വ്യക്തിപര ആപ്പുകൾക്കൊന്നും ഈ ഉള്ളടക്കത്തെ പിന്തുണയ്ക്കാനാവില്ല"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"വ്യക്തിപര ആപ്പുകൾക്കൊന്നും ഈ ഉള്ളടക്കം തുറക്കാനാവില്ല"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ടെലിഫോൺ കോളുകൾ ചെയ്യുമ്പോൾ റെക്കോർഡ് ചെയ്യുക അല്ലെങ്കിൽ ഓഡിയോ പ്ലേ ചെയ്യുക"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ഡിഫോൾട്ട് ഡയലർ ആപ്പായി അസെെൻ ചെയ്യുന്ന സമയത്ത്, ടെലിഫോൺ കോളുകൾ ചെയ്യുമ്പോൾ റെക്കോർഡ് ചെയ്യാൻ അല്ലെങ്കിൽ ഓഡിയോ പ്ലേ ചെയ്യാൻ ഈ ആപ്പിനെ അനുവദിക്കുന്നു."</string> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> <skip /> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index e9f27ff969de..a3d21ec409ab 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Админ хувийн хэрэглээнд зориулж төхөөрөмжийн эрхийг хассан"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Төхөөрөмжийг удирдсан"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Таны байгууллага энэ төхөөрөмжийг удирдаж, сүлжээний ачааллыг хянадаг. Дэлгэрэнгүй мэдээлэл авах бол товшино уу."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Таны админ байршлын тохиргоог өөрчилсөн байна"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Байршлын тохиргоогоо харахын тулд товшино уу."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Аппууд нь таны байршилд хандах боломжтой"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Нэмэлт мэдээлэл авахын тулд мэдээлэл технологийн админтайгаа холбогдоно уу"</string> <string name="country_detector" msgid="7023275114706088854">"Улс тодорхойлогч"</string> <string name="location_service" msgid="2439187616018455546">"Байршлын үйлчилгээ"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Мэдрэгчийн мэдэгдлийн үйлчилгээ"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Таны төхөөрөмж устах болно."</string> <string name="factory_reset_message" msgid="2657049595153992213">"Админ аппыг ашиглах боломжгүй. Таны төхөөрөмжийг одоо устгана.\n\nХэрэв танд асуулт байгаа бол байгууллагынхаа админтай холбогдоно уу."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> хэвлэх үйлдлийг идэвхгүй болгосон."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Хувийн аппуудаа блокоос гаргана уу"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Аппуудыг маргааш блоклоно"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Таны мэдээлэл технологийн админ таны ажлын профайлыг <xliff:g id="DAYS">%1$d</xliff:g>-с олон хоног түр зогсоохыг зөвшөөрөхгүй байна"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Ажлын профайлыг асаах"</string> <string name="me" msgid="6207584824693813140">"Би"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Таблетын сонголтууд"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android ТВ-н сонголт"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Утасны сонголтууд"</string> <string name="global_action_lock" msgid="6949357274257655383">"Дэлгэцний түгжээ"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Унтраах"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Асаах/унтраах"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Дахин эхлүүлэх"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Яаралтай тусламж"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Алдаа мэдээлэх"</string> <string name="global_action_logout" msgid="6093581310002476511">"Гаргах харилцан үйлдэл"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"байршил нийлүүлэгчийн нэмэлт тушаалд хандах"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Апп нь байршил нийлүүлэгчийн нэмэлт тушаалд хандах боломжтой. Энэ нь апп-д GPS эсвэл бусад байршлын үйлчилгээний ажиллагаанд нөлөөлөх боломжийг олгоно."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"нарийвчилсан байршилд зөвхөн нүүр хэсэгт хандах"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Энэ апп нь зөвхөн дэлгэц дээр байх үедээ л таны байршлыг нарийн тогтоох боломжтой. Байршлын үйлчилгээ нь таны төхөөрөмж дээр асаалттай, апп ашиглах боломжтой байх ёстой. Энэ нь батарейны хэрэглээг нэмэгдүүлж болзошгүй."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Энэ апп нь түүнийг ашиглах үед байршлын үйлчилгээнээс таны нарийвчилсан байршлыг тогтоох боломжтой. Аппад байршлыг тогтоохын тулд таны төхөөрөмжийн байршлын үйлчилгээг асаасан байх ёстой. Энэ нь батарей ашиглалтыг нэмэгдүүлж болзошгүй."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"зөвхөн дэлгэц дээр байхад ойролцоо байршилд хандах"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Энэ апп нь зөвхөн дэлгэц дээр байх үедээ л таны байршлыг ойролцоогоор тогтоох боломжтой. Байршлын үйлчилгээ нь таны төхөөрөмж дээр асаалттай, апп ашиглах боломжтой байх ёстой."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Энэ апп нь түүнийг ашиглах үед байршлын үйлчилгээнээс таны байршлыг ойролцоогоор тогтоох боломжтой. Аппад байршлыг тогтоохын тулд таны төхөөрөмжийн байршлын үйлчилгээг асаасан байх ёстой."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"байршилд ард хандах"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Энэ апп нь дэлгэц дээр байхдаа байршилд хандахаас гадна арын хэсэгт ажиллах үедээ байршилд хандах боломжтой."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Энэ апп нь дурын үед, түүнийг ашиглаагүй байх үед ч байршилд хандах боломжтой."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"Аудио тохиргоо солих"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Апп нь дууны хэмжээ, спикерын гаралтад ашиглагдах глобал аудио тохиргоог өөрчлөх боломжтой."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"аудио бичих"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"зураг авах болон видео бичих"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Энэ апп ямар ч үед камер ашиглан зураг авж, видео хийх боломжтой."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Видео болон зураг авахын тулд апп эсвэл үйлчилгээнд хандахыг системийн камерт зөвшөөрөх"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Энэ хамгаалагдсан эсвэл системийн апп нь системийн камер ашиглан ямар ч үед зураг авч, видео бичих боломжтой. Мөн түүнчлэн, апп нь android.permission.CAMERA-н зөвшөөрөлтэй байх шаардлагатай"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Аппликэйшн эсвэл үйлчилгээнд камерын төхөөрөмжүүдийг нээж эсвэл хааж байгаа тухай залгасан дуудлага хүлээн авахыг зөвшөөрөх."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Энэ апп нь дурын камерын төхөөрөмжийг нээх (ямар аппликэйшнээр болох) эсвэл хаах үед буцааж залгасан дуудлага хүлээн авах боломжтой."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"чичиргээг удирдах"</string> @@ -1349,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Одоогийн агуулгыг хянаж байна"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Шинэ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Тохируулахын тулд товшино уу"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Зураг, медиа шилжүүлэхэд зориулсан"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> алдаатай байна"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Засахын тулд товшино уу"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> эвдэрсэн байна. Засахын тулд сонгоно уу."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Дэмжээгүй <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Энэ төхөөрөмж нь <xliff:g id="NAME">%s</xliff:g>-г дэмждэггүй. Дэмжигдсэн хэлбэршүүлэлтэд тохируулахын тулд товшино уу."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Энэ төхөөрөмж <xliff:g id="NAME">%s</xliff:g>-г дэмждэггүй. Дэмжсэн хэлбэршүүлэлтэд тохируулахын тулд сонгоно уу."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Тус төхөөрөмж нь энэ <xliff:g id="NAME">%s</xliff:g>-г дэмждэггүй."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g>-ыг гэнэт гаргасан байна"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Агуулга алдахаас сэргийлэхийн тулд медиаг төхөөрөмжөөс салгахаасаа өмнө холболтыг салгана уу"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g>-г устгасан"</string> @@ -1623,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Дууг санал болгосноос чанга болгож өсгөх үү?\n\nУрт хугацаанд чанга хөгжим сонсох нь таны сонсголыг муутгаж болно."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Хүртээмжийн товчлолыг ашиглах уу?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Товчлол асаалттай үед дууны түвшний хоёр товчлуурыг хамтад нь 3 секунд дарснаар хандалтын онцлогийг эхлүүлнэ."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Хандалтын онцлогуудыг асаах уу?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Дууны түвшний түлхүүрийг хэдэн секундийн турш зэрэг дарах нь хандалтын онцлогуудыг асаадаг. Энэ нь таны төхөөрөмжийн ажиллах зарчмыг өөрчилж болзошгүй.\n\nОдоогийн онцлогууд:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nТа сонгосон онцлогуудыг Тохиргоо > Хандалт хэсэгт өөрчлөх боломжтой."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack-г асаах уу?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Дууны түвшний түлхүүрийг хэдэн секундийн турш зэрэг дарах нь TalkBack-г асаадаг. Энэ нь хараагүй эсвэл сул хараатай хүмүүст туслах дэлгэц уншигч юм. TalkBack нь таны төхөөрөмжийн ажиллах зарчмыг бүхэлд нь өөрчилдөг.\n\nТа Тохиргоо > Хандалт хэсэгт энэ товчлолыг өөр онцлогт оноож өөрчлөх боломжтой."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g>-г асаах уу?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Дууны түвшний түлхүүрийг хэдэн секундийн турш зэрэг дарах нь хандалтын онцлог болох <xliff:g id="SERVICE">%1$s</xliff:g>-г асаадаг. Энэ нь таны төхөөрөмжийн ажиллах зарчмыг өөрчилж болзошгүй.\n\nТа Тохиргоо > Хандалт хэсэгт энэ товчлолыг өөр онцлогт оноож өөрчлөх боломжтой."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Асаах"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Битгий асаа"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>-д таны төхөөрөмжийг бүрэн хянахыг зөвшөөрөх үү?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Хэрэв та <xliff:g id="SERVICE">%1$s</xliff:g>-г асаавал таны төхөөрөмж өгөгдлийн шифрлэлтийг сайжруулахын тулд таны дэлгэцийн түгжээг ашиглахгүй."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Бүрэн хянах нь таны хандалтын үйлчилгээний шаардлагад тусалдаг аппуудад тохиромжтой боловч ихэнх аппад тохиромжгүй байдаг."</string> @@ -1651,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Зөвшөөрөх"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Татгалзах"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Үүнийг ашиглаж эхлэхийн тулд онцлог дээр товшино уу:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Хандалтын товчлуурын тусламжтай ашиглах онцлогуудыг сонгоно уу"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Дууны түвшний түлхүүрийн товчлолын тусламжтай ашиглах онцлогуудыг сонгоно уу"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g>-г унтраалаа"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Товчлолуудыг засах"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Болсон"</string> @@ -1662,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Товчлол ашиглах"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Өнгө хувиргалт"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Өнгөний засвар"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Дууны түвшний түлхүүрийг удаан дарсан. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г асаалаа."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Дууны түвшний түлхүүрийг удаан дарсан. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г унтраалаа."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г ашиглахын тулд дууны түвшнийг ихэсгэх, багасгах түлхүүрийг 3 секундийн турш зэрэг дарна уу"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Хандалтын товчлуурыг товшихдоо ашиглах онцлогийг сонгоно уу:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Хандалтын зангаагаар ашиглах үйлчилгээг сонгоно уу (хоёр хуруугаараа дэлгэцийн доороос дээш хоёр хуруугаар шударна уу):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Хандалтын зангаагаар ашиглах онцлогийг сонгоно уу (гурван хуруугаар дэлгэцийн доороос дээш шударна уу):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Онцлогуудын хооронд сэлгэхийн тулд хандалтын товчлуурыг удаан дарна уу."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Онцлогуудын хооронд сэлгэхийн тулд хоёр хуруугаар дээш шудраад удаан дарна уу."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Онцлогуудын хооронд сэлгэхийн тулд гурван хуруугаар дээш шудраад удаан дарна уу."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Томруулах"</string> <string name="user_switched" msgid="7249833311585228097">"Одоогийн хэрэглэгч <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> руу сэлгэж байна…"</string> @@ -2049,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> файл</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> файл</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Хуваалцахыг санал болгосон хүн байхгүй"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Аппын жагсаалт"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Энэ апликейшнд бичих зөвшөөрөл олгогдоогүй ч энэ USB төхөөрөмжөөр дамжуулан аудио бичиж чадсан."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Нүүр"</string> @@ -2072,249 +2048,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"Ажил"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Хувийн харагдах байдал"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Ажлын харагдах байдал"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Ажлын аппаар үүнийг хуваалцах боломжгүй"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"Таны IT админ танд ажлын профайл дахь аппуудаа ашиглан энэ контентыг хуваалцахыг зөвшөөрөхгүй байна"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Ажлын аппаар үүнийг нээх боломжгүй"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"Таны IT админ танд ажлын профайл дахь аппуудаа ашиглан энэ контентыг нээхийг зөвшөөрөхгүй байна"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Хувийн аппаар үүнийг хуваалцах боломжгүй"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"Таны IT админ танд хувийн профайл дахь аппуудаа ашиглан энэ контентыг хуваалцахыг зөвшөөрөхгүй байна"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Хувийн аппаар үүнийг нээх боломжгүй"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"Таны IT админ танд хувийн профайл дахь аппуудаа ашиглан энэ контентыг нээхийг зөвшөөрөхгүй байна"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Ажлын профайлыг түр зогсоосон"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"Асаах"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Утасны дуудлагын үеэр аудио бичих эсвэл тоглуулах"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Энэ аппыг залгагч өгөгдмөл аппликэйшн болгосон үед түүнд утасны дуудлагын үеэр аудио бичих эсвэл тоглуулахыг зөвшөөрдөг."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"Ажлын ямар ч апп энэ контентыг дэмжих боломжгүй"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Ажлын ямар ч апп энэ контентыг нээх боломжгүй"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Хувийн ямар ч апп энэ контентыг дэмжих боломжгүй"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Хувийн ямар ч апп энэ контентыг нээх боломжгүй"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Сүлжээний SIM-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Сүлжээний дэд олонлогийн SIM-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Байгууллагын SIM-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM-н үйлчилгээ үзүүлэгчийн түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK оруулна уу"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK оруулна уу"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK оруулна уу"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK оруулна уу"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK оруулна уу"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM-н 1-р сүлжээний түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM-н 2-р сүлжээний түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM hrpd-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Байгууллагын RUIM-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Үйлчилгээ үзүүлэгчийн RUIM-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK оруулна уу"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK оруулна уу"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK оруулна уу"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK оруулна уу"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK оруулна уу"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK оруулна уу"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI-н түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Сүлжээний дэд олонлогийн үйлчилгээ үзүүлэгчийн түгжээг тайлах ПИН"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Сүлжээний SIM-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Сүлжээний дэд олонлогийн SIM-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM-н үйлчилгээ үзүүлэгчийн түгжээг тайлах хүсэлт илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Байгууллагын SIM-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM-н 1-р сүлжээний түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM 2-р сүлжээний түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM hrpd-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Үйлчилгээ үзүүлэгчийн RUIM-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Байгууллагын RUIM-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP Equivalent Home PLMN тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Сүлжээний дэд олонлогийн үйлчилгээ үзүүлэгчийн түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK-н түгжээг тайлах хүсэлтийг илгээж байна…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Сүлжээний SIM-н түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Сүлжээний дэд олонлогийн SIM-н түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM-н үйлчилгээ үзүүлэгчийн түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Байгууллагын SIM-н түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM-н түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM-н 1-р сүлжээний түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM-н 2-р сүлжээний түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd-н түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Байгууллагын RUIM-н түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Үйлчилгээ үзүүлэгчийн RUIM-н түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM-н түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN-н түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN-н түгжээг тайлах амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID-н түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI-н түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Сүлжээний дэд олонлогийн үйлчилгээ үзүүлэгчийн түгжээг тайлах хүсэлт амжилтгүй боллоо."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Сүлжээний SIM-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Сүлжээний дэд олонлогийн SIM-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM-н үйлчилгээ үзүүлэгчийн түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Байгууллагын SIM-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM-н 1-р сүлжээний түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM-н 2-р сүлжээний түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Үйлчилгээ үзүүлэгчийн RUIM-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Байгууллагын RUIM-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI-н түгжээг амжилттай тайллаа."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Сүлжээний дэд олонлогийн үйлчилгээ үзүүлэгчийн түгжээг амжилттай тайллаа."</string> </resources> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 95d274e9dad4..81765426fa51 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"वैयक्तिक वापरासाठी ॲडमिनने नियंत्रण सोडलेले डिव्हाइस"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"डिव्हाइस व्यवस्थापित केले आहे"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"तुमची संस्था हे डिव्हाइस व्यवस्थापित करते आणि नेटवर्क रहदारीचे निरीक्षण करू शकते. तपशीलांसाठी टॅप करा."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"तुमच्या ॲडमिनने स्थान सेटिंग्ज बदलल्या आहेत"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"तुमची स्थान सेटिंग्ज पाहण्यासाठी टॅप करा."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"ॲप्स तुमचे स्थान अॅक्सेस करू शकतात"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"अधिक जाणून घेण्यासाठी तुमच्या आयटी ॲडमिनशी संपर्क साधा"</string> <string name="country_detector" msgid="7023275114706088854">"कंट्री डिटेक्टर"</string> <string name="location_service" msgid="2439187616018455546">"स्थान सेवा"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"सेंसर सूचना सेवा"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"तुमचे डिव्हाइस मिटविले जाईल"</string> <string name="factory_reset_message" msgid="2657049595153992213">"प्रशासक अॅप वापरता येणार नाही. तुमचे डिव्हाइस आता साफ केले जाईल.\n\nतुम्हाला कुठलेही प्रश्न असल्यास, तुमच्या संस्थेच्या प्रशासकाशी संपर्क साधा."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> नी प्रिंट करणे बंद केले आहे."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"वैयक्तिक ॲप्स अनब्लॉक करा"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"अॅप्स उद्या ब्लॉक केली जातील"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"तुमचा आयटी अॅडमिन तुमची ऑफिस प्रोफाइल <xliff:g id="DAYS">%1$d</xliff:g> पेक्षा जास्त दिवसांसाठी थांबवण्याची अनुमती देत नाही"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"ऑफिस प्रोफाइल सुरू करा"</string> <string name="me" msgid="6207584824693813140">"मी"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"टॅबलेट पर्याय"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV पर्याय"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"फोन पर्याय"</string> <string name="global_action_lock" msgid="6949357274257655383">"स्क्रीन लॉक"</string> <string name="global_action_power_off" msgid="4404936470711393203">"बंद"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"पॉवर"</string> + <string name="global_action_restart" msgid="4678451019561687074">"रीस्टार्ट करा"</string> <string name="global_action_emergency" msgid="1387617624177105088">"आणीबाणी"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"बग रीपोर्ट"</string> <string name="global_action_logout" msgid="6093581310002476511">"सेशन समाप्त करा"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"अतिरिक्त स्थान प्रदाता आदेश अॅक्सेस करा"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"अॅपला अतिरिक्त स्थान प्रदाता आदेशावर प्रवेश करण्याची अनुमती देते. हे कदाचित अॅपला GPS किंवा इतर स्थान स्रोत च्या ऑपरेशनमध्ये हस्तक्षेप करण्याची अनुमती देऊ शकते."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"फक्त फोरग्राउंडमध्ये अचूकपणे अॅक्सेस करा"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"हे अॅप फक्त फोरग्राउंडमध्ये असतानाच तुमचे अचूक स्थान मिळवू शकते. स्थातुमच्या डिव्हाइसवर स्थान सेवा सुरू असणे आणि उपलब्ध असणे आवश्यक आहे जेणेकरून ॲप त्यांचा वापर करू शकतील. यामुळे बॅटरी वापर वाढू शकतो."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"हे अॅप वापरात असताना स्थान सेवांकडून तुमचे अचूक स्थान मिळवू शकते. अॅपला स्थान मिळवता येण्यासाठी तुमच्या डिव्हाइसची स्थान सेवा सुरू करणे आवश्यक आहे. यामुळे बॅटरीचा वापर वाढू शकतो."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"फक्त फोअरग्राउंडमध्ये अचूक स्थान अॅक्सेस करा"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"हे अॅप फक्त फोरग्राउंडमध्ये असताना तुमचे अचूक स्थान मिळवू शकते. तुमच्या डिव्हाइसवर स्थान सेवा सुरू असणे आणि उपलब्ध असणे आवश्यक आहे जेणेकरून ॲप त्यांचा वापर करू शकतील."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"हे अॅप वापरात असताना स्थान सेवांकडून तुमचे अंदाजे स्थान मिळवू शकते. अॅपला स्थान मिळवता येण्यासाठी तुमच्या डिव्हाइसची स्थान सेवा सुरू करणे आवश्यक आहे."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"बॅकग्राउंडमध्ये स्थान अॅक्सेस करू शकतो"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"हे अॅप फोरग्राउंड स्थान ॲक्सेस व्यतिरिक्त, बॅकग्राउंडमध्ये सुरू असताना स्थान ॲक्सेस करू शकते."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"हे अॅप वापरात नसतानादेखील केव्हाही स्थान अॅक्सेस करू शकते."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"आपल्या ऑडिओ सेटिंग्ज बदला"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"व्हॉल्यूम आणि आउटपुटसाठी कोणता स्पीकर वापरला आहे यासारख्या समग्र ऑडिओ सेटिंग्ज सुधारित करण्यासाठी अॅप ला अनुमती देते."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ऑडिओ रेकॉर्ड"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"चित्रे आणि व्हिडिओ घ्या"</string> <string name="permdesc_camera" msgid="1354600178048761499">"हा अॅप कोणत्याही वेळी कॅमेरा वापरून चित्रेे घेऊ आणि व्हिडिओ रेकॉर्ड करू शकतो."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"फोटो आणि व्हिडिओ काढण्यासाठी ॲप्लिकेशन किंवा सेवेला सिस्टम कॅमेरे ॲक्सेस करण्याची अनुमती द्या"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"हे विशेषाधिकृत किंवा सिस्टम ॲप कधीही सिस्टम कॅमेरा वापरून फोटो आणि व्हिडिओ रेकॉर्ड करू शकते. ॲपकडे android.permission.CAMERA परवानगी असण्याचीदेखील आवश्यकता आहे"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"एखाद्या अॅप्लिकेशन किंवा सेवेला कॅमेरा डिव्हाइस सुरू किंवा बंद केल्याची कॉलबॅक मिळवण्याची अनुमती द्या."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"कोणतेही कॅमेरा डिव्हाइस (कोणत्या अॅप्लिकेशनने) सुरू किंवा बंद केले जाते तेव्हा हे ॲप कॉलबॅक मिळवू शकते."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"व्हायब्रेट नियंत्रित करा"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"अॅप ला व्हायब्रेटर नियंत्रित करण्यासाठी अनुमती देते."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"अॅपला व्हायब्रेटर स्थितीचा अॅक्सेस करण्याची अनुमती देते."</string> @@ -803,7 +795,7 @@ <string name="orgTypeOther" msgid="5450675258408005553">"अन्य"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"कस्टम"</string> <string name="relationTypeCustom" msgid="282938315217441351">"कस्टम"</string> - <string name="relationTypeAssistant" msgid="4057605157116589315">"असिस्टंट"</string> + <string name="relationTypeAssistant" msgid="4057605157116589315">"Assistant"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"भाऊ"</string> <string name="relationTypeChild" msgid="9076258911292693601">"मूल"</string> <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"घरातील जोडीदार"</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"सध्याच्या आशयाचे पुनरावलोकन करत आहे"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"नवीन <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"सेट करण्यासाठी टॅप करा"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"फोटो आणि मीडिया स्थानांतरित करण्यासाठी"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> सह समस्या"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"दुरुस्त करण्यासाठी टॅप करा"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> दूषित आहे. निश्चित करण्यासाठी निवडा."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> असमर्थित"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"हे डिव्हाइस <xliff:g id="NAME">%s</xliff:g> ला सपोर्ट करत नाही. सपोर्ट असलेल्या फॉरमॅटमध्ये सेट करण्यासाठी टॅप करा."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"हे डिव्हाइस <xliff:g id="NAME">%s</xliff:g> ला सपोर्ट करत नाही. सपोर्ट असलेल्या फॉरमॅटमध्ये सेट करण्यासाठी निवडा."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> अनपेक्षितरित्या काढले"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"आशय गमावणे टाळण्यासाठी काढून टाकण्यापूर्वी मीडिया इजेक्ट करा"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> काढून टाकले आहे."</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"शिफारस केलेल्या पातळीच्या वर आवाज वाढवायचा?\n\nउच्च आवाजात दीर्घ काळ ऐकण्याने आपल्या श्रवणशक्तीची हानी होऊ शकते."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"प्रवेशयोग्यता शॉर्टकट वापरायचा?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"शॉर्टकट सुरू असताना, दोन्ही व्हॉल्यूम बटणे तीन सेकंदांसाठी दाबून ठेवल्याने अॅक्सेसिबिलिटी वैशिष्ट्य सुरू होईल."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"अॅक्सेसिबिलिटी वैशिष्ट्ये सुरू करायची आहेत का?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"दोन्ही व्हॉल्यूम की काही सेकंद धरून ठेवल्याने अॅक्सेसिबिलिटी वैशिष्ट्ये सुरू होतात. यामुळे तुमचे डिव्हाइस कसे काम करते हे पूर्णपणे बदलते.\n\nसध्याची वैशिष्ट्ये:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nतुम्ही हा शॉर्टकट सेटिंग्ज > अॅक्सेसिबिलिटी मध्ये बदलू शकता."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack सुरू करायचे आहे का?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"दोन्ही व्हॉल्यूम की काही सेकंद धरून ठेवल्याने अंधत्व असणार्या किंवा दृष्टी कमी असणार्या लोकांसाठी उपयुक्त असे TalkBack नावाचे स्क्रीन रीडर सुरू होते. TalkBack मुळे तुमचे डिव्हाइस कसे काम करते हे पूर्णपणे बदलते.\n\nतुम्ही हा शॉर्टकट सेटिंग्ज > अॅक्सेसिबिलिटी मध्ये इतर वैशिष्ट्यामध्ये बदलू शकता."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> सुरू करायची आहे का?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"दोन्ही व्हॉल्यूम की काही सेकंद धरून ठेवल्याने <xliff:g id="SERVICE">%1$s</xliff:g>, एक अॅक्सेसिबिलिटी वैशिष्ट्य सुरू होते. यामुळे तुमचे डिव्हाइस कसे काम करते हे पूर्णपणे बदलते.\n\nतुम्ही हा शॉर्टकट सेटिंग्ज > अॅक्सेसिबिलिटी मध्ये बदलू शकता."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"सुरू करा"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"सुरू करू नका"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> ला तुमचे डिव्हाइसच संपूर्णपणे नियंत्रित करायची अनुमती द्यायची का?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"तुम्ही <xliff:g id="SERVICE">%1$s</xliff:g> सुरू केल्यास, तुमचे डिव्हाइस डेटा एंक्रिप्शनमध्ये सुधारणा करण्यासाठी स्क्रीन लॉक वापरणार नाही."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"जी ॲप्स तुमच्या ॲक्सेसिबिलिटी गरजा पूर्ण करतात अशा ॲप्ससाठी संपूर्ण नियंत्रण योग्य आहे. पण ते सर्व ॲप्सना लागू होईल असे नाही."</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"अनुमती द्या"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"नकार द्या"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"वैशिष्ट्य वापरणे सुरू करण्यासाठी त्यावर टॅप करा:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"अॅक्सेसिबिलिटी बटणासोबत वापरायची असलेली ॲप्स निवडा"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"व्हॉल्यूम की शॉर्टकटसोबत वापरायची असलेली ॲप्स निवडा"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> बंद केले आहे"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"शॉर्टकट संपादित करा"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"पूर्ण झाले"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"शॉर्टकट वापरा"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"रंगांची उलटापालट"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"रंग सुधारणा"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"धरून ठेवलेल्या व्हॉल्यूम की. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> सुरू केला आहे."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"धरून ठेवलेल्या व्हॉल्यूम की. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> बंद केला आहे."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> वापरण्यासाठी दोन्ही व्हॉल्युम की तीन सेकंद दाबा आणि धरून ठेवा"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"तुम्ही अॅक्सेसिबिलिटी बटणावर टॅप केल्यास वापरण्यासाठी एक वैशिष्ट्य निवडा:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"अॅक्सेसिबिलिटी जेश्चरसोबत वापराचे असलेले वैशिष्ट्य निवडा (दोन बोटांनी स्क्रीनच्या तळापासून वर स्वाइप करा):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"अॅक्सेसिबिलिटी जेश्चरसोबत वापराचे असलेले वैशिष्ट्य निवडा (तीनन बोटांनी स्क्रीनच्या तळापासून वर स्वाइप करा):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"वैशिष्टयांदरम्यान स्विच करण्यासाठी अॅक्सेसिबिलिटी बटणाला स्पर्श करा आणि धरून ठेवा."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"वैशिष्टयांदरम्यान स्विच करण्यासाठी दोन बोटांनी वर स्वाइप करा आणि धरून ठेवा."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"वैशिष्टयांदरम्यान स्विच करण्यासाठी तीन बोटांनी वर स्वाइप करा आणि धरून ठेवा."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"मोठे करणे"</string> <string name="user_switched" msgid="7249833311585228097">"वर्तमान वापरकर्ता <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> वर स्विच करत आहे…"</string> @@ -2050,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> फायली</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> फाइल</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"शेअर करण्यासाठी कोणतीही शिफारस केलेले लोक नाहीत"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"अॅप्स सूची"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"या अॅपला रेकॉर्ड करण्याची परवानगी दिली गेली नाही पण हे USB डिव्हाइस वापरून ऑडिओ कॅप्चर केला जाऊ शकतो."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"होम"</string> @@ -2073,249 +2049,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"ऑफिस"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"वैयक्तिक दृश्य"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"कार्य दृश्य"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"हे ऑफिस ॲप्ससोबत शेअर करू शकत नाही"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"तुमचा IT अॅडमिन तुम्हाला हा आशय तुमच्या ऑफिस प्रोफाइलमधील अॅप्ससोबत शेअर करू देत नाही"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"हे ऑफिस अॅप्ससोबत उघडू शकत नाही"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"तुमचा IT अॅडमिन तुम्हाला हा आशय तुमच्या ऑफिस प्रोफाइलमधील अॅप्ससोबत उघडू देत नाही"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"हे वैयक्तिक अॅप्ससोबत शेअर करू शकत नाही"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"तुमचा IT अॅडमिन तुम्हाला हा आशय तुमच्या वैयक्तिक प्रोफाइलमधील अॅप्ससोबत शेअर करू देत नाही"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"हे वैयक्तिक अॅप्ससोबत उघडू शकत नाही"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"तुमचा IT अॅडमिन तुम्हाला हा आशय तुमच्या वैयक्तिक प्रोफाइलमधील अॅप्ससोबत उघडू देत नाही"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"ऑफिस प्रोफाइल थांबवली आहे"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"सुरू करा"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"टेलिफोनी कॉलमध्ये ऑडिओ रेकॉर्ड करा किंवा प्ले करा"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"टेलिफोनी कॉलमध्ये ऑडिओ रेकॉर्ड करण्याची किंवा प्ले करण्यासाठी डीफॉल्ट डायलर अॅप्लिकेशन म्हणून असाइन केले असताना या ॲपला परवानगी देते."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"ऑफिस अॅप्स या आशयाला सपोर्ट करू शकत नाही"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"ऑफिस अॅप्स हा आशय उघडू शकत नाही"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"वैयक्तिक अॅप्स या आशयाला सपोर्ट करू शकत नाही"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"वैयक्तिक अॅप्स हा आशय उघडू शकत नाही"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"सिम नेटवर्क अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM नेटवर्क सबसेट अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM कॉर्पोरेट अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM सेवा पुरवठादार अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK एंटर करा"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK एंटर करा"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK एंटर करा"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK एंटर करा"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK एंटर करा"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM network1 अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM network2 अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM hrpd अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM कॉर्पोरेट अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM सेवा पुरवठादार अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK एंटर करा"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK एंटर करा"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK एंटर करा"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK एंटर करा"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK एंटर करा"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK एंटर करा"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP इक्वीव्हॅलंट होम PLMN अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"नेटवर्क सबसेट सेवा पुरवठादार अनलॉक पिन"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM नेटवर्क अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM नेटवर्क सबसेट अनलॉक करण्याची विनंती करत आहे …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM सेवा पुरवठादार अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"SIM कॉर्पोरेट अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM network1 अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM network2 अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM hrpd अनलॉक करण्याची विंनती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM सेवा पुरवठादार अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM कॉर्पोरेट अनलॉक करण्याची विंनती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP इक्वीव्हॅलंट होम PLMN अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"नेटवर्क सबसेट सेवा पुरवठादार अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK अनलॉक करण्याची विनंती करत आहे…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM नेटवर्क अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM नेटवर्क सबसेट अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM सेवा पुरवठादार अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM कॉर्पोरेट अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM Network1 अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM Network2 अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM कॉर्पोरेट अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM सेवा पुरवठादार अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK अनलॉक करणे यशस्वी झाले नाही."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK अनलॉक करणे यशस्वी झाले नाही."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK अनलॉक करणे यशस्वी झाले नाही."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK अनलॉक करणे यशस्वी झाले नाही."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK अनलॉक करणे यशस्वी झाले नाही."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK अनलॉक करणे यशस्वी झाले नाही."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK अनलॉक करणे यशस्वी झाले नाही."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK अनलॉक करणे यशस्वी झाले नाही."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK अनलॉक करणे यशस्वी झाले नाही."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK अनलॉक करणे यशस्वी झाले नाही."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK अनलॉक करणे यशस्वी झाले नाही."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP इक्वीव्हॅलंट होम PLMN अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"नेटवर्क सबसेट सेवा पुरवठादार अनलॉक करण्याची विनंती यशस्वी झाली नाही."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM नेटवर्क अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM नेटवर्क सबसेट अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM सेवा पुरवठादार अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM कॉर्पोरेट अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM Network1 अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM Network2 अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM सेवा पुरवठादार अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM कॉर्पोरेट अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP इक्वीव्हॅलंट होम PLMN अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI अनलॉक करणे यशस्वी झाले."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"नेटवर्क सबसेट सेवा पुरवठादार अनलॉक करणे यशस्वी झाले."</string> </resources> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index 347c55b96ea9..b4d0fa3dac71 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Pentadbir melepaskan peranti untuk kegunaan peribadi"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Peranti ini diurus"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Organisasi anda mengurus peranti ini dan mungkin memantau trafik rangkaian. Ketik untuk mendapatkan butiran."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Tetapan lokasi diubah oleh pentadbir anda"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Ketik untuk melihat tetapan lokasi anda."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Apl boleh mengakses lokasi anda"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Hubungi pentadbir IT anda untuk mengetahui lebih lanjut"</string> <string name="country_detector" msgid="7023275114706088854">"Pengesan Negara"</string> <string name="location_service" msgid="2439187616018455546">"Perkhidmatan Lokasi"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Perkhidmatan Pemberitahuan Penderia"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Peranti anda akan dipadam"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Apl pentadbir tidak dapat digunakan. Peranti anda akan dipadamkan sekarang.\n\nJika anda ingin mengemukakan soalan, hubungi pentadbir organisasi anda."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Pencetakan dilumpuhkan oleh <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Nyahsekat apl peribadi anda"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Apl akan disekat esok"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Pentadbir IT anda tidak membenarkan profil kerja anda dijeda melebihi <xliff:g id="DAYS">%1$d</xliff:g> hari"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Hidupkan profil kerja"</string> <string name="me" msgid="6207584824693813140">"Saya"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Pilihan tablet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Pilihan Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Pilihan telefon"</string> <string name="global_action_lock" msgid="6949357274257655383">"Kunci skrin"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Matikan kuasa"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Kuasa"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Mulakan semula"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Kecemasan"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Laporan pepijat"</string> <string name="global_action_logout" msgid="6093581310002476511">"Tamatkan sesi"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"akses perintah tambahan pembekal lokasi"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Membenarkan apl mengakses arahan pembekal lokasi tambahan. Ini boleh membenarkan apl untuk campur tangan dengan operasi GPS atau sumber lokasi lain."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"akses lokasi tepat hanya di latar depan"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Apl ini boleh mendapatkan lokasi tepat anda hanya apabila apl tersebut berada di latar depan. Perkhidmatan lokasi mesti dihidupkan dan tersedia pada peranti anda untuk membolehkan apl menggunakan perkhidmatan tersebut. Tindakan ini mungkin meningkatkan penggunaan bateri."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Apl ini boleh mendapatkan lokasi tepat anda daripada perkhidmatan lokasi semasa apl ini sedang digunakan. Perkhidmatan lokasi untuk peranti anda mesti dihidupkan untuk apl mendapatkan lokasi. Hal ini mungkin meningkatkan penggunaan bateri."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"akses lokasi anggaran hanya di latar depan"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Apl ini boleh mendapatkan lokasi anggaran anda hanya apabila apl tersebut berada di latar depan. Perkhidmatan lokasi mesti dihidupkan dan tersedia pada peranti anda untuk membolehkan apl menggunakan perkhidmatan tersebut."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Apl ini boleh mendapatkan lokasi anggaran anda daripada perkhidmatan lokasi semasa apl ini sedang digunakan. Perkhidmatan lokasi untuk peranti anda mesti dihidupkan untuk apl mendapatkan lokasi."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"akses lokasi di latar belakang"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Apl ini boleh mengakses lokasi semasa berjalan di latar belakang, di samping akses lokasi di latar depan."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Apl ini boleh mengakses lokasi pada bila-bila masa, walaupun semasa apl tidak digunakan."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"tukar tetapan audio anda"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Membenarkan apl untuk mengubah suai tetapan audio global seperti kelantangan dan pembesar suara mana digunakan untuk output."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"rakam audio"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"ambil gambar dan video"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Apl ini boleh mengambil gambar dan merakam video menggunakan kamera pada bila-bila masa."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Benarkan aplikasi atau perkhidmatan mengakses kamera sistem untuk mengambil gambar dan video"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Apl terlindung atau apl sistem ini boleh mengambil gambar dan merakam video menggunakan kamera sistem pada bila-bila masa. Apl juga perlu mempunyai kebenaran android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Benarkan aplikasi atau perkhidmatan menerima panggilan balik tentang peranti kamera yang dibuka atau ditutup."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Apl ini boleh menerima panggilan balik apabila mana-mana peranti kamera dibuka (oleh aplikasi) atau ditutup."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kawal getaran"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Membenarkan apl mengawal penggetar."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Membenarkan apl mengakses keadaan penggetar."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Menyemak kandungan semasa"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> baharu"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Ketik untuk menyediakan"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Untuk memindahkan foto dan media"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Isu dengan <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Ketik untuk menyelesaikan masalah"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> rosak. Pilih untuk baiki."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> tidak disokong"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Peranti ini tidak menyokong <xliff:g id="NAME">%s</xliff:g> ini. Ketik untuk menyediakannya dalam format yang disokong."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Peranti ini tidak menyokong <xliff:g id="NAME">%s</xliff:g> ini. Pilih untuk menyediakan media dalam format yang disokong."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Peranti ini tidak menyokong <xliff:g id="NAME">%s</xliff:g> ini."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> ditanggalkan tanpa dijangka"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Keluarkan media sebelum menanggalkan media itu untuk mengelakkan kehilangan kandungan"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> dialih keluar"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Naikkan kelantangan melebihi paras yang disyokorkan?\n\nMendengar pada kelantangan yang tinggi untuk tempoh yang lama boleh merosakkan pendengaran anda."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gunakan Pintasan Kebolehaksesan?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Apabila pintasan dihidupkan, tindakan menekan kedua-dua butang kelantangan selama 3 saat akan memulakan ciri kebolehaksesan."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Hidupkan ciri kebolehaksesan?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Tindakan menahan kedua-dua kekunci kelantangan selama beberapa saat akan menghidupkan ciri kebolehaksesan. Hal ini mungkin mengubah cara peranti anda berfungsi.\n\nCiri semasa:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nAnda boleh menukar ciri yang dipilih dalam Tetapan > Kebolehaksesan."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Hidupkan TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Tindakan menahan kedua-dua kekunci kelantangan selama beberapa saat akan menghidupkan TalkBack, iaitu satu pembaca skrin yang membantu orang buta atau rabun. TalkBack mengubah sepenuhnya cara peranti anda berfungsi.\n\nAnda boleh menukar pintasan ini kepada ciri lain dalam Tetapan > Kebolehaksesan."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Hidupkan <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Tindakan menahan kedua-dua kekunci kelantangan selama beberapa saat akan menghidupkan <xliff:g id="SERVICE">%1$s</xliff:g>, iaitu satu ciri kebolehaksesan. Ini mungkin mengubah cara peranti anda berfungsi.\n\nAnda boleh menukar pintasan ini kepada ciri lain dalam Tetapan > Kebolehaksesan."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Hidupkan"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Jangan hidupkan"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Benarkan <xliff:g id="SERVICE">%1$s</xliff:g> mempunyai kawalan penuh atas peranti anda?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jika anda menghidupkan <xliff:g id="SERVICE">%1$s</xliff:g>, peranti anda tidak akan menggunakan kunci skrin anda untuk meningkatkan penyulitan data."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Kawalan penuh sesuai untuk apl yang membantu anda dengan keperluan kebolehaksesan tetapi bukan untuk kebanyakan apl."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Benarkan"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tolak"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ketik ciri untuk mula menggunakan ciri itu:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Pilih ciri untuk digunakan dengan butang kebolehaksesan"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Pilih ciri untuk digunakan dengan pintasan kekunci kelantangan"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> telah dimatikan"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit pintasan"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Selesai"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gunakan Pintasan"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Penyongsangan Warna"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Pembetulan Warna"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Kekunci kelantangan ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dihidupkan."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Kekunci kelantangan ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dimatikan."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Tekan dan tahan kedua-dua kekunci kelantangan selama tiga saat untuk menggunakan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Pilih ciri yang hendak digunakan apabila anda mengetik butang kebolehaksesan:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Pilih ciri untuk digunakan dengan gerak isyarat kebolehaksesan (leret ke atas dari bahagian bawah skrin menggunakan dua jari):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Pilih ciri untuk digunakan dengan gerak isyarat kebolehaksesan (leret ke atas dari bahagian bawah skrin menggunakan tiga jari):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Untuk beralih antara ciri, sentuh & tahan butang kebolehaksesan."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Untuk beralih antara ciri, leret ke atas menggunakan dua jari dan tahan."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Untuk beralih antara ciri, leret ke atas menggunakan tiga jari dan tahan."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Pembesaran"</string> <string name="user_switched" msgid="7249833311585228097">"Pengguna semasa <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Bertukar kepada <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fail</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> fail</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Tiada orang yang disyorkan untuk berkongsi"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Senarai apl"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Apl ini belum diberikan kebenaran merakam tetapi dapat merakam audio melalui peranti USB ini."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Skrin Utama"</string> @@ -2073,249 +2048,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"Kerja"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Paparan peribadi"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Paparan kerja"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Tidak dapat berkongsi kandungan ini dengan apl kerja"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"Pentadbir IT anda tidak membenarkan anda berkongsi kandungan ini dengan apl dalam profil kerja anda"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Tidak boleh membuka kandungan ini menggunakan apl kerja"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"Pentadbir IT anda tidak membenarkan anda membuka kandungan ini menggunakan apl dalam profil kerja anda"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Tidak boleh berkongsi kandungan ini dengan apl peribadi"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"Pentadbir IT anda tidak membenarkan anda berkongsi kandungan ini dengan apl dalam profil peribadi anda"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Tidak boleh membuka kandungan ini dengan apl peribadi"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"Pentadbir IT anda tidak membenarkan anda membuka kandungan ini menggunakan apl dalam profil peribadi anda"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Profil kerja dijeda"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"Hidupkan"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Rakam atau mainkan audio dalam panggilan telefoni"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Apabila ditetapkan sebagai apl pendail lalai, membenarkan apl ini merakam atau memainkan audio dalam panggilan telefoni."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"Tiada apl kerja yang boleh menyokong kandungan ini"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Tiada apl kerja yang boleh membuka kandungan ini"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Tiada apl peribadi yang boleh menyokong kandungan ini"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Tiada apl peribadi yang boleh membuka kandungan ini"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN buka kunci rangkaian SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN buka kunci subset rangkaian SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN buka kunci korporat SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN buka kunci penyedia perkhidmatan SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN buka kunci SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN buka kunci rangkaian1 RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN buka kunci rangkaian2 RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN buka kunci hrpd RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN buka kunci korporat RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN buka kunci penyedia perkhidmatan RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Pin buka kunci RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Masukkan PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN buka kunci SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN buka kunci PLMN Rumah Setara SP"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN buka kunci ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN buka kunci IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN buka kunci penyedia perkhidmatan subset rangkaian"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Meminta buka kunci rangkaian SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Meminta buka kunci subset rangkaian SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Meminta buka kunci penyedia perkhidmatan SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Meminta buka kunci korporat SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Meminta buka kunci PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Meminta buka kunci PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Meminta buka kunci PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Meminta buka kunci PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Meminta buka kunci PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Meminta buka kunci SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Meminta buka kunci rangkaian1 RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Meminta buka kunci rangkaian2 RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Meminta buka kunci hrpd RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Meminta buka kunci penyedia perkhidmatan RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Meminta buka kunci korporat RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Meminta buka kunci SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Meminta buka kunci PLMN Rumah Setara SP…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Meminta buka kunci ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Meminta buka kunci IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Meminta buka kunci penyedia perkhidmatan subset Rangkaian…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Meminta buka kunci RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Meminta buka kunci PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Meminta buka kunci PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Meminta buka kunci PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Meminta buka kunci PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Meminta buka kunci PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Meminta buka kunci PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Permintaan buka kunci Rangkaian SIM tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Permintaan buka kunci Subset Rangkaian SIM tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Permintaan buka kunci Penyedia Perkhidmatan SIM tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Permintaan buka kunci Korporat SIM tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Permintaan buka kunci SIM tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Permintaan buka kunci Rangkaian1 RUIM tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Permintaan buka kunci Rangkaian2 RUIM tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Permintaan buka kunci Hrpd RUIM tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Permintaan buka kunci Korporat RUIM tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Permintaan buka kunci Penyedia Perkhidmatan RUIM tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Permintaan buka kunci RUIM tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Buka kunci PUK tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Buka kunci PUK tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Buka kunci PUK tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Buka kunci PUK tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Buka kunci PUK tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Buka kunci PUK tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Buka kunci PUK tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Buka kunci PUK tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Buka kunci PUK tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Buka kunci PUK tidak berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Buka kunci PUK tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Permintaan buka kunci SPN tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Permintaan buka kunci PLMN Rumah Setara SP tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Permintaan buka kunci ICCID tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Permintaan buka kunci IMPI tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Permintaan buka kunci penyedia perkhidmatan subset rangkaian tidak berjaya."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Buka kunci Rangkaian SIM berjaya."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Buka kunci Subset Rangkaian SIM berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Buka kunci Penyedia Perkhidmatan SIM berjaya."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Buka kunci Korporat SIM berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Buka kunci SIM berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Buka kunci Rangkaian1 RUIM berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Buka kunci Rangkaian2 RUIM berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Buka kunci Hrpd RUIM berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Buka kunci Penyedia Perkhidmatan RUIM berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Buka kunci Korporat RUIM berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Buka kunci RUIM berjaya."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Buka kunci PUK berjaya."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Buka kunci PUK berjaya."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Buka kunci PUK berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Buka kunci PUK berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Buka kunci PUK berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Buka kunci PUK berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Buka kunci PUK berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Buka kunci PUK berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Buka kunci PUK berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Buka kunci PUK berjaya."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Buka kunci PUK berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Buka kunci SPN berjaya."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Buka kunci PLMN Rumah Setara SP berjaya."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Buka kunci ICCID berjaya."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Buka kunci IMPI berjaya."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Buka kunci penyedia perkhidmatan subset rangkaian berjaya."</string> </resources> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index ed6bfdb21306..f7107a48d612 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"ပုဂ္ဂိုလ်ရေးအသုံးပြုရန်အတွက် စီမံခန့်ခွဲသူက စက်ပစ္စည်းထိန်းချုပ်မှုကို ရပ်တန့်လိုက်သည်"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"စက်ပစ္စည်းကို စီမံခန့်ခွဲထားပါသည်"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"ဤစက်ပစ္စည်းကို သင်၏ အဖွဲ့အစည်းက စီမံပြီး ကွန်ရက်အသွားအလာကို စောင့်ကြည့်နိုင်ပါသည်။ ထပ်မံလေ့လာရန် တို့ပါ။"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"သင့်စီမံခန့်ခွဲသူက တည်နေရာပြ ဆက်တင်များကို ပြောင်းထားသည်"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"သင့်တည်နေရာပြ ဆက်တင်များကို ကြည့်ရန် တို့ပါ။"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"အက်ပ်များက သင်၏တည်နေရာကို ကြည့်နိုင်သည်"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"ပိုမိုလေ့လာရန် သင်၏ IT စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ"</string> <string name="country_detector" msgid="7023275114706088854">"နိုင်ငံ ရှာဖွေစနစ်"</string> <string name="location_service" msgid="2439187616018455546">"တည်နေရာဝန်ဆောင်မှု"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"အာရုံခံကိရိယာ အကြောင်းကြားချက် ဝန်ဆောင်မှု"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"သင့်ကိရိယာအား ပယ်ဖျက်လိမ့်မည်"</string> <string name="factory_reset_message" msgid="2657049595153992213">"စီမံခန့်ခွဲမှု အက်ပ်ကို သုံး၍မရပါ။ သင်၏ စက်ပစ္စည်းအတွင်းရှိ အရာများကို ဖျက်လိုက်ပါမည်\n\nမေးစရာများရှိပါက သင့်အဖွဲ့အစည်း၏ စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> က ပုံနှိပ်ထုတ်ယူခြင်းကို ပိတ်ထားသည်။"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"ကိုယ်ပိုင်အက်ပ်ပြန်ဖွင့်ခြင်း"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"အက်များကို မနက်ဖြန်ပိတ်မည်"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"သင့်အလုပ်ပရိုဖိုင်ကို <xliff:g id="DAYS">%1$d</xliff:g> ရက်ထက်ပိုပြီး ခဏရပ်ထားရန် သင်၏ IT စီမံခန့်ခွဲသူက ခွင့်မပြုပါ"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"အလုပ်ပရိုဖိုင် ဖွင့်ရန်"</string> <string name="me" msgid="6207584824693813140">"ကျွန်ုပ်"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tabletဆိုင်ရာရွေးချယ်မှုများ"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ရွေးချယ်စရာများ"</string> @@ -239,15 +235,13 @@ <string name="global_actions" product="tablet" msgid="4412132498517933867">"Tabletဆိုင်ရာရွေးချယ်မှုများ"</string> <string name="global_actions" product="tv" msgid="3871763739487450369">"Android TV ရွေးချယ်စရာများ"</string> <string name="global_actions" product="default" msgid="6410072189971495460">"ဖုန်းဆိုင်ရာရွေးချယ်မှုများ"</string> - <string name="global_action_lock" msgid="6949357274257655383">"ဖန်သားပြင် လော့ခ်ချခြင်း"</string> + <string name="global_action_lock" msgid="6949357274257655383">"ဖန်သားပြင် လော့ခ်ချရန်"</string> <string name="global_action_power_off" msgid="4404936470711393203">"ပါဝါပိတ်ရန်"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"ပါဝါ"</string> + <string name="global_action_restart" msgid="4678451019561687074">"ပြန်စရန်"</string> <string name="global_action_emergency" msgid="1387617624177105088">"အရေးပေါ်"</string> - <string name="global_action_bug_report" msgid="5127867163044170003">"အမှားရှာဖွေပြင်ဆင်မှုမှတ်တမ်း"</string> - <string name="global_action_logout" msgid="6093581310002476511">"သတ်မှတ်ပေးထားသည့်အချိန် ပြီးဆုံးပြီ"</string> + <string name="global_action_bug_report" msgid="5127867163044170003">"အမှားရှာပြင် မှတ်တမ်း"</string> + <string name="global_action_logout" msgid="6093581310002476511">"စက်ရှင် ပြီးဆုံးပြီ"</string> <string name="global_action_screenshot" msgid="2610053466156478564">"ဖန်သားပြင်ဓာတ်ပုံ"</string> <string name="bugreport_title" msgid="8549990811777373050">"အမှားပြင် အစီရင်ခံစာ"</string> <string name="bugreport_message" msgid="5212529146119624326">"သင့်ရဲ့ လက်ရှိ စက်အခြေအနေ အချက်အလက်များကို အီးမေးလ် အနေဖြင့် ပေးပို့ရန် စုဆောင်းပါမည်။ အမှားရှာဖွေပြင်ဆင်မှုမှတ်တမ်းမှ ပေးပို့ရန် အသင့်ဖြစ်သည်အထိ အချိန် အနည်းငယ်ကြာမြင့်မှာ ဖြစ်သဖြင့် သည်းခံပြီး စောင့်ပါရန်"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"တည်နေရာပံ့ပိုးမှုညွှန်ကြားချက်အပိုအား ဝင်ရောက်ကြည့်ခြင်း"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"အက်ပ်အား တည်နေရာ စီမံပေးရေး ညွှန်ကြားချက် အပိုများကို ရယူခွင့်ပြုသည်။ သို့ဖြစ်၍ အက်ပ်သည် GPS သို့မဟုတ် အခြား တည်နေရာ ရင်းမြစ်ကို သုံးကြသူတို့၏ လုပ်ငန်းများကို ဝင်စွက်ခွင့် ပြုနိုင်သည်။"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"မျက်နှာစာတွင်သာ တည်နေရာအတိအကျ အသုံးပြုခြင်း"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"မျက်နှာစာတွင် ဖွင့်ထားမှသာ ဤအက်ပ်က သင်၏ တည်နေရာအတိအကျကို ရယူနိုင်ပါသည်။ သင်၏ စက်တွင် အက်ပ်ကအသုံးပြုရန်အတွက် တည်နေရာဝန်ဆောင်မှုများကို ဖွင့်ထားပြီးမှ အသုံးပြု၍ ရပါမည်။ ၎င်းက ဘက်ထရီ ပိုကုန်နိုင်ပါသည်။"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"အက်ပ်ကို အသုံးပြုနေစဉ် ဤအက်ပ်သည် တည်နေရာဝန်ဆောင်မှုများမှနေ၍ သင့်တည်နေရာအတိအကျကို ရယူနိုင်သည်။ အက်ပ်က တည်နေရာရရှိနိုင်ရန် သင့်စက်အတွက် တည်နေရာဝန်ဆောင်မှုများကို ဖွင့်ထားရပါမည်။ ၎င်းသည် ဘက်ထရီအသုံးပြုမှု ပိုများနိုင်သည်။"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"မျက်နှာစာတွင်သာ ခန့်မှန်းခြေ တည်နေရာ အသုံးပြုခြင်း"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"မျက်နှာစာတွင် ဖွင့်ထားမှသာ ဤအက်ပ်က သင်၏ အနီးစပ်ဆုံးတည်နေရာကို ရယူနိုင်ပါသည်။ အက်ပ်က ဤတည်နေရာဝန်ဆောင်မှုများကို အသုံးပြုရန်အတွက် သင်၏စက်တွင် ၎င်းတို့ရှိနေပြီး ဖွင့်ထားရပါမည်။"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"အက်ပ်ကို အသုံးပြုနေစဉ် ဤအက်ပ်သည် တည်နေရာဝန်ဆောင်မှုများမှနေ၍ သင့်တည်နေရာခန့်မှန်းခြေကို ရယူနိုင်သည်။ အက်ပ်က တည်နေရာရရှိနိုင်ရန် သင့်စက်အတွက် တည်နေရာဝန်ဆောင်မှုများကို ဖွင့်ထားရပါမည်။"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"နောက်ခံတွင် တည်နေရာကို အသုံးပြုရန်"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"နောက်ခံတွင် လုပ်ဆောင်နေစဉ် ဤအက်ပ်က တည်နေရာကို ရယူအသုံးပြုနိုင်သည်သာမက မျက်နှာစာတည်နေရာကိုပါ အသုံးပြုနိုင်မည်။"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"အက်ပ်ကို အသုံးပြုနေခြင်းမရှိသည့်အခါတွင်ပင် ဤအက်ပ်သည် သင့်တည်နေရာကို အချိန်မရွေး အသုံးပြုနိုင်သည်။"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"သင့်အသံအပြင်အဆင်အားပြောင်းခြင်း"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"အပလီကေးရှင်းအား အသံအတိုးအကျယ်နှင့် အထွက်ကို မည်သည့်စပီကာကို သုံးရန်စသည်ဖြင့် စက်တစ်ခုလုံးနှင့်ဆိုင်သော အသံဆိုင်ရာ ဆက်တင်များ ပြင်ဆင်ခွင့် ပြုရန်"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"အသံဖမ်းခြင်း"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"ဓါတ်ပုံနှင့်ဗွီဒီယိုရိုက်ခြင်း"</string> <string name="permdesc_camera" msgid="1354600178048761499">"ဤအက်ပ်သည် ကင်မရာကို အသုံးပြု၍ ဓာတ်ပုံနှင့် ဗီဒီယိုများကို အချိန်မရွေး ရိုက်ကူးနိုင်ပါသည်။"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"ဓာတ်ပုံနှင့် ဗီဒီယိုများရိုက်ရန်အတွက် စနစ်ကင်မရာများကို အက်ပ် သို့မဟုတ် ဝန်ဆောင်မှုအား အသုံးပြုခွင့်ပေးခြင်း"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"ဤခွင့်ပြုထားသည့် သို့မဟုတ် စနစ်အက်ပ်က စနစ်ကင်မရာအသုံးပြုပြီး ဓာတ်ပုံနှင့် ဗီဒီယိုများကို အချိန်မရွေး ရိုက်ကူးနိုင်သည်။ အက်ပ်ကလည်း android.permission.CAMERA ခွင့်ပြုချက် ရှိရပါမည်"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"ကင်မရာစက်များ ပွင့်နေခြင်း သို့မဟုတ် ပိတ်နေခြင်းနှင့် ပတ်သက်ပြီး ပြန်လည်ခေါ်ဆိုမှုများ ရယူရန် အပလီကေးရှင်း သို့မဟုတ် ဝန်ဆောင်မှုကို ခွင့်ပြုခြင်း။"</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"(မည်သည့် အပလီကေးရှင်းကြောင့်) ကင်မရာစက်တစ်ခုခု ပွင့်နေသည့်အခါ သို့မဟုတ် ပိတ်နေသည့်အခါ ဤအက်ပ်က ပြန်လည်ခေါ်ဆိုမှုများ ရယူနိုင်သည်။"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"တုန်ခုန်မှုအား ထိန်းချုပ်ခြင်း"</string> @@ -1349,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"လက်ရှိ အကြောင်းအရာကို ပြန်လည်သုံးသပ်နေသည်"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> အသစ်"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"စနစ်ထည့်သွင်းရန် တို့ပါ"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ဓာတ်ပုံနှင့် မီဒီယာများ လွှဲပြောင်းရန်အတွက်"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> တွင် ပြဿနာရှိနေသည်"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"ပြင်ဆင်ရန်အတွက် ထိလိုက်ပါ"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> ပျက်နေပါသည်။ ပြင်ရန် ရွေးချယ်ပါ။"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"ပံ့ပိုးထားခြင်း မရှိသော <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"ဤစက်ပစ္စည်းတွင် <xliff:g id="NAME">%s</xliff:g> ကိုအသုံးပြု၍မရပါ။ အသုံးပြု၍ရသော စနစ်ပုံစံသို့သတ်မှတ်ရန် တို့ပါ။"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"ဤစက်ပစ္စည်းတွင် <xliff:g id="NAME">%s</xliff:g> ကို ပံ့ပိုးမထားပါ။ ပံ့ပိုးသည့်ပုံစံတစ်ခုအဖြစ် စနစ်ထည့်သွင်းရန် ရွေးချယ်ပါ။"</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"ဤစက်သည် ဤ <xliff:g id="NAME">%s</xliff:g> ကို မပံ့ပိုးပါ။"</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> မမျှော်လင့်ဘဲ ဖယ်ရှားခဲ့သည်"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"အကြောင်းအရာ မဆုံးရှုံးစေရန် မီဒီယာကို မဖယ်ရှားမီ ဦးစွာထုတ်လိုက်ပါ"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> ဖယ်ရှားလိုက်ပါပြီ"</string> @@ -1623,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"အသံကို အကြံပြုထားသည့် ပမာဏထက် မြှင့်ပေးရမလား?\n\nအသံကို မြင့်သည့် အဆင့်မှာ ကြာရှည်စွာ နားထောင်ခြင်းက သင်၏ နားကို ထိခိုက်စေနိုင်သည်။"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"အများသုံးစွဲနိုင်မှု ဖြတ်လမ်းလင့်ခ်ကို အသုံးပြုလိုပါသလား။"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ဖြတ်လမ်းလင့်ခ်ကို ဖွင့်ထားစဉ် အသံထိန်းခလုတ် နှစ်ခုစလုံးကို ၃ စက္ကန့်ခန့် ဖိထားခြင်းဖြင့် အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုကို ဖွင့်နိုင်သည်။"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုများ ဖွင့်မလား။"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"အသံခလုတ်နှစ်ခုလုံးကို စက္ကန့်အနည်းငယ် ဖိထားခြင်းက အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုများ ဖွင့်ပေးသည်။ ဤလုပ်ဆောင်ချက်က သင့်စက်အလုပ်လုပ်ပုံကို ပြောင်းလဲနိုင်သည်။\n\nလက်ရှိ ဝန်ဆောင်မှုများ-\n<xliff:g id="SERVICE">%1$s</xliff:g>\n\'ဆက်တင်များ > အများသုံးစွဲနိုင်မှု\' တွင် ရွေးထားသည့် ဝန်ဆောင်မှုများကို ပြောင်းနိုင်သည်။"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack ဖွင့်မလား။"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"အသံခလုတ်နှစ်ခုလုံးကို စက္ကန့်အနည်းငယ် ဖိထားခြင်းက မျက်စိမမြင်ရသော သို့မဟုတ် အမြင်အာရုံ ချို့တဲ့သော သူများအတွက် အသုံးဝင်သည့် ဖန်သားပြင်ဖတ် အက်ပ်ဖြစ်သော Talkback ကို ဖွင့်ပေးသည်။ TalkBack က သင့်စက်အလုပ်လုပ်ပုံကို လုံးဝ ပြောင်းလဲလိုက်သည်။\n\nဤဖြတ်လမ်းလင့်ခ်ကို \'ဆက်တင်များ > အများသုံးစွဲနိုင်မှု\' တွင် နောက်ဝန်ဆောင်မှုတစ်ခုသို့ ပြောင်းနိုင်သည်။"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> ဖွင့်မလား။"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"အသံခလုတ်နှစ်ခုလုံးကို စက္ကန့်အနည်းငယ် ဖိထားခြင်းက အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုဖြစ်သော <xliff:g id="SERVICE">%1$s</xliff:g> ကို ဖွင့်ပေးသည်။ ဤလုပ်ဆောင်ချက်က သင့်စက်အလုပ်လုပ်ပုံကို ပြောင်းလဲနိုင်သည်။\n\nဤဖြတ်လမ်းလင့်ခ်ကို \'ဆက်တင်များ > အများသုံးစွဲနိုင်မှု\' တွင် နောက်ဝန်ဆောင်မှုတစ်ခုသို့ ပြောင်းနိုင်သည်။"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ဖွင့်ရန်"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"မဖွင့်ပါနှင့်"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> ကို သင့်စက်အား အပြည့်အဝထိန်းချုပ်ခွင့် ပေးလိုပါသလား။"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> ဖွင့်လိုက်ပါက သင်၏စက်သည် ဒေတာအသွင်ဝှက်ခြင်း ပိုကောင်းမွန်စေရန် သင့်ဖန်သားပြင်လော့ခ်ကို သုံးမည်မဟုတ်ပါ။"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"အများသုံးစွဲနိုင်မှု လိုအပ်ချက်များအတွက် အထောက်အကူပြုသည့် အက်ပ်များကို အပြည့်အဝထိန်းချုပ်ခြင်းသည် သင့်လျော်သော်လည်း အက်ပ်အများစုအတွက် မသင့်လျော်ပါ။"</string> @@ -1651,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ခွင့်ပြု"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ပယ်ရန်"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ဝန်ဆောင်မှုကို စတင်အသုံးပြုရန် တို့ပါ−"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"အများသုံးစွဲနိုင်မှု ခလုတ်ဖြင့် အသုံးပြုရန် ဝန်ဆောင်မှုများကို ရွေးပါ"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"အသံခလုတ် ဖြတ်လမ်းလင့်ခ်ဖြင့် အသုံးပြုရန် ဝန်ဆောင်မှုများကို ရွေးပါ"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ကို ပိတ်ထားသည်"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ဖြတ်လမ်းများကို တည်းဖြတ်ရန်"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ပြီးပြီ"</string> @@ -1662,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ဖြတ်လမ်းလင့်ခ်ကို သုံးရန်"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"အရောင် ပြောင်းပြန်လှန်ခြင်း"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"အရောင်ပြင်ဆင်ခြင်း"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"အသံခလုတ်များကို ဖိထားသည်။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ဖွင့်လိုက်သည်။"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"အသံခလုတ်များကို ဖိထားသည်။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ပိတ်လိုက်သည်။"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ကို သုံးရန် အသံအတိုးအလျှော့ ခလုတ်နှစ်ခုလုံးကို သုံးစက္ကန့်ကြာ ဖိထားပါ"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"အများသုံးစွဲနိုင်မှု ခလုတ်ကို တို့သည့်အခါ အသုံးပြုမည့် ဝန်ဆောင်မှုကို ရွေးချယ်ပါ−"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"အများသုံးစွဲနိုင်မှုလက်ဟန်ဖြင့် အသုံးပြုရန် ဝန်ဆောင်မှုတစ်ခုကို ရွေးပါ (ဖန်သားပြင်အောက်ခြေမှနေ၍ လက်နှစ်ချောင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပါ)-"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"အများသုံးစွဲနိုင်မှုလက်ဟန်ဖြင့် အသုံးပြုရန် ဝန်ဆောင်မှုတစ်ခုကို ရွေးပါ (ဖန်သားပြင်အောက်ခြေမှနေ၍ လက်သုံးချောင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပါ)-"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"ဝန်ဆောင်မှုများအကြား ပြောင်းရန် အများသုံးစွဲနိုင်မှုခလုတ်ကို ဖိထားပါ။"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"ဝန်ဆောင်မှုများအကြား ပြောင်းရန် လက်နှစ်ချောင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပြီး ဖိထားပါ။"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"ဝန်ဆောင်မှုများအကြား ပြောင်းရန် လက်သုံးချောင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပြီး ဖိထားပါ။"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ချဲ့ခြင်း"</string> <string name="user_switched" msgid="7249833311585228097">"လက်ရှိအသုံးပြုနေသူ <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>သို့ ပြောင်းနေ…"</string> @@ -2049,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> ဖိုင်</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> ဖိုင်</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"မျှဝေရန် အကြံပြုထားသူများ မရှိပါ"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"အက်ပ်စာရင်း"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"ဤအက်ပ်ကို အသံဖမ်းခွင့် ပေးမထားသော်လည်း ၎င်းသည် ဤ USB စက်ပစ္စည်းမှတစ်ဆင့် အသံများကို ဖမ်းယူနိုင်ပါသည်။"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"ပင်မစာမျက်နှာ"</string> @@ -2086,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"ဤအကြောင်းအရာကို အလုပ်သုံးအက်ပ်များက ဖွင့်၍မရပါ"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"ဤအကြောင်းအရာကို ကိုယ်ပိုင်အက်ပ်များက မပံ့ပိုးနိုင်ပါ"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"ဤအကြောင်းအရာကို ကိုယ်ပိုင်အက်ပ်များက ဖွင့်၍မရပါ"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ဖုန်းခေါ်ဆိုမှုများအတွင်း အသံဖမ်းခြင်း သို့မဟုတ် ဖွင့်ခြင်း"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ဤအက်ပ်အား မူလ dialer အပလီကေးရှင်းအဖြစ် သတ်မှတ်ထားစဉ် ဖုန်းခေါ်ဆိုမှုများအတွင်း အသံဖမ်းခြင်း သို့မဟုတ် ဖွင့်ခြင်း ပြုလုပ်ရန် ခွင့်ပြုပါ။"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"ဆင်းမ်ကွန်ရက် လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"ဆင်းမ်ကွန်ရက်ခွဲ လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"ဆင်းမ်ကော်ပိုရိတ် လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"ဆင်းမ်ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"ဆင်းမ်လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK ထည့်ရန်"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK ထည့်ရန်"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK ထည့်ရန်"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK ထည့်ရန်"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK ထည့်ရန်"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM ကွန်ရက် ၁ လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM ကွန်ရက် ၂ လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM hrpd လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM ကော်ပိုရိတ် လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK ထည့်ရန်"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK ထည့်ရန်"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK ထည့်ရန်"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK ထည့်ရန်"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK ထည့်ရန်"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK ထည့်ရန်"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"ကွန်ရက်ခွဲ ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်ရန် ပင်နံပါတ်"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"ဆင်းမ်ကွန်ရက် လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"ဆင်းမ်ကွန်ရက်ခွဲ လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည် …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"ဆင်းမ်ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"ဆင်းမ်ကော်ပိုရိတ် လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"ဆင်းမ်လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM ကွန်ရက် ၁ လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM ကွန်ရက် ၂ လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM hrpd လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM ကော်ပိုရိတ် လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP Equivalent Home PLMN လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"ကွန်ရက်ခွဲ ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK လော့ခ်ဖွင့်ရန် တောင်းဆိုနေသည်…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"ဆင်းမ်ကွန်ရက် လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"ဆင်းမ်ကွန်ရက်ခွဲ လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"ဆင်းမ်ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"ဆင်းမ်ကော်ပိုရိတ် လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"ဆင်းမ်လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM ကွန်ရက် ၁ လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM ကွန်ရက် ၂ လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM ကော်ပိုရိတ် လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"ကွန်ရက်ခွဲ ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ။"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"ဆင်းမ်ကွန်ရက် လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"ဆင်းမ်ကွန်ရက်ခွဲ လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"ဆင်းမ်ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်၍ ရပါပြီ ။"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"ဆင်းမ်ကော်ပိုရိတ် လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"ဆင်းမ်လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM ကွန်ရက် ၁ လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM ကွန်ရက် ၂ လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM ကော်ပိုရိတ် လော့ခ်ဖွင့်၍ မရပါ။"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"ကွန်ရက်ခွဲ ဝန်ဆောင်မှုပေးသူ လော့ခ်ဖွင့်၍ ရပါပြီ။"</string> </resources> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 7cbdc0fc20c6..6d78f8900cca 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administratoren overførte enheten til personlig bruk"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Enheten administreres"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Organisasjonen din kontrollerer denne enheten og kan overvåke nettverkstrafikk. Trykk for å få mer informasjon."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Posisjonsinnstillingene er endret av administratoren din"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Trykk for å se posisjonsinnstillingene dine."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Apper har tilgang til posisjonen din"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Kontakt IT-administratoren din for å finne ut mer"</string> <string name="country_detector" msgid="7023275114706088854">"Landsoppdagelse"</string> <string name="location_service" msgid="2439187616018455546">"Posisjonstjeneste"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Enheten blir slettet"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Administratorappen kan ikke brukes. Enheten din blir nå tømt.\n\nTa kontakt med administratoren for organisasjonen din hvis du har spørsmål."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> har slått av utskrift."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Ikke blokkér personlige apper"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Apper blir blokkert i morgen"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT-administratoren din tillater ikke at jobbprofilen din blir satt på pause i mer enn <xliff:g id="DAYS">%1$d</xliff:g> dager"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Slå på jobbprofilen"</string> <string name="me" msgid="6207584824693813140">"Meg"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Innstillinger for nettbrettet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV-alternativer"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Telefoninnstillinger"</string> <string name="global_action_lock" msgid="6949357274257655383">"Lås skjermen"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Slå av"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Strøm"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Start på nytt"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Nødssituasjon"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Feilrapport"</string> <string name="global_action_logout" msgid="6093581310002476511">"Avslutt økten"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"bruke ekstra posisjonskommandoer"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Appen gis tillatelse til å bruke ekstra kommandoer fra posisjonsleverandører. Dette kan gi appen tillatelse til å påvirke bruken av GPS eller andre posisjonskilder."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"bare tilgang til nøyaktig posisjon i forgrunnen"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Denne appen kan bare få den nøyaktige posisjonen din når den er på i forgrunnen. Posisjonstjenestene må være slått på og tilgjengelige på enheten din for at appen skal kunne bruke dem. Dette kan øke batteriforbruket."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Denne appen kan få den nøyaktige posisjonen din fra posisjonstjenestene når den er i bruk. Posisjonstjenestene for enheten må være slått på for at appen skal få posisjonen. Dette kan øke batteribruken."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"bare tilgang til omtrentlig posisjon i forgrunnen"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Denne appen kan bare få den omtrentlige posisjonen din når den er i forgrunnen. Posisjonstjenestene må være slått på og tilgjengelige på enheten din for at appen skal kunne bruke dem."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Denne appen kan få den omtrentlige posisjonen din fra posisjonstjenestene når den er i bruk. Posisjonstjenestene for enheten må være slått på for at appen skal få posisjonen."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"tilgang til posisjon i bakgrunnen"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Denne appen har tilgang til posisjon når den kjører i bakgrunnen, i tillegg til tilgang til posisjonen i forgrunnen."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Denne appen har tilgang til posisjonen til enhver tid, selv når appen ikke er i bruk."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"endre lydinnstillinger"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Lar appen endre globale lydinnstillinger slik som volum og hvilken høyttaler som brukes for lydavspilling."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ta opp lyd"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"ta bilder og videoer"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Denne appen kan når som helst ta bilder og spille inn videoer ved hjelp av kameraet."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Gi en app eller tjeneste tilgang til systemkameraene for å ta bilder og spille inn videoer"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Denne privilegerte appen eller systemappen kan når som helst ta bilder og spille inn videoer med et systemkamera. Dette krever at appen også har tillatelsen android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Tillat at en app eller tjeneste mottar tilbakekallinger om kameraenheter som åpnes eller lukkes."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Denne appen kan motta tilbakekallinger når en kameraenhet blir åpnet (av hvilken app) eller lukket."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kontrollere vibreringen"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Lar appen kontrollere vibreringsfunksjonen."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Gir appen tilgang til vibreringstilstanden."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Gjennomgår nåværende innhold"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Ny <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Trykk for å konfigurere"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"For overføring av bilder og medier"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problem med <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Trykk for å løse problemet"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> er skadet. Velg for å fikse."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> som ikke støttes"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Denne enheten støtter ikke <xliff:g id="NAME">%s</xliff:g>. Trykk for å konfigurere i et støttet format."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Denne enheten støtter ikke dette <xliff:g id="NAME">%s</xliff:g>. Velg for å konfigurere i et støttet format."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Denne enheten støtter ikke <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> ble uventet fjernet"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Løs ut media før det tas ut for å unngå tap av innhold"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> er fjernet"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vil du øke volumet til over anbefalt nivå?\n\nHvis du hører på et høyt volum over lengre perioder, kan det skade hørselen din."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vil du bruke tilgjengelighetssnarveien?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Når snarveien er på, starter en tilgjengelighetsfunksjon når du trykker inn begge volumknappene i tre sekunder."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Vil du slå på tilgjengelighetsfunksjoner?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Hvis du holder inne volumtastene i noen sekunder, slås tilgjengelighetsfunksjoner på. Dette kan endre hvordan enheten din fungerer.\n\nNåværende funksjoner:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nDu kan endre valgte funksjoner i Innstillinger > Tilgjengelighet."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Vil du slå på TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Hvis du holder inne begge volumtastene, slår du på TalkBack, en skjermleser som er nyttig for folk som er blinde eller har nedsatt synsevne. TalkBack endrer fullstendig hvordan enheten din fungerer.\n\nDu kan endre denne snarveien til en annen funksjon i Innstillinger > Tilgjengelighet."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Vil du slå på <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Hvis du holder inne begge volumtastene i noen sekunder, slår du på <xliff:g id="SERVICE">%1$s</xliff:g>, en tilgjengelighetsfunksjon. Dette kan endre hvordan enheten din fungerer.\n\nDu kan endre denne snarveien til en annen funksjon i Innstillinger > Tilgjengelighet."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Slå på"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ikke slå på"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vil du gi <xliff:g id="SERVICE">%1$s</xliff:g> full kontroll over enheten din?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Hvis du slår på <xliff:g id="SERVICE">%1$s</xliff:g>, bruker ikke enheten skjermlåsen til å forbedre datakryptering."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full kontroll er passende for apper som hjelper deg med tilgjengelighetsbehov, men ikke for de fleste apper."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Tillat"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Avvis"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Trykk på en funksjon for å begynne å bruke den:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Velg funksjonene du vil bruke med Tilgjengelighet-knappen"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Velg funksjonene du vil bruke med volumtastsnarveien"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> er slått av"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Endre snarveier"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Ferdig"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Bruk snarveien"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Fargeinvertering"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Fargekorrigering"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått på."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått av."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Trykk og hold inne begge volumtastene i tre sekunder for å bruke <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Velg en funksjon du vil bruke når du trykker på Tilgjengelighet-knappen:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Velg en funksjon du vil bruke med tilgjengelighetsbevegelsen (sveip opp fra bunnen av skjermen med to fingre):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Velg en funksjon du vil bruke med tilgjengelighetsbevegelsen (sveip opp fra bunnen av skjermen med tre fingre):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"For å bytte mellom funksjoner, trykk og hold på Tilgjengelighet-knappen."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"For å bytte mellom funksjoner, sveip opp med to fingre og hold."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"For å bytte mellom funksjoner, sveip opp med tre fingre og hold."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Forstørring"</string> <string name="user_switched" msgid="7249833311585228097">"Gjeldende bruker: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Bytter til <xliff:g id="NAME">%1$s</xliff:g> …"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> filer</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> fil</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Det finnes ingen anbefalte personer å dele med"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Appliste"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Denne appen har ikke fått tillatelse til å spille inn, men kan ta opp lyd med denne USB-enheten."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Start"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Ingen jobbapper kan åpne dette innholdet"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Ingen personlige apper støtter dette innholdet"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Ingen personlige apper kan åpne dette innholdet"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Ta opp eller spill av lyd i telefonsamtaler"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Tillater at denne appen tar opp eller spiller av lyd i telefonsamtaler når den er angitt som standard ringeapp."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN-kode for å fjerne operatørlåser"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN-kode for å fjerne bestemte operatørlåser"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN-kode for å låse opp SIM-kort for bedrifter"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN-kode for å låse opp SIM-tjenesteleverandør"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN-kode for å låse opp SIM-kort"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Angi PUK-koden"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Angi PUK-koden"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Angi PUK-koden"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Angi PUK-koden"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Angi PUK-koden"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN-kode for å låse opp RUIM network1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN-kode for å låse opp RUIM network2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN-kode for å låse opp RUIM hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN-kode for å låse opp RUIM for bedrifter"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN-kode for å låse opp RUIM-tjenesteleverandører"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN-kode for å låse opp RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Angi PUK-koden"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Angi PUK-koden"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Angi PUK-koden"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Angi PUK-koden"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Angi PUK-koden"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Angi PUK-koden"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN-kode for å låse opp SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN-kode for å låse opp SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN-kode for å låse opp ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN-kode for å låse opp IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN-kode for fjerning av bestemte operatørlåser"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Ber om fjerning av operatørlåser …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Ber om fjerning av bestemte operatørlåser …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Ber om opplåsing av SIM-tjenesteleverandør …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Ber om opplåsing av SIM-kort for bedrifter …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Ber om PUK-opplåsing …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Ber om PUK-opplåsing …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Ber om PUK-opplåsing …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Ber om PUK-opplåsing …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Ber om PUK-opplåsing …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Ber om å låse opp SIM-kort …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Ber om opplåsing av RUIM network1 …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Ber om opplåsing av RUIM network2 …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Ber om opplåsing av RUIM hrpd …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Ber om å opplåsing av RUIM-tjenesteleverandører …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Ber om opplåsing av RUIM for bedrifter …"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Ber om SPN-opplåsing …"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Ber om opplåsing av SP Equivalent Home PLMN …"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Ber om ICCID-opplåsing …"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Ber om IMPI-opplåsing …"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Ber om fjerning av bestemte operatørlåser …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Ber om opplåsing av RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Ber om PUK-opplåsing …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Ber om PUK-opplåsing …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Ber om PUK-opplåsing …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Ber om PUK-opplåsing …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Ber om PUK-opplåsing …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Ber om PUK-opplåsing …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Forespørselen om å fjerne operatørlåser mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Forespørselen om å fjerne bestemte operatørlåser mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Forespørselen om å låse opp SIM-tjenesteleverandør mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Forespørselen om å låse opp SIM-kort for bedrifter mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Forespørselen om å låse opp SIM-kort mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Forespørselen om å låse opp RUIM Network1 mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Forespørselen om å låse opp RUIM Network2 mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Forespørselen om å låse opp RUIM Hrpd mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Forespørselen om å låse opp RUIM for bedrifter mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Forespørselen om å låse opp RUIM-tjenesteleverandører mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Forespørselen om å låse opp RUIM mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK-opplåsingen mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK-opplåsingen mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK-opplåsingen mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK-opplåsingen mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK-opplåsingen mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK-opplåsingen mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK-opplåsingen mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK-opplåsingen mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK-opplåsingen mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK-opplåsingen mislyktes."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK-opplåsingen mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Forespørselen om å låse opp SPN mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Forespørselen om å låse opp SP Equivalent Home PLMN mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Forespørselen om å låse opp ICCID mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Forespørselen om å låse opp IMPI mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Forespørselen om fjerning av bestemte operatørlåser mislyktes."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Fjerningen av operatørlåser er fullført."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Fjerningen av bestemte operatørlåser er fullført."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM-tjenesteleverandør er låst opp."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Opplåsingen av SIM-kort for bedrifter er fullført."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM-kortet er låst opp."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Opplåsingen av RUIM Network1 er fullført."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Opplåsingen av RUIM Network2 er fullført."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Opplåsingen av RUIM-tjenesteleverandører er fullført."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Opplåsingen av RUIM for bedrifter er fullført."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN er låst opp."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Opplåsingen av SP Equivalent Home PLMN er fullført."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI-opplåsingen er fullført."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Bestemte operatørlåser er blitt fjernet."</string> </resources> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index 49b25535f56b..be86c4061069 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"व्यवस्थापकले यन्त्रलाई व्यक्तिगत प्रयोगका लागि अस्वीकार गर्नुभयो"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"यन्त्र व्यवस्थित गरिएको छ"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"तपाईंको संगठनले यस यन्त्रको व्यवस्थापन गर्दछ र नेटवर्क ट्राफिकको अनुगमन गर्न सक्छ। विवरणहरूका लागि ट्याप गर्नुहोस्।"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"तपाईंका प्रशासकले परिवर्तन गरेका स्थानसम्बन्धी सेटिङहरू"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"आफ्नो स्थानका सेटिङहरू हेर्न ट्याप गर्नुहोस्।"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"अनुप्रयोगहरूले तपाईंको स्थान प्रयोग गर्न सक्छन्"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"थप जानकारी प्राप्त गर्न आफ्ना IT प्रशासकसँग सम्पर्क गर्नुहोस्"</string> <string name="country_detector" msgid="7023275114706088854">"देश पत्ता लगाउने सुविधा"</string> <string name="location_service" msgid="2439187616018455546">"स्थानसम्बन्धी सेवा"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"सेन्सरको सूचनासम्बन्धी सेवा"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"तपाईंको यन्त्र मेटिनेछ"</string> <string name="factory_reset_message" msgid="2657049595153992213">"प्रशासकको अनुप्रयोग प्रयोग गर्न मिल्दैन। तपाईंको यन्त्रको डेटा अब मेटाइने छ।\n\nतपाईंसँग प्रश्नहरू भएका खण्डमा आफ्नो संगठनका प्रशासकसँग सम्पर्क गर्नुहोस्।"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ले छाप्ने कार्यलाई असक्षम पार्यो।"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"आफ्ना व्यक्तिगत एपमाथिको रोक हटाउनु"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"भोलि एपहरूलाई रोक लगाइने छ"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"तपाईंका IT प्रशासकले तपाईंको कार्यसम्बन्धी प्रोफाइल <xliff:g id="DAYS">%1$d</xliff:g> दिनभन्दा बढी पज गर्ने अनुमति दिनुभएको छैन"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"कार्यसम्बन्धी प्रोफाइल सक्रिय गर्नुहोस्"</string> <string name="me" msgid="6207584824693813140">"मलाई"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ट्याब्लेट विकल्पहरू"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV सम्बन्धी विकल्पहरू"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"फोन विकल्पहरू"</string> <string name="global_action_lock" msgid="6949357274257655383">"स्क्रिन बन्द"</string> <string name="global_action_power_off" msgid="4404936470711393203">"बन्द गर्नुहोस्"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"पावर"</string> + <string name="global_action_restart" msgid="4678451019561687074">"पुनः सुरु गर्नुहोस्"</string> <string name="global_action_emergency" msgid="1387617624177105088">"आपतकालीन"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"बग रिपोर्ट"</string> <string name="global_action_logout" msgid="6093581310002476511">"सत्रको अन्त्य गर्नुहोस्"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"अधिक स्थान प्रदायक आदेशहरू पहुँच गर्नुहोस्"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"अनुप्रयोगलाई अतिरिक्त स्थान प्रदायक आदेशहरू पहुँच गर्न अनुमति दिन्छ। यो अनुप्रयोगलाई GPS वा अन्य स्थान स्रोतहरूको संचालन साथै हस्तक्षेप गर्न अनुमति दिन सक्छ।"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"अग्रभूमिमा मात्र सटीक स्थानमाथि पहुँच राख्नुहोस्"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"यो अनुप्रयोगले अग्रभागमा चलिरहेको अवस्थामा मात्र तपाईंलाई स्थानको सटिक जानकारी दिन सक्छ। स्थानसम्बन्धी सेवाहरू अनिवार्य रूपमा सक्रिय गरिएका हुनु पर्छ र अनुप्रयोगले यिनीहरूको प्रयोग गर्न सकोस् भन्नाका खातिर तपाईंको यन्त्रमै उपलब्ध हुनु पर्छ। यस कार्यले गर्दा ब्याट्री बढी खर्च हुन सक्छ।"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"यो अनुप्रयोग चलाएका बेला यसले स्थानसम्बन्धी सेवाहरूबाट तपाईंको स्थानको सटीक जानकारी प्राप्त गर्न सक्छ। तपाईंको यन्त्रमा स्थानसम्बन्धी सेवाहरू सक्रिय गरिएको छ भने मात्र यो अनुप्रयोगले स्थानको जानकारी प्राप्त गर्न सक्छ। यसले ब्याट्रीको उपयोग बढाउन सक्छ।"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"अग्रभागमा मात्र अनुमानित स्थानमाथि पहुँच राख्नुहोस्"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"यो अनुप्रयोगले अग्रभागमा चलिरहेको अवस्थामा मात्र तपाईंको स्थानको अनुमानित जानकारी दिन सक्छ। स्थानसम्बन्धी सेवाहरू अनिवार्य रूपमा सक्रिय गरिएका हुनु पर्छ र अनुप्रयोगले यिनीहरूको प्रयोग गर्न सकोस् भन्नाका खातिर तपाईंको यन्त्रमै उपलब्ध हुनु पर्छ।"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"यो अनुप्रयोग चलाएका बेला यसले स्थानसम्बन्धी सेवाहरूबाट तपाईंको स्थानको अनुमानित जानकारी प्राप्त गर्न सक्छ। तपाईंको यन्त्रमा स्थानसम्बन्धी सेवाहरू सक्रिय गरिएको छ भने मात्र यो अनुप्रयोगले स्थानको जानकारी प्राप्त गर्न सक्छ।"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"पृष्ठभूमिमा स्थानसम्बन्धी पहुँच"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"यो अनुप्रयोगले अग्रभागमा चल्दा स्थानसम्बन्धी पहुँच प्राप्त गर्नुका साथै पृष्ठभूमिमा चल्दा पनि स्थानसम्बन्धी पहुँच प्राप्त गर्न सक्छ।"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"यो अनुप्रयोगले जुनसुकै बेला (अनुप्रयोग नचलाएका बेलामा पनि) स्थानमाथि पहुँच राख्न सक्छ।"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"तपाईँका अडियो सेटिङहरू परिवर्तन गर्नुहोस्"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"अनुप्रयोगलाई ग्लोबल अडियो सेटिङहरू परिमार्जन गर्न अनुमति दिन्छ, जस्तै आवाजको मात्रा र आउटपुटको लागि कुन स्पिकर प्रयोग गर्ने।"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"अडियो रेकर्ड गर्नुहोस्"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"तस्बिरहरू र भिडियोहरू लिनुहोस्।"</string> <string name="permdesc_camera" msgid="1354600178048761499">"यस अनुप्रयोगले जुनसुकै समय क्यामेराको प्रयोग गरी तस्बिर खिच्न र भिडियो रेकर्ड गर्न सक्छ।"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"अनुप्रयोग वा सेवालाई तस्बिर र भिडियो खिच्न प्रणालीका क्यामेराहरूमाथि पहुँच राख्न दिनुहोस्"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"प्रणालीको यस विशेषाधिकार प्राप्त अनुप्रयोगले जुनसुकै बेला प्रणालीको क्यामेरा प्रयोग गरी तस्बिर खिच्न र भिडियो रेकर्ड गर्न सक्छ। अनुप्रयोगसँग पनि android.permission.CAMERA सम्बन्धी अनुमति हुनु पर्छ"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"कुनै अनुप्रयोग वा सेवालाई खोलिँदै वा बन्द गरिँदै गरेका क्यामेरा यन्त्रहरूका बारेमा कलब्याक प्राप्त गर्ने अनुमति दिनुहोस्।"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"कुनै क्यामेरा यन्त्र खोलिँदा (कुन अनुप्रयोगले खोलेको भन्ने बारेमा) वा बन्द गरिँदा यो अनुप्रयोगले कलब्याक प्राप्त गर्न सक्छ।"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"कम्पन नियन्त्रण गर्नुहोस्"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"अनुप्रयोगलाई भाइब्रेटर नियन्त्रण गर्न अनुमति दिन्छ।"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"यो अनुप्रयोगलाई कम्पनको स्थितिमाथि पहुँच राख्न दिनुहोस्।"</string> @@ -1356,13 +1348,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"हालको सामग्री समीक्षा गर्दै"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"नयाँ <xliff:g id="NAME">%s</xliff:g> पत्ता लाग्यो"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"सेटअप गर्न ट्याप गर्नुहोस्"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"तस्बिरहरू र मिडिया स्थानान्तरणका लागि"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> मा समस्या देखियो"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"समस्या समाधान गर्न ट्याप गर्नुहोस्"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> बिग्रेको छ। समाधान गर्न चयन गर्नुहोस्।"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"असमर्थित <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"यस यन्त्रले यस <xliff:g id="NAME">%s</xliff:g> लाई समर्थन गर्दैन। एक समर्थित ढाँचामा सेटअप गर्न ट्याप गर्नुहोस्।"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"यो यन्त्रले यस <xliff:g id="NAME">%s</xliff:g> लाई समर्थन गर्दैन। एक समर्थित ढाँचामा सेटअप गर्न चयन गर्नुहोस्।"</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> अप्रत्याशित रूपमा निकालियो"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"सामग्री गुम्न नदिनका लागि मिडिया हटाउनुअघि त्यसलाई इजेक्ट गर्नुहोस्"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> हटाइयो"</string> @@ -1630,24 +1626,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"सिफारिस तहभन्दा आवाज ठुलो गर्नुहुन्छ?\n\nलामो समय सम्म उच्च आवाजमा सुन्दा तपाईँको सुन्ने शक्तिलाई हानी गर्न सक्छ।"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"पहुँच सम्बन्धी सर्टकट प्रयोग गर्ने हो?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"यो सर्टकट सक्रिय हुँदा, ३ सेकेन्डसम्म दुवै भोल्युम बटन थिच्नुले पहुँचसम्बन्धी कुनै सुविधा सुरु गर्ने छ।"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"पहुँचसम्बन्धी सुविधाहरू सक्रिय गर्ने हो?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"केही सेकेन्डसम्म दुवै भोल्युम बटन थिचिराख्नुले पहुँचसम्बन्धी सुविधाहरू सक्रिय गर्छ। यसले तपाईंको यन्त्रले काम गर्ने तरिका परिवर्तन गर्न सक्छ।\n\nहालका सुविधाहरू:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nतपाईं सेटिङ > पहुँचमा गएर चयन गरिएका सुविधाहरू परिवर्तन गर्न सक्नुहुन्छ।"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack सक्रिय गर्ने हो?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"केही सेकेन्डसम्म दुवै भोल्युम बटन थिचिराख्नुले TalkBack सक्रिय गर्छ। यो दृष्टिविहीन वा दृष्टि कमजोर भएका मान्छेहरूका लागि उपयोगी हुने एउटा स्क्रिन रिडर हो। TalkBack ले तपाईंको यन्त्रले काम गर्ने तरिका पूर्णतया परिवर्तन गर्छ।\n\nतपाईं सेटिङ > पहुँचमा गई यो सर्टकटमार्फत खुल्ने सुविधा परिवर्तन गर्न सक्नुहुन्छ।"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> सक्रिय गर्ने हो?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"केही सेकेन्डसम्म दुवै भोल्युम बटन थिचिराख्नुले <xliff:g id="SERVICE">%1$s</xliff:g> सक्रिय गर्छ। यो पहुँचसम्बन्धी एउटा सुविधा हो। यसले तपाईंको यन्त्रले काम गर्ने तरिका परिवर्तन गर्न सक्छ।\n\nतपाईं सेटिङ > पहुँचमा गई यो सर्टकटमार्फत खुल्ने सुविधा परिवर्तन गर्न सक्नुहुन्छ।"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"सक्रिय गर्नुहोस्"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"सक्रिय नगर्नुहोस्"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> लाई तपाईंको यन्त्र पूर्ण रूपमा नियन्त्रण गर्न दिने हो?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"तपाईंले <xliff:g id="SERVICE">%1$s</xliff:g> सक्रिय गर्नुभयो भने तपाईंको यन्त्रले डेटा इन्क्रिप्ट गर्ने सुविधाको स्तरोन्नति गर्न तपाईंको स्क्रिन लक सुविधाको प्रयोग गर्ने छैन।"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"तपाईंलाई पहुँच राख्न आवश्यक पर्ने कुरामा सहयोग गर्ने अनुप्रयोगहरूमाथि पूर्ण नियन्त्रण गर्नु उपयुक्त हुन्छ तर अधिकांश अनुप्रयोगहरूका हकमा यस्तो नियन्त्रण उपयुक्त हुँदैन।"</string> @@ -1658,10 +1645,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"अनुमति दिनुहोस्"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"इन्कार गर्नु⋯"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"कुनै सुविधा प्रयोग गर्न थाल्न उक्त सुविधामा ट्याप गर्नुहोस्:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"पहुँचको बटनमार्फत प्रयोग गरिने सुविधाहरू छनौट गर्नुहोस्"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"भोल्युम कुञ्जीको सर्टकटमार्फत प्रयोग गरिने सुविधाहरू छनौट गर्नुहोस्"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> निष्क्रिय पारिएको छ"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"सर्टकटहरू सम्पादन गर्नुहोस्"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"सम्पन्न भयो"</string> @@ -1669,23 +1654,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"सर्टकट प्रयोग गर्नुहोस्"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"रङ्ग उल्टाउने सुविधा"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"रङ सच्याउने सुविधा"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"तपाईंले भोल्युम बटनहरू थिचिराख्नुभयो। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> सक्रिय पारियो।"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"तपाईंले भोल्युम बटनहरू थिचिराख्नुभयो। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> निष्क्रिय पारियो।"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> प्रयोग गर्न दुवै भोल्युम कुञ्जीहरूलाई तीन सेकेन्डसम्म थिचिराख्नुहोस्"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"तपाईंले पहुँचको बटन ट्याप गरेर प्रयोग गर्न चाहनुभएको सुविधा छनौट गर्नुहोस्:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"तपाईंले पहुँचको इसारामार्फत प्रयोग गर्न चाहनुभएको सुविधा छनौट गर्नुहोस् (दुईवटा औँलाले स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"तपाईंले पहुँचको इसारामार्फत प्रयोग गर्न चाहनुभएको सुविधा छनौट गर्नुहोस् (तीनवटा औँलाले स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"एउटा सुविधाबाट अर्को सुविधामा जान पहुँचको बटनमा छोइराख्नुहोस्।"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"एउटा सुविधाबाट अर्को सुविधामा जान दुईवटा औँलाले माथितिर स्वाइप गरी स्क्रिनमा छोइराख्नुहोस्।"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"एउटा सुविधाबाट अर्को सुविधामा जान तीनवटा औँलाले माथितिर स्वाइप गरी स्क्रिनमा छोइराख्नुहोस्।"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"म्याग्निफिकेसन"</string> <string name="user_switched" msgid="7249833311585228097">"अहिलेको प्रयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>।"</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> मा स्विच गर्दै..."</string> @@ -2056,8 +2033,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> फाइलहरू</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> फाइल</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"सेयर गर्न सिफारिस गरिएको कुनै पनि व्यक्ति छैन"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"अनुप्रयोगहरूको सूची"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"यो अनुप्रयोगलाई रेकर्ड गर्ने अनुमति प्रदान गरिएको छैन तर यसले यो USB यन्त्रमार्फत अडियो क्याप्चर गर्न सक्छ।"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"गृहपृष्ठ"</string> @@ -2079,249 +2055,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"काम"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"व्यक्तिगत दृश्य"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"कार्य दृश्य"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"यो सामग्री कामसम्बन्धी अनुप्रयोगहरूमार्फत सेयर गर्न मिल्दैन"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"तपाईंका IT प्रशासकले तपाईंलाई तपाईंको कार्य प्रोफाइलमा रहेका अनुप्रयोगहरूमार्फत यो सामग्री सेयर गर्ने अनुमति दिनुभएको छैन"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"यो सामग्री कामसम्बन्धी अनुप्रयोगहरूमार्फत खोल्न मिल्दैन"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"तपाईंका IT प्रशासकले तपाईंलाई तपाईंको कार्य प्रोफाइलमा रहेका अनुप्रयोगहरूमार्फत यो सामग्री खोल्ने अनुमति दिनुभएको छैन"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"यो सामग्री व्यक्तिगत अनुप्रयोगहरूमार्फत सेयर गर्न मिल्दैन"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"तपाईंका IT प्रशासकले तपाईंलाई तपाईंको व्यक्तिगत प्रोफाइलमा रहेका अनुप्रयोगहरूमार्फत यो सामग्री सेयर गर्ने अनुमति दिनुभएको छैन"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"यो सामग्री व्यक्तिगत अनुप्रयोगहरूमार्फत खोल्न मिल्दैन"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"तपाईंका IT प्रशासकले तपाईंलाई तपाईंको व्यक्तिगत प्रोफाइलमा रहेका अनुप्रयोगहरूमार्फत यो सामग्री खोल्ने अनुमति दिनुभएको छैन"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"कार्य प्रोफाइल पज गरिएको छ"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"सक्रिय गर्नुहोस्"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"टेलिफोन कल गर्दै गर्दा अडियो रेकर्ड गर्नुहोस् वा प्ले गर्नुहोस्"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"यस अनुप्रयोगलाई पूर्वनिर्धारित डायलर अनुप्रयोग निर्धारण गर्दा टेलिफोन कलको अडियो रेकर्ड गर्ने र प्ले गर्ने अनुमति दिन्छ।"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"यो सामग्री कामसम्बन्धी कुनै पनि अनुप्रयोगमार्फत सेयर गर्न मिल्दैन"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"यो सामग्री कामसम्बन्धी कुनै पनि अनुप्रयोगमार्फत खोल्न मिल्दैन"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"यो सामग्री कुनै पनि व्यक्तिगत अनुप्रयोगमार्फत सेयर गर्न मिल्दैन"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"यो सामग्री कुनै पनि व्यक्तिगत अनुप्रयोगमार्फत खोल्न मिल्दैन"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM को नेटवर्क अनलक गर्ने PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM को नेटवर्कको उपसमूह अनलक गर्ने PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM को कर्पोरेट लक खोल्ने PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM को सेवा प्रदायकसम्बन्धी लक खोल्ने PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM अनलक गर्ने PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK प्रविष्टि गर्नुहोस्"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK प्रविष्टि गर्नुहोस्"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK प्रविष्टि गर्नुहोस्"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK प्रविष्टि गर्नुहोस्"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK प्रविष्टि गर्नुहोस्"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM को network1 नेटवर्क अनलक गर्ने PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM को network2 नेटवर्क अनलक गर्ने PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM को hrpd अनलक गर्ने PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM को कर्पोरेट लक खोल्ने PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM को सेवा प्रदायकसम्बन्धी लक खोल्ने PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM अनलक गर्ने PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK प्रविष्टि गर्नुहोस्"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK प्रविष्टि गर्नुहोस्"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK प्रविष्टि गर्नुहोस्"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK प्रविष्टि गर्नुहोस्"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK प्रविष्टि गर्नुहोस्"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK प्रविष्टि गर्नुहोस्"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN अनलक गर्ने PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"घरमा जोडिने SP सरहको PLMN अनलक गर्ने PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID अनलक गर्ने PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI अनलक गर्ने PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"नेटवर्कको उपसमूहको सेवा प्रदायकसम्बन्धी लक खोल्ने PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM को नेटवर्क अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM को नेटवर्कको उपसमूह अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM को सेवा प्रदायकसम्बन्धी लक खोलिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"SIM को कर्पोरेट लक खोलिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK प्रयोग गरेर अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK प्रयोग गरेर अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK प्रयोग गरेर अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK प्रयोग गरेर अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK प्रयोग गरेर अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM को network1 नेटवर्क अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM को network2 नेटवर्क अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM को hrpd अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM को सेवा प्रदायकसम्बन्धी लक खोलिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM को कर्पोरेट लक खोलिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"घरमा जोडिने SP सरहको PLMN अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"नेटवर्कको उपसमूहको सेवा प्रदायकसम्बन्धी लक खोलिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK प्रयोग गरेर अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK प्रयोग गरेर अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK प्रयोग गरेर अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK प्रयोग गरेर अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK प्रयोग गरेर अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK प्रयोग गरेर अनलक गरिदिन अनुरोध गर्दै…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM को नेटवर्क अनलक गरिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM को नेटवर्कको उपसमूह अनलक गरिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM को सेवा प्रदायकसम्बन्धी लक खोलिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM को कर्पोरेट लक खोलिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM अनलक गरिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM को Network1 नेटवर्क अनलक गरिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM को Network2 नेटवर्क अनलक गरिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM को Hrpd अनलक गरिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM को कर्पोरेट लक खोलिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM को सेवा प्रदायकसम्बन्धी लक खोलिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM अनलक गरिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK प्रयोग गरेर अनलक गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK प्रयोग गरेर अनलक गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK प्रयोग गरेर अनलक गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK प्रयोग गरेर अनलक गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK प्रयोग गरेर अनलक गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK प्रयोग गरेर अनलक गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK प्रयोग गरेर अनलक गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK प्रयोग गरेर अनलक गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK प्रयोग गरेर अनलक गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK प्रयोग गरेर अनलक गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK प्रयोग गरेर अनलक गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN अनलक गरिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"घरमा जोडिने SP सरहको PLMN अनलक गरिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID अनलक गरिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI अनलक गरिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"नेटवर्कको उपसमूहको सेवा प्रदायकसम्बन्धी लक खोलिदिन अनुरोध गर्न सकिएन।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM को नेटवर्क अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM को नेटवर्कको उपसमूह अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM को सेवा प्रदायकसम्बन्धी लक खोलियो ।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM को कर्पोरेट लक खोलियो।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM को Network1 नेटवर्क अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM को Network2 नेटवर्क अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM को Hrpd अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM को सेवा प्रदायकसम्बन्धी लक खोलियो।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM को कर्पोरेट लक खोलियो।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK प्रयोग गरेर अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK प्रयोग गरेर अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK प्रयोग गरेर अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK प्रयोग गरेर अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK प्रयोग गरेर अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK प्रयोग गरेर अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK प्रयोग गरेर अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK प्रयोग गरेर अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK प्रयोग गरेर अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK प्रयोग गरेर अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK प्रयोग गरेर अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"घरमा जोडिने SP सरहको PLMN अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI अनलक गरियो।"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"नेटवर्कको उपसमूहको सेवा प्रदायकसम्बन्धी लक खोलियो।"</string> </resources> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 7f6d8fe65714..8017f65feb62 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"De beheerder heeft het apparaat afgestaan voor persoonlijk gebruik"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Apparaat wordt beheerd"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Dit apparaat wordt beheerd door je organisatie. Het netwerkverkeer kan worden bijgehouden. Tik voor meer informatie."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Locatie-instellingen gewijzigd door je beheerder"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Tik om je locatie-instellingen te bekijken."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Apps hebben toegang tot je locatie"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Neem contact op met je IT-beheerder voor meer informatie"</string> <string name="country_detector" msgid="7023275114706088854">"Landdetectie"</string> <string name="location_service" msgid="2439187616018455546">"Locatieservice"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Service voor sensormeldingen"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Je apparaat wordt gewist"</string> <string name="factory_reset_message" msgid="2657049595153992213">"De beheer-app kan niet worden gebruikt. Je apparaat wordt nu gewist.\n\nNeem contact op met de beheerder van je organisatie als je vragen hebt."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Afdrukken uitgeschakeld door <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Blokkering van je persoonlijke apps opheffen"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Apps worden morgen geblokkeerd"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Je IT-beheerder staat niet toe dat je werkprofiel meer dan <xliff:g id="DAYS">%1$d</xliff:g> dagen wordt onderbroken"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Werkprofiel inschakelen"</string> <string name="me" msgid="6207584824693813140">"Ik"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tabletopties"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opties voor Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Telefoonopties"</string> <string name="global_action_lock" msgid="6949357274257655383">"Schermvergrendeling"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Uitschakelen"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Voeding"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Opnieuw opstarten"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Noodgeval"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Bugrapport"</string> <string name="global_action_logout" msgid="6093581310002476511">"Sessie beëindigen"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"toegang tot extra opdrachten van locatieaanbieder"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Hiermee kan de app toegang krijgen tot extra opdrachten voor de locatieprovider. De app kan hiermee de werking van gps of andere locatiebronnen te verstoren."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"alleen toegang tot precieze locatie op de voorgrond"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Deze app kan je exacte locatie ophalen als de app op de voorgrond wordt uitgevoerd. De app kan alleen gebruikmaken van de locatieservices als die zijn ingeschakeld en beschikbaar zijn op je apparaat. Hierdoor kan het batterijverbruik toenemen."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Deze app kan je precieze locatie opvragen bij de locatieservices terwijl de app wordt gebruikt. De app kan de locatie alleen opvragen als de locatieservices voor je apparaat zijn ingeschakeld. Hierdoor kan het batterijgebruik toenemen."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"alleen toegang tot geschatte locatie op de voorgrond"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Deze app kan je geschatte locatie alleen opvragen als de app op de voorgrond wordt gebruikt. De app kan de locatieservices alleen gebruiken als ze zijn ingeschakeld en beschikbaar zijn op je apparaat."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Deze app kan je geschatte locatie opvragen bij de locatieservices terwijl de app wordt gebruikt. De app kan de locatie alleen opvragen als de locatieservices voor je apparaat zijn ingeschakeld."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"toegang tot locatie op de achtergrond"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Deze app heeft niet alleen op de voorgrond toegang tot je locatie, maar ook als deze actief is op de achtergrond."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Deze app heeft altijd toegang tot de locatie, ook als de app niet wordt gebruikt."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"je audio-instellingen wijzigen"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Hiermee kan de app algemene audio-instellingen wijzigen zoals het volume en welke luidspreker wordt gebruikt voor de uitvoer."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"audio opnemen"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"foto\'s en video\'s maken"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Deze app kan op elk moment foto\'s maken en video\'s opnemen met de camera."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Een app of service toegang tot systeemcamera\'s geven om foto\'s en video\'s te maken"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Deze gemachtigde app of systeem-app kan op elk gewenst moment foto\'s maken en video\'s opnemen met een systeemcamera. De app moet ook het recht android.permission.CAMERA hebben."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Een app of service toestaan callbacks te ontvangen over camera-apparaten die worden geopend of gesloten."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Deze app kan callbacks ontvangen als een camera-apparaat wordt geopend (en door welke app) of gesloten."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"trilling beheren"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Hiermee kan de app de trilstand beheren."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Hiermee heeft de app toegang tot de status van de trilstand."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Huidige content controleren"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nieuwe <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Tik om in te stellen"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Voor overzetten van foto\'s en media"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Probleem met <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tik om het probleem op te lossen"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> is beschadigd. Selecteer om te herstellen."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> niet ondersteund"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Dit apparaat biedt geen ondersteuning voor deze <xliff:g id="NAME">%s</xliff:g>. Tik om te configureren in een ondersteunde indeling."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Dit apparaat biedt geen ondersteuning voor deze <xliff:g id="NAME">%s</xliff:g>. Selecteer om in te stellen in een ondersteunde indeling."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Dit apparaat ondersteunt deze <xliff:g id="NAME">%s</xliff:g> niet."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> is onverwacht verwijderd"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Werp media uit voordat je deze verwijdert om te voorkomen dat je content kwijtraakt"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> is verwijderd"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Volume verhogen tot boven het aanbevolen niveau?\n\nAls je langere tijd op hoog volume naar muziek luistert, raakt je gehoor mogelijk beschadigd."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Snelkoppeling toegankelijkheid gebruiken?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Als de snelkoppeling is ingeschakeld, kun je drie seconden op beide volumeknoppen drukken om een toegankelijkheidsfunctie te starten."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Toegankelijkheidsfuncties inschakelen?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Als je beide volumetoetsen een paar seconden ingedrukt houdt, schakel je de toegankelijkheidsfuncties in. Hierdoor kan de manier veranderen waarop je apparaat werkt.\n\nHuidige functies:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nJe kunt de geselecteerde functies wijzigen via Instellingen > Toegankelijkheid."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack inschakelen?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Als je beide volumetoetsen een paar seconden ingedrukt houdt, wordt TalkBack ingeschakeld. Dit is een schermlezer die nuttig is voor mensen die blind of slechtziend zijn. TalkBack verandert de manier waarop je apparaat werkt volledig.\n\nJe kunt deze sneltoets op een andere functie instellen via Instellingen > Toegankelijkheid."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> inschakelen?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Als je beide volumetoetsen een paar seconden ingedrukt houdt, wordt de toegankelijkheidsfunctie <xliff:g id="SERVICE">%1$s</xliff:g> ingeschakeld. Hierdoor kan de manier veranderen waarop je apparaat werkt.\n\nJe kunt deze sneltoets op een andere functie instellen via Instellingen > Toegankelijkheid."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Inschakelen"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Niet inschakelen"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Toestaan dat <xliff:g id="SERVICE">%1$s</xliff:g> volledige controle over je apparaat heeft?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Als je <xliff:g id="SERVICE">%1$s</xliff:g> inschakelt, maakt je apparaat geen gebruik van schermvergrendeling om de gegevensversleuteling te verbeteren."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Volledige controle is gepast voor apps die je helpen met toegankelijkheid, maar voor de meeste apps is het ongepast."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Toestaan"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Weigeren"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tik op een functie om deze te gebruiken:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Functies kiezen voor gebruik met de knop Toegankelijkheid"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Functies kiezen voor gebruik met de sneltoets via de volumeknop"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> is uitgeschakeld"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Snelkoppelingen bewerken"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gereed"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sneltoets gebruiken"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Kleurinversie"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Kleurcorrectie"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumetoetsen ingedrukt gehouden. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> is ingeschakeld."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumetoetsen ingedrukt gehouden. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> uitgeschakeld."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Houd beide volumetoetsen drie seconden ingedrukt om <xliff:g id="SERVICE_NAME">%1$s</xliff:g> te gebruiken"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Kies een functie om te gebruiken als je op de knop Toegankelijkheid tikt:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Kies een functie om te gebruiken met het toegankelijkheidsgebaar (met twee vingers omhoog swipen vanaf de onderkant van het scherm):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Kies een functie om te gebruiken met het toegankelijkheidsgebaar (met drie vingers omhoog swipen vanaf de onderkant van het scherm):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Tik op de knop Toegankelijkheid en houd deze vast om tussen functies te schakelen."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Swipe met twee vingers omhoog en houd vast om tussen functies te schakelen."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Swipe met drie vingers omhoog en houd vast om tussen functies te schakelen."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Vergroting"</string> <string name="user_switched" msgid="7249833311585228097">"Huidige gebruiker <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Overschakelen naar <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> bestanden</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> bestand</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Geen aanbevolen mensen om mee te delen"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lijst met apps"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Deze app heeft geen opnamerechten gekregen, maar zou audio kunnen vastleggen via dit USB-apparaat."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Homepage"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Er zijn geen werk-apps die deze content kunnen openen"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Er zijn geen persoonlijke apps die deze content kunnen ondersteunen"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Er zijn geen persoonlijke apps die deze content kunnen openen"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Audio opnemen of afspelen in telefoongesprekken"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Hiermee mag deze app (indien toegewezen als standaard dialer-app) audio opnemen of afspelen in telefoongesprekken."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Ontgrendelingspincode voor SIM-netwerk"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Ontgrendelingspincode voor subset van SIM-netwerk"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Ontgrendelingspincode voor zakelijke simkaart"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Ontgrendelingspincode voor simkaart van serviceprovider"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Ontgrendelingspincode voor simkaart"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Geef de pukcode op"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Geef de pukcode op"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Geef de pukcode op"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Geef de pukcode op"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Geef de pukcode op"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Ontgrendelingspincode voor RUIM netwerk1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Ontgrendelingspincode voor RUIM netwerk2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Ontgrendelingspincode voor RUIM HRPD"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Ontgrendelingspincode voor zakelijke RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Ontgrendelingspincode voor RUIM van serviceprovider"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Ontgrendelingspincode voor RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Geef de pukcode op"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Geef de pukcode op"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Geef de pukcode op"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Geef de pukcode op"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Geef de pukcode op"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Geef de pukcode op"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Ontgrendelingspincode voor SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Ontgrendelingspincode voor equivalent thuis-PLMN van SP"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Ontgrendelingspincode voor ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Pincode voor ontgrendelen IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Ontgrendelingspincode voor subset van netwerk serviceprovider."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Verzoeken om ontgrendeling SIM-netwerk…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Verzoeken om ontgrendeling subset van SIM-netwerk…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Verzoeken om ontgrendeling simkaart van serviceprovider…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Verzoeken om ontgrendeling zakelijke simkaart…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Verzoeken om pukcode-ontgrendeling…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Verzoeken om pukcode-ontgrendeling…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Verzoeken om pukcode-ontgrendeling…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Verzoeken om pukcode-ontgrendeling…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Verzoeken om pukcode-ontgrendeling…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Verzoeken om ontgrendeling simkaart…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Verzoeken om ontgrendeling RUIM netwerk1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Verzoeken om ontgrendeling RUIM netwerk2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Verzoeken om ontgrendeling RUIM HRPD…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Verzoeken om ontgrendeling RUIM van serviceprovider…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Verzoeken om ontgrendeling zakelijke RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Verzoeken om ontgrendeling SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Verzoeken om ontgrendeling equivalent thuis-PLMN van SP…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Verzoeken om ontgrendeling ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Verzoeken om ontgrendeling IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Verzoeken om ontgrendeling subset van netwerk serviceprovider…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Verzoeken om ontgrendeling RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Verzoeken om pukcode-ontgrendeling…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Verzoeken om pukcode-ontgrendeling…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Verzoeken om pukcode-ontgrendeling…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Verzoeken om pukcode-ontgrendeling…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Verzoeken om pukcode-ontgrendeling…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Verzoeken om pukcode-ontgrendeling…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Ontgrendelen SIM-netwerk mislukt."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Verzoek om ontgrendeling subset van SIM-netwerk mislukt."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Verzoek om ontgrendeling simkaart van serviceprovider mislukt."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Verzoek om ontgrendeling zakelijke simkaart mislukt."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Verzoek om ontgrendeling simkaart mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Verzoek om ontgrendeling RUIM netwerk1 mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Verzoek om ontgrendeling RUIM netwerk2 mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Verzoek om ontgrendeling RUIM HRPD mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Verzoek om ontgrendeling zakelijke RUIM mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Verzoek om ontgrendeling RUIM van serviceprovider mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Verzoek om ontgrendeling RUIM mislukt."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Pukcode-ontgrendeling mislukt."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Pukcode-ontgrendeling mislukt."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Pukcode-ontgrendeling mislukt."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Pukcode-ontgrendeling mislukt."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Pukcode-ontgrendeling mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Pukcode-ontgrendeling mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Pukcode-ontgrendeling mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Pukcode-ontgrendeling mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Pukcode-ontgrendeling mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Pukcode-ontgrendeling mislukt."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Pukcode-ontgrendeling mislukt."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Verzoek om ontgrendeling SPN mislukt."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Verzoek om ontgrendeling equivalent thuis-PLMN van SP mislukt."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Verzoek om ontgrendeling ICCID mislukt."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Verzoek om ontgrendeling IMPI mislukt."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Verzoek om ontgrendeling subset van netwerk serviceprovider mislukt."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM-netwerk is ontgrendeld."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Subset van SIM-netwerk is ontgrendeld."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Simkaart van serviceprovider is ontgrendeld."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Zakelijke simkaart is ontgrendeld."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"De simkaart is ontgrendeld."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM netwerk1 is ontgrendeld."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM netwerk2 is ontgrendeld."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM HRPD is ontgrendeld."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM van serviceprovider is ontgrendeld."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Zakelijke RUIM is ontgrendeld."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM is ontgrendeld."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Pukcode-ontgrendeling geslaagd."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Pukcode-ontgrendeling geslaagd."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Pukcode-ontgrendeling geslaagd."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Pukcode-ontgrendeling geslaagd."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Pukcode-ontgrendeling geslaagd."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Pukcode-ontgrendeling geslaagd."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Pukcode-ontgrendeling geslaagd."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Pukcode-ontgrendeling geslaagd."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Pukcode-ontgrendeling geslaagd."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Pukcode-ontgrendeling geslaagd."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Pukcode-ontgrendeling geslaagd."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN is ontgrendeld."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Equivalent thuis-PLMN van SP is ontgrendeld."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID is ontgrendeld."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI is ontgrendeld."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Subset van netwerk serviceprovider is ontgrendeld."</string> </resources> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index 36c5dceeb99b..2a193257026b 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"ବ୍ୟକ୍ତିଗତ ବ୍ୟବହାର ପାଇଁ ଆଡ୍ମିନ୍ ଡିଭାଇସ୍କୁ ଅଲଗା କରିଛନ୍ତି"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"ଡିଭାଇସକୁ ପରିଚାଳନା କରାଯାଉଛି"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"ଆପଣଙ୍କ ସଂସ୍ଥା ଏହି ଡିଭାଇସକୁ ପରିଚାଳନା କରନ୍ତି ଏବଂ ନେଟୱର୍କ ଟ୍ରାଫିକ୍ ନୀରିକ୍ଷଣ କରନ୍ତି। ବିବରଣୀ ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"ଲୋକେସନ୍ ସେଟିଂସ୍ ଆପଣଙ୍କର ଆଡମିନଙ୍କ ଦ୍ୱରା ବଦଳାଯାଇଛି"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"ଆପଣଙ୍କର ଲୋକେସନ୍ ସେଟିଂସ୍ ଦେଖିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"ଆପଗୁଡ଼ିକ ଆପଣଙ୍କ ଲୋକେସନକୁ ଆକ୍ସେସ୍ କରିପାରିବ"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"ଅଧିକ ଜାଣିବାକୁ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ"</string> <string name="country_detector" msgid="7023275114706088854">"କଣ୍ଟ୍ରି ଡିଟେକ୍ଟର୍"</string> <string name="location_service" msgid="2439187616018455546">"ଲୋକେସନ୍ ସର୍ଭିସ୍"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"ସେନ୍ସର୍ ନୋଟିଫିକେସନ୍ ସର୍ଭିସ୍"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"ଆପଣଙ୍କ ଡିଭାଇସ୍ ବର୍ତ୍ତମାନ ଲିଭାଯିବ"</string> <string name="factory_reset_message" msgid="2657049595153992213">"ଆଡମିନ୍ ଆପ୍ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ। ଆପଣଙ୍କ ଡିଭାଇସ୍ର ସମସ୍ତ ଡାଟାକୁ ବର୍ତ୍ତମାନ ଲିଭାଇଦିଆଯିବ। \n\nଯଦି ଆପଣଙ୍କର କୌଣସି ପ୍ରଶ୍ନ ରହିଥାଏ, ଆପଣଙ୍କ ସଂସ୍ଥାର ଆଡମିନ୍ଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ଦ୍ଵାରା ପ୍ରିଣ୍ଟିଙ୍ଗ ଅକ୍ଷମ କରାଯାଇଛି"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"ଆପଣଙ୍କ ବ୍ୟକ୍ତିଗତ ଆପ ଅନବ୍ଲକ କର"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"ଆସନ୍ତାକାଲି ଆପ୍ସ ବ୍ଲକ୍ ହୋଇଯିବ"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ଆପଣଙ୍କ ୱାର୍କ ପ୍ରୋଫାଇଲକୁ <xliff:g id="DAYS">%1$d</xliff:g>ରୁ ଅଧିକ ଦିନ ପାଇଁ ବିରତ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"ୱାର୍କ ପ୍ରୋଫାଇଲ୍ ଚାଲୁ କରନ୍ତୁ"</string> <string name="me" msgid="6207584824693813140">"ମୁଁ"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ଟାବଲେଟ୍ର ବିକଳ୍ପ"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android ଟିଭିର ବିକଳ୍ପଗୁଡ଼ିକ"</string> @@ -428,11 +424,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ଅତିରିକ୍ତ ଲୋକେସନ୍ ପ୍ରଦାନକାରୀ କମାଣ୍ଡକୁ ଆକ୍ସେସ୍ କରନ୍ତୁ"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ଅତିରିକ୍ତ ଲୋକେସନ୍ ପ୍ରଦାନକାରୀ କମାଣ୍ଡ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। GPS କିମ୍ବା ଅନ୍ୟ ଲୋକେସନ୍ ସୋର୍ସଗୁଡିକରେ ଆପ୍ଟି ପ୍ରଭାବ ପକାଇପାରେ।"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"କେବଳ ସମ୍ମୁଖଭାଗରେ ସଠିକ୍ ଲୋକେଶନ୍ର ଆକ୍ସେସ୍ କରନ୍ତୁ"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ଏହି ଆପ୍ କେବଳ ସମ୍ମୁଖ ପଟରେ ଥିବାବେଳେ ଆପଣଙ୍କର ସଠିକ୍ ଲୋକେସନ୍ ପ୍ରାପ୍ତ କରିପାରିବ। ଆପଣଙ୍କ ଡିଭାଇସ୍ରେ ଲୋକେସନ୍ ସେବା ଚାଲୁ ଏବଂ ଉପଲବ୍ଧ ହେବା ଦରକାର ଯେପରି ଆପ୍ ସେଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବାକୁ ସକ୍ଷମ ହେବ। ଏହା ବ୍ୟାଟେରୀ ଅଧିକା ଖର୍ଚ୍ଚ କରିପାରେ।"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ଏହି ଆପ୍ ବ୍ୟବହାରରେ ଥିବା ସମୟରେ ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକରୁ ଆପଣଙ୍କର ସଠିକ୍ ଲୋକେସନ୍ ପାଇପାରିବ। ଆପକୁ ଲୋକେସନ୍ ମିଳିବା ପାଇଁ ଆପଣଙ୍କ ଡିଭାଇସର ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକ ନିଶ୍ଚିତ ଭାବରେ ଚାଲୁ କରାଯିବା ଆବଶ୍ୟକ। ଏହା ବ୍ୟାଟେରୀର ବ୍ୟବହାରକୁ ବଢ଼ାଇପାରେ।"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"କେବଳ ସମ୍ମୁଖପଟରେ ହାରାହାରି ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରନ୍ତୁ"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ଏହି ଆପ୍ କେବଳ ସେତେବେଳେ ଆପଣଙ୍କର ଆନୁମାନିକ ଲୋକେସନ୍ ପାଇପାରିବ, ଯେତେବେଳେ ଏହା ସମ୍ମୁଖପଟରେ ଥିବ। ଆପଣଙ୍କ ଡିଭାଇସ୍ରେ ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକ ଚାଲୁ ଏବଂ ଉପଲବ୍ଧ ହେବା ଦରକାର ଯେପରି ଆପ୍ ସେଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବାକୁ ସକ୍ଷମ ହେବ।"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ଏହି ଆପ୍ ବ୍ୟବହାରରେ ଥିବା ସମୟରେ ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକରୁ ଆପଣଙ୍କର ଆନୁମାନିକ ଲୋକେସନ୍ ପାଇପାରିବ। ଆପକୁ ଲୋକେସନ୍ ମିଳିବା ପାଇଁ ଆପଣଙ୍କ ଡିଭାଇସର ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକ ନିଶ୍ଚିତ ଭାବରେ ଚାଲୁ କରାଯିବା ଆବଶ୍ୟକ।"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡ୍ରେ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରନ୍ତୁ"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ଏହି ଆପ୍ ସମ୍ମୁଖପଟ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବା ସହ ପୃଷ୍ଠପଟରେ ଚାଲିବା ସମୟରେ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିପାରିବ।"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ଏହି ଆପ୍ ବ୍ୟବହାରରେ ଥିବା ବେଳେ ମଧ୍ୟ, ଯେ କୌଣସି ସମୟରେ ଲୋକେସନକୁ ଆକ୍ସେସ୍ କରିପାରିବ।"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ଆପଣଙ୍କ ଅଡିଓ ସେଟିଙ୍ଗକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ଆପ୍କୁ ଗ୍ଲୋବାଲ୍ ଅଡିଓ ସେଟିଙ୍ଗ, ଯେପରିକି ଭଲ୍ୟୁମ୍କୁ ସଂଶୋଧିତ କରିବାକୁ ଏବଂ ଆଉଟପୁଟ୍ ପାଇଁ ସ୍ପିକର୍ ବ୍ୟବହାର କରିବାକୁ ଅନୁମତି ଦେଇଥାଏ।"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ଅଡିଓ ରେକର୍ଡ କରନ୍ତୁ"</string> @@ -447,8 +443,7 @@ <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> <skip /> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"କ୍ୟାମେରା ଡିଭାଇସଗୁଡ଼ିକ ଖୋଲିବା କିମ୍ବା ବନ୍ଦ କରିବା ବିଷୟରେ କଲବ୍ୟାକଗୁଡ଼ିକ ପାଇବାକୁ ଏକ ଆପ୍ଲିକେସନ୍ କିମ୍ବା ସେବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"ଯେ କୌଣସି କ୍ୟାମେରା ଡିଭାଇସ୍ ଖୋଲାଗଲେ (କେଉଁ ଆପ୍ଲିକେସନ୍ ଦ୍ୱାରା) କିମ୍ବା ବନ୍ଦ କରାଗଲେ ଏହି ଆପ୍ କଲବ୍ୟାକ୍ ପାଇପାରିବ।"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"କମ୍ପନ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"ଆପ୍କୁ, ଭାଇବ୍ରେଟର୍ ନିୟନ୍ତ୍ରଣ କରିବାକୁ ଦେଇଥାଏ।"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"ଭାଇବ୍ରେଟର୍ ସ୍ଥିତି ଆକ୍ସେସ୍ କରିବାକୁ ଆପକୁ ଅନୁମତି ଦିଏ।"</string> @@ -770,7 +765,7 @@ <string name="phoneTypeTtyTdd" msgid="532038552105328779">"TTY TDD"</string> <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"ୱାର୍କ ମୋବାଇଲ୍"</string> <string name="phoneTypeWorkPager" msgid="3748332310638505234">"ୱାର୍କ ପେଜର୍"</string> - <string name="phoneTypeAssistant" msgid="757550783842231039">"ସହାୟକ"</string> + <string name="phoneTypeAssistant" msgid="757550783842231039">"Assistant"</string> <string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string> <string name="eventTypeCustom" msgid="3257367158986466481">"କଷ୍ଟମ୍"</string> <string name="eventTypeBirthday" msgid="7770026752793912283">"ଜନ୍ମଦିନ"</string> @@ -803,7 +798,7 @@ <string name="orgTypeOther" msgid="5450675258408005553">"ଅନ୍ୟାନ୍ୟ"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"କଷ୍ଟମ୍"</string> <string name="relationTypeCustom" msgid="282938315217441351">"କଷ୍ଟମ୍"</string> - <string name="relationTypeAssistant" msgid="4057605157116589315">"ସହାୟକ"</string> + <string name="relationTypeAssistant" msgid="4057605157116589315">"Assistant"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"ଭାଇ"</string> <string name="relationTypeChild" msgid="9076258911292693601">"ଶିଶୁ"</string> <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"ଡୋମେଷ୍ଟିକ୍ ପାର୍ଟନର୍"</string> @@ -1350,13 +1345,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"ସାମ୍ପ୍ରତିକ କଣ୍ଟେଣ୍ଟର ଯାଞ୍ଚ କରାଯାଉଛି"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"ନୂଆ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"ସେଟଅପ୍ କରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ଫଟୋ ଓ ମିଡିଆ ସ୍ଥାନାନ୍ତର କରାଯିବା ପାଇଁ"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> ସହ ସମସ୍ୟା"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"ଠିକ୍ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> ଖରାପ ହୋଇଯାଇଛି। ଠିକ୍ କରିବାକୁ ଚୟନ କରନ୍ତୁ।"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> ସପୋର୍ଟ କରୁନାହିଁ"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"ଏହି ଡିଭାଇସ୍ ଏହି <xliff:g id="NAME">%s</xliff:g>କୁ ସପୋର୍ଟ କରେନାହିଁ। ଗୋଟିଏ ସପୋର୍ଟ କରୁଥିବା ଫର୍ମାଟ୍ରେ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"ଏହି ଡିଭାଇସ୍ ଏହି <xliff:g id="NAME">%s</xliff:g>କୁ ସପୋର୍ଟ କରେ ନାହିଁ। ଗୋଟିଏ ସପୋର୍ଟ କରୁଥିବା ଫର୍ମାଟରେ ସେଟ୍ ଅପ୍ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।"</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g>କୁ ହଠାତ୍ କାଢ଼ିଦିଆଗଲା"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"କଣ୍ଟେଣ୍ତ ହରାଇବାକୁ ଏଡ଼ାଇବା ପାଇଁ କାଢ଼ିବା ପୂର୍ବରୁ ମିଡିଆକୁ ଇଜେକ୍ଟ କରନ୍ତୁ"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g>କୁ କାଢ଼ିଦିଆଗଲା"</string> @@ -2073,35 +2072,20 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"କାର୍ଯ୍ୟ"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ବ୍ୟକ୍ତିଗତ ଭ୍ୟୁ"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"କାର୍ଯ୍ୟସ୍ଥଳୀ ସମ୍ବନ୍ଧିତ ଭ୍ୟୁ"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"କାର୍ଯ୍ୟସ୍ଥଳୀ ଆପଗୁଡ଼ିକ ମାଧ୍ୟମରେ ଏହା ସେୟାର୍ କରାଯାଇପାରିବ ନାହିଁ"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ଆପଣଙ୍କୁ ଆପଣଙ୍କ ୱାର୍କ ପ୍ରୋଫାଇଲରେ ଆପଗୁଡ଼ିକ ମାଧ୍ୟମରେ ଏହି ବିଷୟବସ୍ତୁକୁ ସେୟାର୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"କାର୍ଯ୍ୟସ୍ଥଳୀ ଆପଗୁଡ଼ିକ ମାଧ୍ୟମରେ ଏହି ଆପ୍ ଖୋଲାଯାଇ ପାରିବ ନାହିଁ"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ଆପଣଙ୍କୁ ଆପଣଙ୍କ ୱାର୍କ ପ୍ରୋଫାଇଲରେ ଆପଗୁଡ଼ିକ ମାଧ୍ୟମରେ ଏହି ବିଷୟବସ୍ତୁ ଖୋଲିବାକୁ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"ବ୍ୟକ୍ତିଗତ ଆପଗୁଡ଼ିକ ମାଧ୍ୟମରେ ଏହା ସେୟାର୍ କରାଯାଇପାରିବ ନାହିଁ"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ଆପଣଙ୍କୁ ଆପଣଙ୍କ ବ୍ୟକ୍ତିଗତ ପ୍ରୋଫାଇଲରେ ଆପଗୁଡ଼ିକ ମାଧ୍ୟମରେ ଏହି ବିଷୟବସ୍ତୁ ସେୟାର୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"ବ୍ୟକ୍ତିଗତ ଆପଗୁଡ଼ିକୁ ଖୋଲାଯାଇ ପାରିବ ନାହିଁ"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ଆପଣଙ୍କୁ ଆପଣଙ୍କ ବ୍ୟକ୍ତିଗତ ପ୍ରୋଫାଇଲରେ ଆପଗୁଡ଼ିକ ମାଧ୍ୟମରେ ଏହି ବିଷୟବସ୍ତୁକୁ ଖୋଲିବାକୁ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"ୱାର୍କ ପ୍ରୋଫାଇଲକୁ ବିରତ କରାଯାଇଛି"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"ଚାଲୁ କରନ୍ତୁ"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ଟେଲିଫୋନି କଲଗୁଡ଼ିକରେ ଅଡିଓ ରେକର୍ଡ କରନ୍ତୁ ବା ଚଲାନ୍ତୁ"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ଏହି ଆପ୍ ଡିଫଲ୍ଟ ଡାଏଲର୍ ଆପ୍ଲିକେସନ୍ ଭାବରେ ଆସାଇନ୍ ହୋଇଥିଲେ ଟେଲିଫୋନି କଲଗୁଡ଼ିକରେ ଅଡିଓ ରେକର୍ଡ କରିବା ବା ଚଲାଇବା ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"କୌଣସି କାର୍ଯ୍ୟସ୍ଥଳୀ ଆପ୍ ଏହି ବିଷୟବସ୍ତୁକୁ ସମର୍ଥନ କରିପାରିବ ନାହିଁ"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"କୌଣସି କାର୍ଯ୍ୟସ୍ଥଳୀ ଆପ୍ ଏହି ବିଷୟବସ୍ତୁକୁ ଖୋଲିପାରିବ ନାହିଁ"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"କୌଣସି ବ୍ୟକ୍ତିଗତ ଆପ୍ ଏହି ବିଷୟବସ୍ତୁକୁ ସମର୍ଥନ କରିପାରିବ ନାହିଁ"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"କୌଣସି ବ୍ୟକ୍ତିଗତ ଆପ୍ ଏହି ବିଷୟବସ୍ତୁକୁ ଖୋଲିପାରିବ ନାହିଁ"</string> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> <skip /> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index 3c883ea26c58..21226436dac1 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"ਪ੍ਰਸ਼ਾਸਕ ਨੇ ਨਿੱਜੀ ਵਰਤੋਂ ਲਈ ਡੀਵਾਈਸ ਤਿਆਗਿਆ"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"ਡੀਵਾਈਸ ਪ੍ਰਬੰਧਨ ਅਧੀਨ ਹੈ"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"ਤੁਹਾਡਾ ਸੰਗਠਨ ਇਸ ਡੀਵਾਈਸ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ ਅਤੇ ਨੈੱਟਵਰਕ ਟਰੈਫਿਕ ਦੀ ਨਿਗਰਾਨੀ ਕਰ ਸਕਦਾ ਹੈ। ਵੇਰਵਿਆਂ ਲਈ ਟੈਪ ਕਰੋ।"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਨੇ ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ ਨੂੰ ਬਦਲ ਦਿੱਤਾ ਹੈ"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"ਆਪਣੀਆਂ ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ ਨੂੰ ਦੇਖਣ ਲਈ ਟੈਪ ਕਰੋ।"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"ਐਪਾਂ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"ਹੋਰ ਜਾਣਨ ਲਈ ਆਪਣੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ"</string> <string name="country_detector" msgid="7023275114706088854">"ਦੇਸ਼ ਦਾ ਪਤਾ ਲਗਾਉਣ ਦੀ ਸੁਵਿਧਾ"</string> <string name="location_service" msgid="2439187616018455546">"ਟਿਕਾਣਾ ਸੇਵਾ"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"ਸੈਂਸਰ ਸੂਚਨਾ ਸੇਵਾ"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਮਿਟਾਇਆ ਜਾਏਗਾ"</string> <string name="factory_reset_message" msgid="2657049595153992213">"ਪ੍ਰਸ਼ਾਸਕ ਐਪ ਵਰਤੀ ਨਹੀਂ ਜਾ ਸਕਦੀ। ਹੁਣ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦਾ ਡਾਟਾ ਮਿਟਾਇਆ ਜਾਵੇਗਾ।\n\nਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਸਵਾਲ ਹਨ, ਤਾਂ ਆਪਣੀ ਸੰਸਥਾ ਦੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ਵੱਲੋਂ ਪ੍ਰਿੰਟ ਕਰਨਾ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"ਆਪਣੀਆਂ ਨਿੱਜੀ ਐਪਾਂ ਅਣਬਲਾਕ ਕਰੋ"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"ਐਪਾਂ ਕੱਲ੍ਹ ਬਲਾਕ ਹੋ ਜਾਣਗੀਆਂ"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਡੀ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਨੂੰ <xliff:g id="DAYS">%1$d</xliff:g> ਦਿਨਾਂ ਤੋਂ ਵੱਧ ਸਮੇਂ ਤੱਕ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੰਦਾ"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਚਾਲੂ ਕਰੋ"</string> <string name="me" msgid="6207584824693813140">"ਮੈਂ"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ਟੈਬਲੈੱਟ ਵਿਕਲਪ"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ਦੇ ਵਿਕਲਪ"</string> @@ -428,11 +424,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ਵਾਧੂ ਟਿਕਾਣਾ ਪ੍ਰਦਾਤਾ ਕਮਾਂਡਾਂ ਤੱਕ ਪਹੁੰਚ"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ਐਪ ਨੂੰ ਵਾਧੂ ਟਿਕਾਣਾ ਪ੍ਰਦਾਤਾ ਕਮਾਂਡਾਂ ਤੱਕ ਪਹੁੰਚ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਹ ਐਪ ਨੂੰ GPS ਜਾਂ ਹੋਰ ਟਿਕਾਣਾ ਸਰੋਤਾਂ ਦੇ ਓਪਰੇਸ਼ਨ ਵਿੱਚ ਵਿਘਨ ਪਾਉਣ ਦੀ ਆਗਿਆ ਦੇ ਸਕਦਾ ਹੈ।"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"ਸਿਰਫ਼ ਫੋਰਗ੍ਰਾਊਂਡ ਵਿੱਚ ਸਟੀਕ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰੋ"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ਇਹ ਐਪ ਸਿਰਫ਼ ਉਦੋਂ ਤੁਹਾਡਾ ਸਟੀਕ ਟਿਕਾਣਾ ਪਤਾ ਕਰ ਸਕਦੀ ਹੈ, ਜਦੋਂ ਇਹ ਸਕ੍ਰੀਨ \'ਤੇ ਹੋਵੇ। ਐਪ ਦੇ ਵਰਤਣ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਦਾ ਚਾਲੂ ਹੋਣਾ ਅਤੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਉਪਲਬਧ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ। ਇਸ ਨਾਲ ਬੈਟਰੀ ਦੀ ਖਪਤ ਵਧ ਸਕਦੀ ਹੈ।"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ਇਹ ਐਪ ਵਰਤੋਂ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਤੋਂ ਤੁਹਾਡੇ ਸਟੀਕ ਟਿਕਾਣੇ ਦਾ ਪਤਾ ਕਰ ਸਕਦੀ ਹੈ। ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਦਾ ਚਾਲੂ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ ਤਾਂ ਜੋ ਐਪ ਟਿਕਾਣਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕੇ। ਇਸ ਨਾਲ ਬੈਟਰੀ ਵਰਤੋਂ ਵਧ ਸਕਦੀ ਹੈ।"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ਸਿਰਫ਼ ਸਕ੍ਰੀਨ \'ਤੇ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰੋ"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ਇਹ ਐਪ ਸਿਰਫ਼ ਉਦੋਂ ਤੁਹਾਡਾ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣਾ ਪਤਾ ਕਰ ਸਕਦੀ ਹੈ, ਜਦੋਂ ਇਹ ਸਕ੍ਰੀਨ \'ਤੇ ਹੋਵੇ। ਐਪ ਦੇ ਵਰਤਣ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਦਾ ਚਾਲੂ ਹੋਣਾ ਅਤੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਉਪਲਬਧ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ।"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ਇਹ ਐਪ ਵਰਤੋਂ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਤੋਂ ਤੁਹਾਡੇ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣੇ ਦਾ ਪਤਾ ਕਰ ਸਕਦੀ ਹੈ। ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਦਾ ਚਾਲੂ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ ਤਾਂ ਜੋ ਐਪ ਟਿਕਾਣਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕੇ।"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ਸਕ੍ਰੀਨ \'ਤੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਤੋਂ ਇਲਾਵਾ, ਇਹ ਐਪ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚੱਲਣ ਵੇਲੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ।"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ਇਹ ਐਪ ਕਿਸੇ ਵੀ ਸਮੇਂ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ, ਭਾਵੇਂ ਐਪ ਵਰਤੋਂ ਵਿੱਚ ਨਾ ਹੋਵੇ।"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ਆਪਣੀਆਂ ਆਡੀਓ ਸੈਟਿੰਗਾਂ ਬਦਲੋ"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ਐਪ ਨੂੰ ਗਲੋਬਲ ਆਡੀਓ ਸੈਟਿੰਗਾਂ ਸੰਸ਼ੋਧਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਜਿਵੇਂ ਅਵਾਜ਼ ਅਤੇ ਆਊਟਪੁਟ ਲਈ ਕਿਹੜਾ ਸਪੀਕਰ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">" ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ"</string> @@ -1349,13 +1345,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"ਵਰਤਮਾਨ ਸਮੱਗਰੀ ਦੀ ਸਮੀਖਿਆ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"ਨਵਾਂ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ਫ਼ੋਟੋਆਂ ਅਤੇ ਮੀਡੀਆ ਨੂੰ ਟ੍ਰਾਂਸਫ਼ਰ ਕਰਨ ਲਈ"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> ਵਿੱਚ ਸਮੱਸਿਆ ਆਈ"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"ਠੀਕ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> ਖਰਾਬ ਹੈ। ਠੀਕ ਕਰਨ ਲਈ ਚੁਣੋ।"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"ਅਸਮਰਥਿਤ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"ਇਹ ਡੀਵਾਈਸ ਇਸ <xliff:g id="NAME">%s</xliff:g> ਨੂੰ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਕਿਸੇ ਸਮਰਥਿਤ ਫਾਰਮੈਟ ਵਿੱਚ ਸਥਾਪਤ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"ਇਹ ਡੀਵਾਈਸ ਇਸ <xliff:g id="NAME">%s</xliff:g> ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਕਿਸੇ ਸਮਰਥਿਤ ਫਾਰਮੈਟ ਵਿੱਚ ਸਥਾਪਤ ਕਰਨ ਲਈ ਚੁਣੋ।"</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> ਨੂੰ ਅਚਨਚੇਤ ਹਟਾਇਆ ਗਿਆ"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"ਸਮੱਗਰੀ ਗੁਆਉਣ ਤੋਂ ਬਚਣ ਲਈ ਹਟਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਮੀਡੀਆ ਕੱਢੋ"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> ਨੂੰ ਹਟਾਇਆ ਗਿਆ"</string> @@ -2072,35 +2072,20 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"ਕੰਮ"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ਵਿਅਕਤੀਗਤ ਦ੍ਰਿਸ਼"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"ਕਾਰਜ ਦ੍ਰਿਸ਼"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"ਇਹ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨਾਲ ਸਾਂਝਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ ਤੁਹਾਡੀ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਐਪਾਂ ਨਾਲ ਇਸ ਸਮੱਗਰੀ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੰਦਾ"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨਾਲ ਇਸ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ ਤੁਹਾਡੀ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਐਪਾਂ ਨਾਲ ਇਸ ਸਮੱਗਰੀ ਨੂੰ ਖੋਲ੍ਹਣ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੰਦਾ"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"ਇਸ ਨੂੰ ਨਿੱਜੀ ਐਪਾਂ ਨਾਲ ਸਾਂਝਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ ਤੁਹਾਡੀ ਨਿੱਜੀ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਐਪਾਂ ਨਾਲ ਇਸ ਸਮੱਗਰੀ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੰਦਾ"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"ਨਿੱਜੀ ਐਪਾਂ ਨਾਲ ਇਸ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ ਤੁਹਾਡੀ ਨਿੱਜੀ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਐਪਾਂ ਨਾਲ ਇਸ ਸਮੱਗਰੀ ਨੂੰ ਖੋਲ੍ਹਣ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੰਦਾ"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਰੋਕਿਆ ਗਿਆ ਹੈ"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"ਚਾਲੂ ਕਰੋ"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ਟੈਲੀਫ਼ੋਨੀ ਕਾਲਾਂ ਵਿੱਚ ਰਿਕਾਰਡ ਕਰੋ ਜਾਂ ਆਡੀਓ ਚਲਾਓ"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ਇਹ ਇਸ ਐਪ ਨੂੰ, ਪੂਰਵ-ਨਿਰਧਾਰਤ ਡਾਇਲਰ ਐਪਲੀਕੇਸ਼ਨ ਵਜੋਂ ਜਿੰਮੇ ਲਾਏ ਜਾਣ \'ਤੇ, ਟੈਲੀਫ਼ੋਨੀ ਕਾਲਾਂ ਵਿੱਚ ਰਿਕਾਰਡ ਕਰਨ ਜਾਂ ਆਡੀਓ ਚਲਾਉਣ ਦਿੰਦਾ ਹੈ।"</string> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"ਕੋਈ ਕੰਮ ਸੰਬੰਧੀ ਐਪ ਇਸ ਸਮੱਗਰੀ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰ ਸਕਦੀ"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"ਕੋਈ ਕੰਮ ਸੰਬੰਧੀ ਐਪ ਇਸ ਸਮੱਗਰੀ ਨੂੰ ਨਹੀਂ ਖੋਲ੍ਹ ਸਕਦੀ"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"ਕੋਈ ਨਿੱਜੀ ਐਪ ਇਸ ਸਮੱਗਰੀ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰ ਸਕਦੀ"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"ਕੋਈ ਨਿੱਜੀ ਐਪ ਇਸ ਸਮੱਗਰੀ ਨੂੰ ਨਹੀਂ ਖੋਲ੍ਹ ਸਕਦੀ"</string> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> <skip /> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 54bad3e11f1e..e98e12024435 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -195,8 +195,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrator odstąpił urządzenie do użytku osobistego"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Urządzenie jest zarządzane"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Twoja organizacja zarządza tym urządzeniem i może monitorować ruch w sieci. Kliknij, by dowiedzieć się więcej."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Ustawienia lokalizacji zmienione przez administratora"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Kliknij, aby zobaczyć ustawienia lokalizacji."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikacje mogą mieć dostęp do Twojej lokalizacji"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Więcej informacji udzieli Ci administrator IT"</string> <string name="country_detector" msgid="7023275114706088854">"Wykrywanie kraju"</string> <string name="location_service" msgid="2439187616018455546">"Usługa lokalizacyjna"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Usługa powiadomień czujnika"</string> @@ -204,14 +204,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Twoje urządzenie zostanie wyczyszczone"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Nie można użyć aplikacji administratora. Dane z urządzenia zostaną wykasowane.\n\nJeśli masz pytania, skontaktuj się z administratorem organizacji."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Drukowanie wyłączone przez: <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Odblokuj aplikacje osobiste"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Blokada aplikacji – jutro"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Administrator IT nie pozwala na wstrzymanie profilu do pracy na dłużej niż <xliff:g id="DAYS">%1$d</xliff:g> dni"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Włącz profil do pracy"</string> <string name="me" msgid="6207584824693813140">"Ja"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcje tabletu"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcje Androida TV"</string> @@ -245,10 +241,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opcje telefonu"</string> <string name="global_action_lock" msgid="6949357274257655383">"Blokada ekranu"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Wyłącz"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Przycisk zasilania"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Uruchom ponownie"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Alarmowy"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Zgłoszenie błędu"</string> <string name="global_action_logout" msgid="6093581310002476511">"Zakończ sesję"</string> @@ -434,11 +428,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"dostęp do dodatkowych poleceń dostawcy informacji o lokalizacji"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Pozwala aplikacji na dostęp do dodatkowych poleceń dostawcy informacji o lokalizacji. Aplikacje z tym uprawnieniem mogą wpływać na działanie GPS-a lub innych źródeł lokalizacji."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"dostęp do dokładnej lokalizacji tylko na pierwszym planie"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ta aplikacja może określić Twoją dokładną lokalizację tylko wtedy, gdy działa na pierwszym planie. Usługi lokalizacyjne muszą być włączone i dostępne na urządzeniu, by aplikacja mogła z nich korzystać. Może to zwiększyć zużycie baterii."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Aplikacja ma dostęp do dokładnej lokalizacji z usług lokalizacyjnych, kiedy jest używana. Aby aplikacja mogła używać lokalizacji, musisz mieć na urządzeniu włączone usługi lokalizacyjne. Może to zwiększyć wykorzystanie baterii."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"dostęp do przybliżonej lokalizacji tylko na pierwszym planie"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ta aplikacja może określić Twoją przybliżoną lokalizację tylko wtedy, gdy działa na pierwszym planie. Usługi lokalizacyjne muszą być włączone i dostępne na urządzeniu, by aplikacja mogła z nich korzystać."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Aplikacja ma dostęp do przybliżonej lokalizacji z usług lokalizacyjnych, kiedy jest używana. Aby aplikacja mogła używać lokalizacji, musisz mieć na urządzeniu włączone usługi lokalizacyjne."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"dostęp do lokalizacji w tle"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ta aplikacja może korzystać z lokalizacji, gdy działa w tle, niezależnie od dostępu do lokalizacji na pierwszym planie."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplikacja ma dostęp do lokalizacji w dowolnym momencie, nawet kiedy nie jest używana."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"zmienianie ustawień audio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Pozwala aplikacji na modyfikowanie globalnych ustawień dźwięku, takich jak głośność oraz urządzenie wyjściowe."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"nagrywanie dźwięku"</string> @@ -450,10 +444,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"wykonywanie zdjęć i filmów wideo"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Ta aplikacja może w dowolnym momencie robić zdjęcia i nagrywać filmy przy użyciu aparatu."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Zezwól na dostęp aplikacji lub usługi do aparatów systemu i robienie zdjęć oraz nagrywanie filmów"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ta aplikacja systemowa z podwyższonymi uprawnieniami może w dowolnym momencie robić zdjęcia i nagrywać filmy przy użyciu aparatu systemowego. Wymaga przyznania uprawnień android.permission.CAMERA również aplikacji."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Zezwól na dostęp aplikacji lub usługi na otrzymywanie wywoływania zwrotnego o urządzeniach z aparatem, kiedy są one uruchamiane lub zamykane."</string> - <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ta aplikacja może korzystać z wywoływania zwrotnego, kiedy urządzenie z aparatem jest uruchamiane (przez jaką aplikację) albo zamykane."</string> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ta aplikacja może otrzymywać wywołania zwrotne, kiedy urządzenie z aparatem jest uruchamiane (przez jaką aplikację) albo zamykane."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"sterowanie wibracjami"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Pozwala aplikacji na sterowanie wibracjami."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Zezwala aplikacji na dostęp do stanu wibracji"</string> @@ -1389,13 +1382,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Sprawdzam bieżącą zawartość"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nowy nośnik: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Kliknij, by skonfigurować"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Do przenoszenia zdjęć i multimediów"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Wystąpił problem z: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Kliknij, by naprawić"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Nośnik <xliff:g id="NAME">%s</xliff:g> jest uszkodzony. Wybierz, by rozwiązać problem."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Nośnik <xliff:g id="NAME">%s</xliff:g> nieobsługiwany"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"To urządzenie nie obsługuje <xliff:g id="NAME">%s</xliff:g>. Kliknij, by użyć obsługiwanego formatu."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"To urządzenie nie obsługuje nośnika <xliff:g id="NAME">%s</xliff:g>. Wybierz, by skonfigurować obsługiwany format."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g>: nieoczekiwane wyjęcie"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Zanim wyjmiesz nośnik, odłącz go, by uniknąć utraty danych"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> – odłączono"</string> @@ -1667,24 +1664,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zwiększyć głośność ponad zalecany poziom?\n\nSłuchanie głośno przez długi czas może uszkodzić Twój słuch."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Użyć skrótu do ułatwień dostępu?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Gdy skrót jest włączony, jednoczesne naciskanie przez trzy sekundy obu przycisków głośności uruchamia funkcję ułatwień dostępu."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Włączyć ułatwienia dostępu?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Przytrzymanie obu klawiszy głośności przez kilka sekund włącza ułatwienia dostępu. Może to zmienić sposób działania urządzenia.\n\nBieżące funkcje:\n<xliff:g id="SERVICE">%1$s</xliff:g>\naby zmienić wybrane funkcje, kliknij Ustawienia > Ułatwienia dostępu."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Włączyć TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Przytrzymanie obu klawiszy głośności przez kilka sekund włącza TalkBack. Jest to czytnik ekranu przeznaczony dla osób niewidomych i niedowidzących. TalkBack całkowicie zmienia sposób działania urządzenia.\n\nAby zmienić ten skrót i wskazać inną funkcję, kliknij Ustawienia > Ułatwienia dostępu."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Włączyć usługę <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Przytrzymanie obu klawiszy głośności przez kilka sekund włącza usługę <xliff:g id="SERVICE">%1$s</xliff:g>, stanowiącą ułatwienie dostępu. Może to zmienić sposób działania urządzenia.\n\nAby zmienić ten skrót i wskazać inną funkcję, kliknij Ustawienia > Ułatwienia dostępu."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Włącz"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nie włączaj"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Pozwolić usłudze <xliff:g id="SERVICE">%1$s</xliff:g> na pełną kontrolę nad urządzeniem?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jeśli włączysz usługę <xliff:g id="SERVICE">%1$s</xliff:g>, Twoje urządzenie nie będzie korzystać z blokady ekranu, by usprawnić szyfrowanie danych."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Pełna kontrola jest odpowiednia dla aplikacji, które pomagają Ci radzić sobie z niepełnosprawnością, ale nie należy jej przyznawać wszystkim aplikacjom."</string> @@ -1695,10 +1683,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Zezwól"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Odmów"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Wybierz funkcję, aby zacząć z niej korzystać:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Wybierz funkcje, których chcesz używać z przyciskiem ułatwień dostępu"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Wybierz funkcje, których chcesz używać w przypadku skrótu z klawiszami głośności"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Usługa <xliff:g id="SERVICE_NAME">%s</xliff:g> została wyłączona"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edytuj skróty"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"OK"</string> @@ -1706,23 +1692,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Użyj skrótu"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Odwrócenie kolorów"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korekcja kolorów"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Przytrzymano klawisze głośności. Usługa <xliff:g id="SERVICE_NAME">%1$s</xliff:g> została włączona."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Przytrzymano klawisze głośności. Usługa <xliff:g id="SERVICE_NAME">%1$s</xliff:g> została wyłączona."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Naciśnij i przytrzymaj oba przyciski głośności przez trzy sekundy, by użyć usługi <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Wybierz funkcję używaną po kliknięciu przycisku ułatwień dostępu:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Wybierz funkcję, której chcesz używać w przypadku gestu ułatwień dostępu (przesunięcie dwoma palcami w górę od dołu ekranu):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Wybierz funkcję, której chcesz używać w przypadku gestu ułatwień dostępu (przesunięcie trzema palcami w górę od dołu ekranu):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Aby przełączać funkcje, naciśnij i przytrzymaj przycisk ułatwień dostępu."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Aby przełączać funkcje, przesuń dwoma palcami w górę i przytrzymaj."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Aby przełączyć funkcje, przesuń trzema palcami w górę i przytrzymaj."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Powiększenie"</string> <string name="user_switched" msgid="7249833311585228097">"Bieżący użytkownik: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Przełączam na użytkownika <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2117,8 +2095,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> pliku</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> plik</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Brak polecanych osób, którym możesz udostępniać"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lista aplikacji"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Ta aplikacja nie ma uprawnień do nagrywania, ale może rejestrować dźwięk za pomocą tego urządzenia USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Ekran główny"</string> @@ -2154,222 +2131,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Brak aplikacji do pracy, które mogą otworzyć tę zawartość"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Brak aplikacji osobistych, które obsługują tę zawartość"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Brak aplikacji osobistych, które mogą otworzyć tę zawartość"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Nagrywanie lub odtwarzanie dźwięku podczas połączeń telefonicznych"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Zezwala na odtwarzanie dźwięku podczas rozmów telefonicznych przez aplikację przypisaną jako domyślnie wybierającą numery."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Kod PIN do karty SIM odblokowujący sieć"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Kod PIN odblokowujący podzbiór sieci na karcie SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Kod PIN odblokowujący dane korporacyjne na karcie SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Kod PIN odblokowujący usługodawcę na karcie SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Kod PIN odblokowujący kartę SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Wpisz kod PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Wpisz kod PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Wpisz kod PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Wpisz kod PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Wpisz kod PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Kod PIN odblokowujący sieć typu 1 na karcie RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Kod PIN odblokowujący sieć typu 2 na karcie RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Kod PIN odblokowujący HRDP na karcie RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Kod PIN odblokowujący dane korporacyjne na karcie RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Kod PIN odblokowujący usługodawcę na karcie RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Kod PIN odblokowujący RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Wpisz kod PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Wpisz kod PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Wpisz kod PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Wpisz kod PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Wpisz kod PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Wpisz kod PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Kod PIN odblokowujący SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Kod PIN odblokowujący odpowiednik macierzystej sieci klienta u usługodawcy"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Kod PIN odblokowujący ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Kod PIN odblokowujący IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Kod PIN odblokowujący usługodawcę w podzbiorze sieci"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Wysyłam żądanie odblokowania sieci dla karty SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Wysyłam żądanie odblokowania podzbioru danych o sieci na karcie SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Wysyłam żądanie odblokowania usługodawcy na karcie SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Wysyłam żądanie odblokowania danych korporacyjnych na karcie SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Wysyłam żądanie odblokowania kodem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Wysyłam żądanie odblokowania kodem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Wysyłam żądanie odblokowania kodem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Wysyłam żądanie odblokowania kodem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Wysyłam żądanie odblokowania kodem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Wysyłam żądanie odblokowania karty SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Wysyłam żądanie odblokowania sieci typu 1 na karcie RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Wysyłam żądanie odblokowania sieci typu 2 na karcie RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Wysyłam żądanie odblokowania HRDP na karcie RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Wysyłam żądanie odblokowania usługodawcy na karcie RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Wysyłam żądanie odblokowania danych korporacyjnych na karcie RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Wysyłam żądanie odblokowania SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Wysyłam żądanie odblokowania odpowiednika macierzystej sieci klienta u usługodawcy…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Wysyłam żądanie odblokowania ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Wysyłam żądanie odblokowania IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Wysyłam żądanie odblokowania usługodawcy w podzbiorze sieci…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Wysyłam żądanie odblokowania RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Wysyłam żądanie odblokowania kodem PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Wysyłam żądanie odblokowania kodem PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Wysyłam żądanie odblokowania kodem PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Wysyłam żądanie odblokowania kodem PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Wysyłam żądanie odblokowania kodem PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Wysyłam żądanie odblokowania kodem PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Nie udało się zrealizować żądania odblokowania sieci dla karty SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Nie udało się zrealizować żądania odblokowania podzbioru sieci na karcie SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Nie udało się zrealizować żądania odblokowania usługodawcy na karcie SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Nie udało się zrealizować żądania odblokowania danych korporacyjnych na karcie SIM."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Nie udało się zrealizować żądania odblokowania karty SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Nie udało się zrealizować żądania odblokowania sieci typu 1 na karcie RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Nie udało się zrealizować żądania odblokowania sieci typu 2 na karcie RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Nie udało się zrealizować żądania odblokowania HRDP na karcie RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Nie udało się zrealizować żądania odblokowania danych korporacyjnych na karcie RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Nie udało się zrealizować żądania odblokowania usługodawcy na karcie RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Nie udało się zrealizować żądania odblokowania RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Nie udało się odblokować kodem PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Nie udało się odblokować kodem PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Nie udało się odblokować kodem PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Nie udało się odblokować kodem PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Nie udało się odblokować kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Nie udało się odblokować kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Nie udało się odblokować kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Nie udało się odblokować kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Nie udało się odblokować kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Nie udało się odblokować kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Nie udało się odblokować kodem PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Nie udało się zrealizować żądania odblokowania SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Nie udało się zrealizować żądania odblokowania odpowiednika macierzystej sieci klienta u usługodawcy"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Nie udało się zrealizować żądania odblokowania ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Nie udało się zrealizować żądania odblokowania IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Nie udało się zrealizować żądania odblokowania usługodawcy w podzbiorze sieci."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Odblokowano sieć na karcie SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Odblokowano podzbiór sieci na karcie SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Odblokowano usługodawcę na karcie SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Odblokowano dane korporacyjne na karcie SIM."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Odblokowano kartę SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Odblokowano sieć typu 1 na karcie RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Odblokowano sieć typu 2 na karcie RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Odblokowano HRDP na karcie RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Odblokowano usługodawcę na karcie RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Odblokowano dane korporacyjne na karcie RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Odblokowano RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Odblokowano kodem PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Odblokowano kodem PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Odblokowano kodem PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Odblokowano kodem PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Odblokowano kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Odblokowano kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Odblokowano kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Odblokowano kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Odblokowano kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Odblokowano kodem PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Odblokowano kodem PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Odblokowano SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Odblokowano odpowiednik macierzystej sieci klienta u usługodawcy"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Odblokowano ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Odblokowano IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Odblokowano usługodawcę w podzbiorze sieci."</string> </resources> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index 491581264689..36b461573542 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"O administrador renunciou ao dispositivo para uso pessoal"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"O dispositivo é gerenciado"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Sua organização gerencia este dispositivo e pode monitorar o tráfego de rede. Toque para ver detalhes."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Configurações de localização modificadas pelo administrador"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Toque para ver as configurações de localização."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Os apps podem acessar seu local"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Entre em contato com o administrador de TI para saber mais"</string> <string name="country_detector" msgid="7023275114706088854">"Detector de país"</string> <string name="location_service" msgid="2439187616018455546">"Serviço de localização"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Serviço de notificações do sensor"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Seu dispositivo será limpo"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Não é possível usar o aplicativo para administrador. Seu dispositivo passará por uma limpeza agora.\n\nEm caso de dúvidas, entre em contato com o administrador da sua organização."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Impressão desativada por <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Desbloquear apps pessoais"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Os apps serão bloq. amanhã"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Seu administrador de TI não permite que o perfil de trabalho seja pausado por mais de <xliff:g id="DAYS">%1$d</xliff:g> dias"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Ativar perfil de trabalho"</string> <string name="me" msgid="6207584824693813140">"Eu"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opções do tablet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opções do Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opções do telefone"</string> <string name="global_action_lock" msgid="6949357274257655383">"Bloquear tela"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Desligar"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Desligar"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Reiniciar"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergência"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Relatório de bugs"</string> <string name="global_action_logout" msgid="6093581310002476511">"Finalizar sessão"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acessar comandos extras do provedor de localização"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que o app acesse comandos do provedor não relacionados à localização. Isso pode permitir que o app interfira no funcionamento do GPS ou de outras fontes de localização."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"acessar localização precisa apenas em primeiro plano"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Este app pode ver seu local exato apenas quando está em primeiro plano. Os \"Serviços de localização\" precisam estar ativados e disponíveis no seu dispositivo para que o app possa usá-los. Isso pode aumentar o consumo de bateria."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Esse app poderá acessar seu local exato por meio dos Serviços de localização enquanto estiver sendo usado. Os Serviços de localização do dispositivo precisam estar ativados para que o app possa acessar o local. Isso pode aumentar o uso da bateria."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acessar local aproximado apenas em primeiro plano"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Este app poderá acessar seu local aproximado somente quando estiver em primeiro plano. Os \"Serviços de localização\" precisam estar ativados e disponíveis no dispositivo para que o app possa usá-los."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Esse app poderá acessar seu local aproximado por meio dos Serviços de localização enquanto estiver sendo usado. Os Serviços de localização do dispositivo precisam estar ativados para que o app possa acessar o local."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"acessar a localização em segundo plano"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esse app pode acessar o local em segundo plano, além do acesso em primeiro plano."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esse app poderá acessar o local a qualquer momento, mesmo quando não estiver sendo usado."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"alterar as suas configurações de áudio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite que o app modifique configurações de áudio globais como volume e alto-falantes de saída."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"gravar áudio"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"tirar fotos e gravar vídeos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Este app pode tirar fotos e gravar vídeos usando a câmera a qualquer momento."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que um aplicativo ou serviço acesse as câmeras do sistema para tirar fotos e gravar vídeos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Esse app do sistema ou com privilégios pode tirar fotos e gravar vídeos a qualquer momento usando a câmera do sistema. É necessário que o app tenha também a permissão android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permitir que um aplicativo ou serviço receba callbacks sobre dispositivos de câmera sendo abertos ou fechados."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Esse app pode receber callbacks quando um dispositivo de câmera é aberto (por qualquer app) ou fechado."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"controlar vibração"</string> @@ -1349,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Analisando conteúdo atual"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Novo <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Toque para configurar"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Para transferir fotos e mídia"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Ocorreu um problema com o <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Toque para corrigir"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"O <xliff:g id="NAME">%s</xliff:g> está corrompido. Selecione para corrigir."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> não compatível"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Este dispositivo não é compatível com esse <xliff:g id="NAME">%s</xliff:g>. Toque para configurar em um formato compatível."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Este dispositivo não é compatível com este <xliff:g id="NAME">%s</xliff:g>. Selecione para configurar um formato compatível."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Este dispositivo não é compatível com esse <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> foi removido inesperadamente"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Ejete a mídia antes da remoção para evitar a perda de conteúdo"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> removido"</string> @@ -1623,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir em volume alto por longos períodos pode danificar sua audição."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usar atalho de Acessibilidade?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando o atalho estiver ativado, pressione os dois botões de volume por três segundos para iniciar um recurso de acessibilidade."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Ativar os recursos de acessibilidade?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Manter as duas teclas de volume pressionadas por alguns segundos ativa os recursos de acessibilidade. Isso pode mudar a forma como seu dispositivo funciona.\n\nRecursos atuais:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nÉ possível mudar os recursos selecionados em \"Config. > Acessibilidade\"."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Ativar o TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Manter as duas teclas de volume pressionadas por alguns segundos ativa o TalkBack, um leitor de tela útil para quem é cego ou tem baixa visão. O TalkBack muda completamente a maneira como seu dispositivo funciona.\n\nÉ possível trocar o uso desse atalho para outro recurso em \"Config. > Acessibilidade\"."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Ativar <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Manter as duas teclas de volume pressionadas por alguns segundos ativa o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, um recurso de acessibilidade. Isso pode mudar a forma como seu dispositivo funciona.\n\nÉ possível trocar o uso desse atalho para outro recurso em \"Config. > Acessibilidade\"."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Ativar"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Não ativar"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permitir que o <xliff:g id="SERVICE">%1$s</xliff:g> tenha controle total do seu dispositivo?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se o <xliff:g id="SERVICE">%1$s</xliff:g> for ativado, o dispositivo não usará o bloqueio de tela para melhorar a criptografia de dados."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controle total é adequado para apps que ajudam você com as necessidades de acessibilidade, mas não para a maioria dos apps."</string> @@ -1651,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Negar"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toque em um recurso para começar a usá-lo:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Escolha recursos para usar com o botão de acessibilidade"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Escolha recursos para usar com o atalho da tecla de volume"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"O <xliff:g id="SERVICE_NAME">%s</xliff:g> foi desativado"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar atalhos"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Concluído"</string> @@ -1662,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar atalho"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correção de cor"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Toque nos dois botões de volume e os mantenha pressionados por três segundo para usar o <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Escolha um recurso a ser usado quando você toca no botão de acessibilidade:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Escolha um recurso para usar com o gesto de acessibilidade (deslizar de baixo para cima na tela com dois dedos):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Escolha um recurso para usar com o gesto de acessibilidade (deslizar de baixo para cima na tela com três dedos):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Para alternar entre recursos, toque no botão de acessibilidade e mantenha-o pressionado."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Para alternar entre recursos, deslize de baixo para cima na tela com dois dedos, sem soltar."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Para alternar entre recursos, deslize de baixo para cima na tela com três dedos, sem soltar."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliação"</string> <string name="user_switched" msgid="7249833311585228097">"Usuário atual <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Alternando para <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2049,8 +2026,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> arquivo</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> arquivos</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Ninguém recomendado para compartilhamento"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lista de apps"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Este app não tem permissão de gravação, mas pode capturar áudio pelo dispositivo USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Início"</string> @@ -2086,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Apps de trabalho não podem abrir este conteúdo"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Apps pessoais não são compatíveis com este conteúdo"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Apps pessoais não podem abrir este conteúdo"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Gravar ou tocar áudio em chamadas telefônicas"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permitir que esse app grave ou toque áudio em chamadas telefônicas quando for usado como aplicativo discador padrão."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN para desbloqueio da rede do chip"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN para desbloqueio do subconjunto de rede do chip"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN para desbloqueio do chip corporativo"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN para desbloqueio do provedor de serviços do chip"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN para desbloqueio do chip"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN para desbloqueio de rede1 R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN para desbloqueio de rede2 R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN para desbloqueio de hrpd R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN para desbloqueio de R-UIM corporativo"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN para desbloqueio do provedor de serviços R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN para desbloqueio de R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN para desbloqueio da SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN para desbloqueio de SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN para desbloqueio do ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN para desbloqueio de IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN para desbloqueio do provedor de serviços de subconjunto de rede"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Solicitando desbloqueio da rede do chip…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Solicitando o desbloqueio do subconjunto de rede do chip…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Solicitando o desbloqueio do provedor de serviços do chip…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Solicitando desbloqueio do chip corporativo…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Solicitando o desbloqueio do chip…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Solicitando desbloqueio da rede1 R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Solicitando desbloqueio de rede2 R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Solicitando o desbloqueio de hrpd R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Solicitando desbloqueio do provedor de serviços R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Solicitando desbloqueio de R-UIM corporativo…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Solicitando desbloqueio da SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Solicitando o desbloqueio de SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Solicitando o desbloqueio do ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Solicitando o desbloqueio de IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Solicitando o desbloqueio do provedor de serviços de subconjunto de rede…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Solicitando o desbloqueio de R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Falha na solicitação de desbloqueio da rede do chip."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Falha na solicitação de desbloqueio do subconjunto de rede do chip."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Falha na solicitação do desbloqueio do provedor de serviços do chip."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Falha na solicitação de desbloqueio do chip corporativo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Falha na solicitação do desbloqueio do chip."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Falha na solicitação de desbloqueio de rede1 R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Falha na solicitação de desbloqueio de rede2 R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Falha na solicitação de desbloqueio de hrpd R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Falha na solicitação de desbloqueio de R-UIM corporativo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Falha na solicitação de desbloqueio do provedor de serviços R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Falha na solicitação de desbloqueio de R-UIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Falha na solicitação de desbloqueio da SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Falha na solicitação de desbloqueio de SP Equivalent Home PLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Falha na solicitação de desbloqueio do ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Falha na solicitação de desbloqueio de IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Falha na solicitação de desbloqueio do provedor de serviços de subconjunto de rede."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Desbloqueio da rede do chip concluído."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"O desbloqueio do subconjunto de rede do chip foi concluído."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Desbloqueio do provedor de serviços do chip concluído."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Desbloqueio do chip corporativo concluído."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"O chip foi desbloqueado."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"O desbloqueio de rede1 R-UIM foi concluído."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"O desbloqueio de rede2 R-UIM foi concluído."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Desbloqueio de hrpd R-UIM concluído."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Desbloqueio do provedor de serviços R-UIM concluído."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Desbloqueio de R-UIM corporativo concluído."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Desbloqueio de R-UIM concluído."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"A SPN foi desbloqueada."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"O SP Equivalent Home PLMN foi desbloqueado."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Desbloqueio do ICCID concluído."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Desbloqueio de IMPI concluído."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Desbloqueio do provedor de serviços de subconjunto de rede concluído."</string> </resources> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 6ee0ae9e6612..e6dacdda89f7 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"O administrador anulou o dispositivo para utilização pessoal."</string> <string name="network_logging_notification_title" msgid="554983187553845004">"O dispositivo é gerido"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"A sua entidade gere este dispositivo e pode monitorizar o tráfego de rede. Toque para obter mais detalhes."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Definições de localização alteradas pelo administrador"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Toque para ver as definições de localização."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"As apps podem aceder à sua localização"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Contacte o administrador de TI para saber mais."</string> <string name="country_detector" msgid="7023275114706088854">"Detetor de país"</string> <string name="location_service" msgid="2439187616018455546">"Serviço de localização"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Serviço de notificações do sensor"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"O seu dispositivo será apagado"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Não é possível utilizar a aplicação de administrador. O seu dispositivo será agora apagado.\n\nSe tiver questões, contacte o administrador da entidade."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Impressão desativada por <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Desbloqueie as apps pessoais"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"As apps são bloqueadas amanhã"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"O seu administrador de TI não permite que o seu perfil de trabalho seja colocado em pausa durante mais de <xliff:g id="DAYS">%1$d</xliff:g> dias."</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Ativar perfil de trabalho"</string> <string name="me" msgid="6207584824693813140">"Eu"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opções do tablet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opções do Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opções do telefone"</string> <string name="global_action_lock" msgid="6949357274257655383">"Bloqueio de ecrã"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Desligar"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Ligar/desligar"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Reiniciar"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergência"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Relatório de erros"</string> <string name="global_action_logout" msgid="6093581310002476511">"Terminar sessão"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"aceder a comandos adicionais do fornecedor de localização"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que a aplicação aceda a comandos adicionais do fornecedor de localização. Esta opção pode permitir que a aplicação interfira com o funcionamento do GPS ou de outras fontes de localização."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"apenas aceder à localização exata em primeiro plano"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Esta aplicação apenas pode obter a sua localização exata quando estiver em primeiro plano. É necessário que os Serviços de localização estejam ativados e disponíveis no seu dispositivo para que a aplicação os possa utilizar. Esta ação pode aumentar o consumo da bateria."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Esta app pode obter a sua localização exata a partir dos Serviços de localização enquanto a app está a ser utilizada. Os Serviços de localização para o dispositivo têm de estar ativados para a app obter a localização. Isto pode aumentar a utilização da bateria."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"apenas aceder à localização aproximada em primeiro plano"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Esta aplicação apenas pode obter a sua localização aproximada quando estiver em primeiro plano. É necessário que os Serviços de localização estejam ativados e disponíveis para que a aplicação os possa utilizar."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Esta app pode obter a sua localização aproximada a partir dos Serviços de localização enquanto a app está a ser utilizada. Os Serviços de localização para o dispositivo têm de estar ativados para a app obter a localização."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"aceder à localização em segundo plano"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esta aplicação pode aceder à localização mesmo estando em segundo plano, além do acesso à localização em primeiro plano."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esta app pode aceder à localização em qualquer altura, mesmo quando a app não está a ser utilizada."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"alterar as suas definições de áudio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite que a aplicação modifique definições de áudio globais, tais como o volume e qual o altifalante utilizado para a saída de som."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"gravar áudio"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"tirar fotos e vídeos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Esta aplicação pode tirar fotos e gravar vídeos através da câmara em qualquer altura."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que uma aplicação ou um serviço aceda às câmaras do sistema para tirar fotos e vídeos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Esta app do sistema ou privilegiada pode tirar fotos e gravar vídeos através de uma câmara do sistema em qualquer altura. Também necessita da autorização android.permission.CAMERA para a app."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permitir que uma app ou um serviço receba chamadas de retorno sobre dispositivos de câmara que estão a ser abertos ou fechados"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Esta app pode receber chamadas de retorno quando qualquer dispositivo de câmara está a ser aberto (e por que aplicação) ou fechado."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"controlar vibração"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Permite à aplicação controlar o vibrador."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite que a app aceda ao estado de vibração."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"A rever o conteúdo atual…"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Novo <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Toque para configurar."</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Transf. fotos, conteúdos multimédia."</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Ocorreu um problema com o <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Toque para corrigir."</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"O(a) <xliff:g id="NAME">%s</xliff:g> está danificado(a). Selecione para corrigir."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> não suportado"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Este dispositivo não é compatível com este <xliff:g id="NAME">%s</xliff:g>. Toque para o configurar num formato compatível."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Este dispositivo não é compatível com este(a) <xliff:g id="NAME">%s</xliff:g>. Selecione para configurar num formato compatível."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Este dispositivo não é compatível com este <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> foi removido inesperadamente"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Ejete o armazenamento multimédia antes de o remover para evitar a perda de conteúdos."</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> removido"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir com um volume elevado durante longos períodos poderá ser prejudicial para a sua audição."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Pretende utilizar o atalho de acessibilidade?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando o atalho está ativado, premir ambos os botões de volume durante 3 segundos inicia uma funcionalidade de acessibilidade."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Pretende ativar as funcionalidades de acessibilidade?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Manter premidas ambas as teclas de volume durante alguns segundos ativa as funcionalidades de acessibilidade. Estas podem alterar a forma como o seu dispositivo funciona.\n\nFuncionalidades atuais:\n<xliff:g id="SERVICE">%1$s</xliff:g>\npode alterar as funcionalidades selecionadas em Definições > Acessibilidade."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Pretende ativar o TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Manter premidas ambas as teclas de volume durante alguns segundos ativa o TalkBack, um leitor de ecrã que é útil para pessoas cegas ou com visão reduzida. O TalkBack altera completamente a forma como o seu dispositivo funciona.\n\nPode alterar este atalho para outra funcionalidade em Definições > Acessibilidade."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Pretende ativar o serviço <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Manter premidas ambas as teclas de volume durante alguns segundos ativa o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, uma funcionalidade de acessibilidade. Esta pode alterar a forma como o seu dispositivo funciona.\n\nPode alterar este atalho para outra funcionalidade em Definições > Acessibilidade."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Ativar"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Não ativar"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Pretende permitir que o serviço <xliff:g id="SERVICE">%1$s</xliff:g> tenha controlo total sobre o seu dispositivo?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se ativar o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, o dispositivo não utilizará o bloqueio de ecrã para otimizar a encriptação de dados."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controlo total é adequado para aplicações que ajudam nas necessidades de acessibilidade, mas não para a maioria das aplicações."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Recusar"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toque numa funcionalidade para começar a utilizá-la:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Escolha funcionalidades para utilizar com o botão Acessibilidade"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Escolha funcionalidades para utilizar com o atalho das teclas de volume"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"O serviço <xliff:g id="SERVICE_NAME">%s</xliff:g> foi desativado."</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar atalhos"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Concluído"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atalho"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correção da cor"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas do volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas do volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Prima sem soltar as teclas de volume durante três segundos para utilizar o serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Escolha uma funcionalidade para utilizar quando tocar no botão Acessibilidade:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Escolha a funcionalidade a utilizar com o gesto de acessibilidade (deslize rapidamente com dois dedos para cima a partir da parte inferior do ecrã):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Escolha a funcionalidade a utilizar com o gesto de acessibilidade (deslize rapidamente com três dedos para cima a partir da parte inferior do ecrã):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Para alternar entre funcionalidades, toque sem soltar no botão Acessibilidade."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Para alternar entre funcionalidades, deslize rapidamente com dois dedos para cima sem soltar."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Para alternar entre funcionalidades, deslize rapidamente com três dedos para cima sem soltar."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliação"</string> <string name="user_switched" msgid="7249833311585228097">"<xliff:g id="NAME">%1$s</xliff:g> do utilizador atual."</string> <string name="user_switching_message" msgid="1912993630661332336">"A mudar para <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> ficheiros</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> ficheiro</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Não existem pessoas recomendadas com quem partilhar"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lista de aplicações"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Esta aplicação não recebeu autorização de gravação, mas pode capturar áudio através deste dispositivo USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Página inicial"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Este conteúdo não pode ser aberto por nenhuma app de trabalho."</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Este conteúdo não é suportado por nenhuma app pessoal."</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Este conteúdo não pode ser aberto por nenhuma app pessoal."</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Gravar ou reproduzir áudio em chamadas telefónicas"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permite que esta app, quando atribuída como uma aplicação de telefone predefinida, grave ou reproduza áudio em chamadas telefónicas."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN para desbloqueio de rede do cartão SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN para desbloqueio do subconjunto da rede do cartão SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN para desbloqueio empresarial do cartão SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN para desbloqueio do fornecedor de serviços do cartão SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN para desbloqueio do cartão SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Introduzir PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Introduzir PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Introduzir PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Introduzir PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Introduzir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN para desbloqueio da rede 1 do cartão R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN para desbloqueio da rede 2 do cartão R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN de desbloqueio de HRPD do cartão R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN para desbloqueio empresarial do cartão R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN para desbloqueio do fornecedor de serviços do cartão R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN para desbloqueio de cartão R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Introduzir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Introduzir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Introduzir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Introduzir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Introduzir PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Introduzir PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN para desbloqueio do SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN para desbloqueio da PLMN doméstica equivalente a SP"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN para desbloqueio do ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN para desbloqueio do IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN para desbloqueio do fornecedor de serviços do subconjunto da rede"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"A solicitar o desbloqueio da rede do cartão SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"A solicitar o desbloqueio da rede do cartão SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"A solicitar o desbloqueio do fornecedor de serviços do cartão SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"A solicitar o desbloqueio empresarial do cartão SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"A solicitar o desbloqueio do PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"A solicitar o desbloqueio do PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"A solicitar o desbloqueio do PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"A solicitar o desbloqueio do PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"A solicitar o desbloqueio do PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"A solicitar o desbloqueio do cartão SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"A solicitar o desbloqueio da rede 1 do cartão R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"A solicitar o desbloqueio da rede 2 do cartão R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"A solicitar o desbloqueio de HRPD do cartão R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"A solicitar o desbloqueio do fornecedor de serviços do cartão R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"A solicitar o desbloqueio empresarial do cartão R-UIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"A solicitar o desbloqueio do SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"A solicitar o desbloqueio da PLMN doméstica equivalente a SP…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"A solicitar o desbloqueio do ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"A solicitar o desbloqueio do IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"A solicitar o desbloqueio do fornecedor de serviços do subconjunto da rede…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"A solicitar o desbloqueio do cartão R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"A solicitar o desbloqueio do PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"A solicitar o desbloqueio do PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"A solicitar o desbloqueio do PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"A solicitar o desbloqueio do PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"A solicitar o desbloqueio do PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"A solicitar o desbloqueio do PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"O pedido de desbloqueio da rede do cartão SIM falhou."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"O pedido de desbloqueio do subconjunto da rede do cartão SIM falhou."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"O pedido de desbloqueio do fornecedor de serviços do cartão SIM falhou."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"O pedido de desbloqueio empresarial do cartão SIM falhou."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"O pedido de desbloqueio do cartão SIM falhou."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"O pedido de desbloqueio da rede 1 do cartão R-UIM falhou."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"O pedido de desbloqueio da Rede 2 do cartão R-UIM falhou."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"O pedido de desbloqueio de HRPD do cartão R-UIM falhou."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"O pedido para desbloqueio empresarial do cartão R-UIM falhou."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"O pedido de desbloqueio do fornecedor de serviços do cartão R-UIM falhou."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"O pedido de desbloqueio do cartão R-UIM falhou."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"O desbloqueio do PUK falhou."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"O desbloqueio do PUK falhou."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"O desbloqueio do PUK falhou."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"O desbloqueio do PUK falhou."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"O desbloqueio do PUK falhou."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"O desbloqueio do PUK falhou."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"O desbloqueio do PUK falhou."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"O desbloqueio do PUK falhou."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"O desbloqueio do PUK falhou."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"O desbloqueio do PUK falhou."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"O desbloqueio do PUK falhou."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"O pedido de desbloqueio do SPN falhou."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"O pedido de desbloqueio da PLMN doméstica equivalente a SP falhou."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"O pedido de desbloqueio do ICCID falhou."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"O pedido de desbloqueio do IMPI falhou."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"O pedido de desbloqueio do fornecedor de serviços do subconjunto da rede falhou."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"O desbloqueio da rede do cartão SIM foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"O desbloqueio do subconjunto da rede do cartão SIM foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"O desbloqueio do fornecedor de serviços do cartão SIM foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"O desbloqueio empresarial do cartão SIM foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Desbloqueio do cartão SIM bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"O desbloqueio da rede 1 do cartão R-UIM foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"O desbloqueio da Rede 2 do cartão R-UIM foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"O desbloqueio de HRPD do cartão R-UIM foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"O pedido de desbloqueio do fornecedor de serviços do cartão R-UIM foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"O desbloqueio empresarial do cartão R-UIM foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"O desbloqueio de cartão R-UIM foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"O desbloqueio do PUK foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"O desbloqueio do PUK foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"O desbloqueio do PUK foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"O desbloqueio do PUK foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"O desbloqueio do PUK foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"O desbloqueio do PUK foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"O desbloqueio do PUK foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"O desbloqueio do PUK foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"O desbloqueio do PUK foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"O desbloqueio do PUK foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"O desbloqueio do PUK foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"O desbloqueio do SPN foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"O desbloqueio da PLMN doméstica equivalente a SP foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"O desbloqueio do ICCID foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"O desbloqueio do IMPI foi bem-sucedido."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"O desbloqueio do fornecedor de serviços do subconjunto da rede foi bem-sucedido."</string> </resources> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 491581264689..36b461573542 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"O administrador renunciou ao dispositivo para uso pessoal"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"O dispositivo é gerenciado"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Sua organização gerencia este dispositivo e pode monitorar o tráfego de rede. Toque para ver detalhes."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Configurações de localização modificadas pelo administrador"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Toque para ver as configurações de localização."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Os apps podem acessar seu local"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Entre em contato com o administrador de TI para saber mais"</string> <string name="country_detector" msgid="7023275114706088854">"Detector de país"</string> <string name="location_service" msgid="2439187616018455546">"Serviço de localização"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Serviço de notificações do sensor"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Seu dispositivo será limpo"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Não é possível usar o aplicativo para administrador. Seu dispositivo passará por uma limpeza agora.\n\nEm caso de dúvidas, entre em contato com o administrador da sua organização."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Impressão desativada por <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Desbloquear apps pessoais"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Os apps serão bloq. amanhã"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Seu administrador de TI não permite que o perfil de trabalho seja pausado por mais de <xliff:g id="DAYS">%1$d</xliff:g> dias"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Ativar perfil de trabalho"</string> <string name="me" msgid="6207584824693813140">"Eu"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opções do tablet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opções do Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opções do telefone"</string> <string name="global_action_lock" msgid="6949357274257655383">"Bloquear tela"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Desligar"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Desligar"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Reiniciar"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergência"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Relatório de bugs"</string> <string name="global_action_logout" msgid="6093581310002476511">"Finalizar sessão"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acessar comandos extras do provedor de localização"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que o app acesse comandos do provedor não relacionados à localização. Isso pode permitir que o app interfira no funcionamento do GPS ou de outras fontes de localização."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"acessar localização precisa apenas em primeiro plano"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Este app pode ver seu local exato apenas quando está em primeiro plano. Os \"Serviços de localização\" precisam estar ativados e disponíveis no seu dispositivo para que o app possa usá-los. Isso pode aumentar o consumo de bateria."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Esse app poderá acessar seu local exato por meio dos Serviços de localização enquanto estiver sendo usado. Os Serviços de localização do dispositivo precisam estar ativados para que o app possa acessar o local. Isso pode aumentar o uso da bateria."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acessar local aproximado apenas em primeiro plano"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Este app poderá acessar seu local aproximado somente quando estiver em primeiro plano. Os \"Serviços de localização\" precisam estar ativados e disponíveis no dispositivo para que o app possa usá-los."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Esse app poderá acessar seu local aproximado por meio dos Serviços de localização enquanto estiver sendo usado. Os Serviços de localização do dispositivo precisam estar ativados para que o app possa acessar o local."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"acessar a localização em segundo plano"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esse app pode acessar o local em segundo plano, além do acesso em primeiro plano."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esse app poderá acessar o local a qualquer momento, mesmo quando não estiver sendo usado."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"alterar as suas configurações de áudio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite que o app modifique configurações de áudio globais como volume e alto-falantes de saída."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"gravar áudio"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"tirar fotos e gravar vídeos"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Este app pode tirar fotos e gravar vídeos usando a câmera a qualquer momento."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que um aplicativo ou serviço acesse as câmeras do sistema para tirar fotos e gravar vídeos"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Esse app do sistema ou com privilégios pode tirar fotos e gravar vídeos a qualquer momento usando a câmera do sistema. É necessário que o app tenha também a permissão android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permitir que um aplicativo ou serviço receba callbacks sobre dispositivos de câmera sendo abertos ou fechados."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Esse app pode receber callbacks quando um dispositivo de câmera é aberto (por qualquer app) ou fechado."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"controlar vibração"</string> @@ -1349,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Analisando conteúdo atual"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Novo <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Toque para configurar"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Para transferir fotos e mídia"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Ocorreu um problema com o <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Toque para corrigir"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"O <xliff:g id="NAME">%s</xliff:g> está corrompido. Selecione para corrigir."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> não compatível"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Este dispositivo não é compatível com esse <xliff:g id="NAME">%s</xliff:g>. Toque para configurar em um formato compatível."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Este dispositivo não é compatível com este <xliff:g id="NAME">%s</xliff:g>. Selecione para configurar um formato compatível."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Este dispositivo não é compatível com esse <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> foi removido inesperadamente"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Ejete a mídia antes da remoção para evitar a perda de conteúdo"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> removido"</string> @@ -1623,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir em volume alto por longos períodos pode danificar sua audição."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usar atalho de Acessibilidade?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando o atalho estiver ativado, pressione os dois botões de volume por três segundos para iniciar um recurso de acessibilidade."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Ativar os recursos de acessibilidade?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Manter as duas teclas de volume pressionadas por alguns segundos ativa os recursos de acessibilidade. Isso pode mudar a forma como seu dispositivo funciona.\n\nRecursos atuais:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nÉ possível mudar os recursos selecionados em \"Config. > Acessibilidade\"."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Ativar o TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Manter as duas teclas de volume pressionadas por alguns segundos ativa o TalkBack, um leitor de tela útil para quem é cego ou tem baixa visão. O TalkBack muda completamente a maneira como seu dispositivo funciona.\n\nÉ possível trocar o uso desse atalho para outro recurso em \"Config. > Acessibilidade\"."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Ativar <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Manter as duas teclas de volume pressionadas por alguns segundos ativa o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, um recurso de acessibilidade. Isso pode mudar a forma como seu dispositivo funciona.\n\nÉ possível trocar o uso desse atalho para outro recurso em \"Config. > Acessibilidade\"."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Ativar"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Não ativar"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permitir que o <xliff:g id="SERVICE">%1$s</xliff:g> tenha controle total do seu dispositivo?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se o <xliff:g id="SERVICE">%1$s</xliff:g> for ativado, o dispositivo não usará o bloqueio de tela para melhorar a criptografia de dados."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controle total é adequado para apps que ajudam você com as necessidades de acessibilidade, mas não para a maioria dos apps."</string> @@ -1651,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Negar"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toque em um recurso para começar a usá-lo:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Escolha recursos para usar com o botão de acessibilidade"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Escolha recursos para usar com o atalho da tecla de volume"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"O <xliff:g id="SERVICE_NAME">%s</xliff:g> foi desativado"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar atalhos"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Concluído"</string> @@ -1662,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar atalho"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correção de cor"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Toque nos dois botões de volume e os mantenha pressionados por três segundo para usar o <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Escolha um recurso a ser usado quando você toca no botão de acessibilidade:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Escolha um recurso para usar com o gesto de acessibilidade (deslizar de baixo para cima na tela com dois dedos):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Escolha um recurso para usar com o gesto de acessibilidade (deslizar de baixo para cima na tela com três dedos):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Para alternar entre recursos, toque no botão de acessibilidade e mantenha-o pressionado."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Para alternar entre recursos, deslize de baixo para cima na tela com dois dedos, sem soltar."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Para alternar entre recursos, deslize de baixo para cima na tela com três dedos, sem soltar."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliação"</string> <string name="user_switched" msgid="7249833311585228097">"Usuário atual <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Alternando para <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2049,8 +2026,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> arquivo</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> arquivos</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Ninguém recomendado para compartilhamento"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lista de apps"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Este app não tem permissão de gravação, mas pode capturar áudio pelo dispositivo USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Início"</string> @@ -2086,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Apps de trabalho não podem abrir este conteúdo"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Apps pessoais não são compatíveis com este conteúdo"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Apps pessoais não podem abrir este conteúdo"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Gravar ou tocar áudio em chamadas telefônicas"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permitir que esse app grave ou toque áudio em chamadas telefônicas quando for usado como aplicativo discador padrão."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN para desbloqueio da rede do chip"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN para desbloqueio do subconjunto de rede do chip"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN para desbloqueio do chip corporativo"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN para desbloqueio do provedor de serviços do chip"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN para desbloqueio do chip"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN para desbloqueio de rede1 R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN para desbloqueio de rede2 R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN para desbloqueio de hrpd R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN para desbloqueio de R-UIM corporativo"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN para desbloqueio do provedor de serviços R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN para desbloqueio de R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Insira a PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN para desbloqueio da SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN para desbloqueio de SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN para desbloqueio do ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN para desbloqueio de IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN para desbloqueio do provedor de serviços de subconjunto de rede"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Solicitando desbloqueio da rede do chip…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Solicitando o desbloqueio do subconjunto de rede do chip…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Solicitando o desbloqueio do provedor de serviços do chip…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Solicitando desbloqueio do chip corporativo…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Solicitando o desbloqueio do chip…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Solicitando desbloqueio da rede1 R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Solicitando desbloqueio de rede2 R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Solicitando o desbloqueio de hrpd R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Solicitando desbloqueio do provedor de serviços R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Solicitando desbloqueio de R-UIM corporativo…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Solicitando desbloqueio da SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Solicitando o desbloqueio de SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Solicitando o desbloqueio do ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Solicitando o desbloqueio de IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Solicitando o desbloqueio do provedor de serviços de subconjunto de rede…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Solicitando o desbloqueio de R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Solicitando o desbloqueio com PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Falha na solicitação de desbloqueio da rede do chip."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Falha na solicitação de desbloqueio do subconjunto de rede do chip."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Falha na solicitação do desbloqueio do provedor de serviços do chip."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Falha na solicitação de desbloqueio do chip corporativo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Falha na solicitação do desbloqueio do chip."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Falha na solicitação de desbloqueio de rede1 R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Falha na solicitação de desbloqueio de rede2 R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Falha na solicitação de desbloqueio de hrpd R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Falha na solicitação de desbloqueio de R-UIM corporativo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Falha na solicitação de desbloqueio do provedor de serviços R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Falha na solicitação de desbloqueio de R-UIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Falha no desbloqueio com PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Falha na solicitação de desbloqueio da SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Falha na solicitação de desbloqueio de SP Equivalent Home PLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Falha na solicitação de desbloqueio do ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Falha na solicitação de desbloqueio de IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Falha na solicitação de desbloqueio do provedor de serviços de subconjunto de rede."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Desbloqueio da rede do chip concluído."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"O desbloqueio do subconjunto de rede do chip foi concluído."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Desbloqueio do provedor de serviços do chip concluído."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Desbloqueio do chip corporativo concluído."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"O chip foi desbloqueado."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"O desbloqueio de rede1 R-UIM foi concluído."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"O desbloqueio de rede2 R-UIM foi concluído."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Desbloqueio de hrpd R-UIM concluído."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Desbloqueio do provedor de serviços R-UIM concluído."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Desbloqueio de R-UIM corporativo concluído."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Desbloqueio de R-UIM concluído."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Desbloqueio com PUK concluído."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"A SPN foi desbloqueada."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"O SP Equivalent Home PLMN foi desbloqueado."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Desbloqueio do ICCID concluído."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Desbloqueio de IMPI concluído."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Desbloqueio do provedor de serviços de subconjunto de rede concluído."</string> </resources> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index a08c655939af..18429824c8f3 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -193,8 +193,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administratorul a retras dispozitivul pentru uz personal"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Dispozitivul este gestionat"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Organizația dvs. gestionează acest dispozitiv și poate monitoriza traficul în rețea. Atingeți pentru mai multe detalii."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Setările privind locația au fost modificate de administrator"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Atingeți pentru a vedea setările privind locația."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplicațiile vă pot accesa locația"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Contactați administratorul IT pentru a afla mai multe"</string> <string name="country_detector" msgid="7023275114706088854">"Detector de țară"</string> <string name="location_service" msgid="2439187616018455546">"Servicii de localizare"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Serviciu pentru notificări de la senzori"</string> @@ -202,14 +202,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Datele de pe dispozitiv vor fi șterse"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Aplicația de administrare nu poate fi utilizată. Dispozitivul va fi șters.\n\nDacă aveți întrebări, contactați administratorul organizației dvs."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Printare dezactivată de <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Deblocați aplicațiile personale"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Aplicațiile vor fi blocate mâine"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Administratorul IT nu permite ca profilul de serviciu să fie întrerupt mai mult de <xliff:g id="DAYS">%1$d</xliff:g> zile"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Activați profilul de serviciu"</string> <string name="me" msgid="6207584824693813140">"Eu"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opțiuni tablet PC"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opțiuni pentru Android TV"</string> @@ -243,10 +239,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opțiuni telefon"</string> <string name="global_action_lock" msgid="6949357274257655383">"Blocați ecranul"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Opriți"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Alimentare"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Reporniți"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Urgență"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Raport despre erori"</string> <string name="global_action_logout" msgid="6093581310002476511">"Încheiați sesiunea"</string> @@ -431,11 +425,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"accesare comenzi suplimentare ale furnizorului locației"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite aplicației să acceseze comenzi suplimentare pentru furnizorul locației. Aplicația ar putea să utilizeze această permisiune pentru a influența operațiile GPS sau ale altor surse de locații."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"să acceseze locația exactă în prim-plan"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Aplicația vă poate obține locația exactă numai când rulează în prim-plan. Serviciile de localizare trebuie să fie activate și disponibile pe dispozitiv pentru ca aplicația să le poată folosi. Acest lucru poate accelera descărcarea bateriei."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Aplicația vă poate determina locația exactă cu ajutorul serviciilor de localizare atunci când este folosită. Pentru ca aplicația să poată determina locația, trebuie să activați serviciile de localizare pentru dispozitiv. Aceasta poate mări utilizarea bateriei."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"să acceseze locația aproximativă numai în prim-plan."</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Aplicația vă poate determina locația aproximativă numai când rulează în prim-plan. Serviciile de localizare trebuie să fie activate și disponibile pe dispozitiv pentru ca aplicația să le poată folosi."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Aplicația vă poate determina locația aproximativă cu ajutorul serviciilor de localizare atunci când este folosită. Pentru ca aplicația să poată determina locația, trebuie să activați serviciile de localizare pentru dispozitiv."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"accesați locația în fundal"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Această aplicație poate accesa locația cât timp rulează în fundal, pe lângă accesul la locație din prim-plan."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplicația poate accesa locația oricând, chiar dacă nu este folosită."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"modificare setări audio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite aplicației să modifice setările audio globale, cum ar fi volumul și difuzorul care este utilizat pentru ieșire."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"înregistreze sunet"</string> @@ -447,11 +441,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"realizarea de fotografii și videoclipuri"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Această aplicație poate să facă fotografii și să înregistreze videoclipuri folosind camera foto în orice moment."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Permiteți unei aplicații sau unui serviciu accesul la camerele de sistem, ca să fotografieze și să înregistreze videoclipuri"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Această aplicație de sistem privilegiată poate să fotografieze și să înregistreze videoclipuri folosind o cameră de sistem în orice moment. Necesită și permisiunea android.permission.CAMERA pentru aplicație"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permiteți unei aplicații sau unui serviciu să primească apeluri inverse atunci când sunt deschise sau închise dispozitive cu cameră."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Această aplicație poate primi apeluri inverse atunci când este deschis (de aplicație) sau închis orice dispozitiv cu cameră."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"controlează vibrarea"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Permite aplicației să controleze mecanismul de vibrare."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite aplicației să acceseze modul de vibrații."</string> @@ -1370,13 +1362,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Se examinează conținutul curent"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> nou"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Atingeți pentru a configura"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Pentru a transfera fotografii și fișiere media"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problemă cu <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Atingeți pentru a remedia"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> este corupt. Selectați pentru a remedia."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> necompatibil"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Dispozitivul nu este compatibil cu acest <xliff:g id="NAME">%s</xliff:g>. Atingeți pentru configurare într-un format compatibil."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Dispozitivul nu este compatibil cu acest <xliff:g id="NAME">%s</xliff:g>. Selectați pentru configurare într-un format compatibil."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Dispozitivul nu este compatibil cu acest <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> scos pe neașteptate"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Deconectați din setări dispozitivele media înainte de a le îndepărta, pentru a evita pierderea conținutului"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"S-a eliminat <xliff:g id="NAME">%s</xliff:g>"</string> @@ -1646,24 +1641,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ridicați volumul mai sus de nivelul recomandat?\n\nAscultarea la volum ridicat pe perioade lungi de timp vă poate afecta auzul."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Utilizați comanda rapidă pentru accesibilitate?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Atunci când comanda rapidă este activată, dacă apăsați ambele butoane de volum timp de trei secunde, veți lansa o funcție de accesibilitate."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Activați funcțiile de accesibilitate?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Dacă apăsați ambele taste de volum câteva secunde, activați funcțiile de accesibilitate. Acest lucru poate schimba funcționarea dispozitivului.\n\nFuncțiile actuale:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nPuteți schimba funcțiile selectate din Setări > Accesibilitate."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Activați TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Dacă apăsați ambele taste de volum câteva secunde, activați TalkBack, un cititor de ecran util pentru persoanele nevăzătoare sau cu vedere slabă. TalkBack schimbă complet funcționarea dispozitivului.\n\nPuteți alege altă funcție pentru această comandă în Setări > Accesibilitate."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Activați <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Dacă apăsați ambele taste de volum câteva secunde, activați funcția de accesibilitate <xliff:g id="SERVICE">%1$s</xliff:g>. Acest lucru poate schimba funcționarea dispozitivului.\n\nPuteți alege altă funcție pentru această comandă în Setări > Accesibilitate."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activați"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nu activați"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permiteți serviciului <xliff:g id="SERVICE">%1$s</xliff:g> să aibă control total asupra dispozitivului dvs.?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Dacă activați <xliff:g id="SERVICE">%1$s</xliff:g>, dispozitivul nu va folosi blocarea ecranului pentru a îmbunătăți criptarea datelor."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Controlul total este adecvat pentru aplicații care vă ajută cu accesibilitatea, însă nu pentru majoritatea aplicaților."</string> @@ -1674,10 +1660,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permiteți"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Refuzați"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Atingeți o funcție ca să începeți să o folosiți:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Alegeți funcțiile pe care să le folosiți cu butonul de accesibilitate"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Alegeți funcțiile pe care să le folosiți cu comanda rapidă pentru butonul de volum"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> a fost dezactivat"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editați comenzile rapide"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gata"</string> @@ -1685,23 +1669,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizați comanda rapidă"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversarea culorilor"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corecția culorii"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S-au apăsat lung tastele de volum. S-a activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"S-au apăsat lung tastele de volum. S-a dezactivat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Apăsați ambele butoane de volum timp de trei secunde pentru a folosi <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Alegeți o funcție pe care să o folosiți când atingeți butonul de accesibilitate:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Alegeți o funcție pe care să o folosiți cu gestul de accesibilitate (glisați în sus cu două degete din partea de jos a ecranului):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Alegeți o funcție pe care să o folosiți cu gestul de accesibilitate (glisați în sus cu trei degete din partea de jos a ecranului):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Pentru a comuta între funcții, atingeți lung butonul de accesibilitate."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Pentru a comuta între funcții, glisați în sus cu două degete și mențineți apăsat."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Pentru a comuta între funcții, glisați în sus cu trei degete și mențineți apăsat."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Mărire"</string> <string name="user_switched" msgid="7249833311585228097">"Utilizator curent: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Se comută la <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2084,8 +2060,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> de fișiere</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> fișier</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Nu există persoane recomandate pentru permiterea accesului"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lista de aplicații"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Permisiunea de înregistrare nu a fost acordată aplicației, dar aceasta poate să înregistreze conținut audio prin intermediul acestui dispozitiv USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Pornire"</string> @@ -2121,222 +2096,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Aplicațiile pentru lucru nu pot deschide acest conținut"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Aplicațiile personale nu acceptă acest conținut"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Aplicațiile personale nu pot deschide acest conținut"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Înregistrează sau redă conținut audio în apelurile telefonice"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permite acestei aplicații, atunci când este setată ca aplicație telefon prestabilită, să înregistreze sau să redea conținut audio în apelurile telefonice."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Codul PIN de deblocare SIM privind rețeaua"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Codul PIN de deblocare SIM privind subsetul de rețea"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Codul PIN de deblocare SIM corporativă"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Codul PIN de deblocare SIM privind furnizorul de servicii"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Codul PIN de deblocare SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Introduceți codul PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Introduceți codul PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Introduceți codul PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Introduceți codul PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Introduceți codul PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Codul PIN de deblocare RUIM Network1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Codul PIN de deblocare RUIM Network2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Codul PIN de deblocare RUIM Hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Codul PIN de deblocare RUIM corporativă"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Codul PIN de deblocare RUIM privind furnizorii de servicii"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Codul PIN de deblocare RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Introduceți codul PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Introduceți codul PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Introduceți codul PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Introduceți codul PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Introduceți codul PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Introduceți codul PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Codul PIN de deblocare SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Codul PIN de deblocare privind furnizorul de servicii și Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Codul PIN de deblocare ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Codul PIN de deblocare IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Codul PIN de deblocare privind furnizorul de servicii și subsetul de rețea"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Se solicită deblocarea SIM privind rețeaua…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Se solicită deblocarea SIM privind subsetul de rețea…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Se solicită deblocarea SIM privind furnizorul de servicii…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Se solicită deblocarea SIM corporativă…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Se solicită deblocarea cu codul PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Se solicită deblocarea cu codul PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Se solicită deblocarea cu codul PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Se solicită deblocarea cu codul PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Se solicită deblocarea cu codul PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Se solicită deblocarea SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Se solicită deblocarea RUIM Network1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Se solicită deblocarea RUIM Network2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Se solicită deblocarea RUIM hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Se solicită deblocarea RUIM privind furnizorii de servicii…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Se solicită deblocarea RUIM corporativă…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Se solicită deblocarea SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Se solicită deblocarea privind furnizorul de servicii și Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Se solicită deblocarea ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Se solicită deblocarea IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Se solicită deblocarea privind furnizorul de servicii și subsetul de rețea…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Se solicită deblocarea RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Se solicită deblocarea cu codul PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Se solicită deblocarea cu codul PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Se solicită deblocarea cu codul PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Se solicită deblocarea cu codul PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Se solicită deblocarea cu codul PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Se solicită deblocarea cu codul PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Nu s-a trimis solicitarea de deblocare SIM privind rețeaua."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Nu s-a trimis solicitarea de deblocare privind subsetul de rețea."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Nu s-a trimis solicitarea de deblocare SIM privind furnizorul de servicii."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Nu s-a trimis solicitarea de deblocare SIM corporativă."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Nu s-a solicitat deblocarea SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Nu s-a trimis solicitarea de deblocare RUIM Network1."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Nu s-a trimis solicitarea de deblocare RUIM Network2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Nu s-a trimis solicitarea de deblocare RUIM Hrpd."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Nu s-a solicitat deblocarea RUIM corporativă."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Nu s-a trimis solicitarea de deblocare RUIM privind furnizorii de servicii."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Nu s-a trimis solicitarea de deblocare RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Nu s-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Nu s-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Nu s-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Nu s-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Nu s-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Nu s-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Nu s-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Nu s-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Nu s-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Nu s-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Nu s-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Nu s-a solicitat deblocarea SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Nu s-a trimis solicitarea de deblocare privind furnizorul de servicii și Equivalent Home PLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Nu s-a trimis solicitarea de deblocare ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Nu s-a trimis solicitarea de deblocare IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Nu s-a trimis solicitarea de deblocare privind furnizorul de servicii și subsetul de rețea."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"S-a realizat deblocarea SIM privind rețeaua."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"S-a realizat deblocarea SIM privind subsetul de rețea."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"S-a realizat deblocarea SIM privind furnizorul de servicii."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"S-a realizat deblocarea SIM corporativă."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Cartela SIM a fost deblocată."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"S-a realizat deblocarea RUIM Network1."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"S-a realizat deblocarea RUIM Network2."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"S-a realizat deblocarea RUIM Hrpd."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"S-a realizat deblocarea RUIM privind furnizorii de servicii."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"S-a realizat deblocarea RUIM corporativă."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"S-a realizat deblocarea RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"S-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"S-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"S-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"S-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"S-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"S-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"S-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"S-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"S-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"S-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"S-a deblocat cu codul PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"S-a realizat deblocarea SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"S-a realizat deblocarea privind furnizorul de servicii și Equivalent Home PLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"S-a realizat deblocarea ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"S-a realizat deblocarea IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"S-a realizat deblocarea privind furnizorul de servicii și subsetul de rețea."</string> </resources> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index daa5b279fb40..ca2f8f293189 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -195,8 +195,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Администратор освободил устройство для личного использования"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Это управляемое устройство"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Ваша организация управляет этим устройством и может отслеживать сетевой трафик. Подробнее…"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Настройки геолокации изменены администратором"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Нажмите, чтобы открыть настройки геолокации."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"У приложений появился доступ к данным о вашем местоположении"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"За подробной информацией обращайтесь к системному администратору."</string> <string name="country_detector" msgid="7023275114706088854">"Определение страны"</string> <string name="location_service" msgid="2439187616018455546">"Геолокация"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Сервис для обработки уведомлений от датчиков"</string> @@ -204,14 +204,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Все данные с устройства будут удалены"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Невозможно использовать приложение для администрирования. С устройства будут удалены все данные.\n\nЕсли у вас возникли вопросы, обратитесь к администратору."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Функция печати отключена приложением \"<xliff:g id="OWNER_APP">%s</xliff:g>\""</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Разблокируйте личные приложения"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Завтра приложения будут заблокированы"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Системный администратор запретил отключать рабочий профиль более чем на <xliff:g id="DAYS">%1$d</xliff:g> дн."</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Включить рабочий профиль"</string> <string name="me" msgid="6207584824693813140">"Я"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Настройки планшетного ПК"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Настройки Android TV"</string> @@ -245,10 +241,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Параметры телефона"</string> <string name="global_action_lock" msgid="6949357274257655383">"Блокировка экрана"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Выключить"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Питание"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Перезапуск"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Экстренный вызов"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Отчет об ошибке"</string> <string name="global_action_logout" msgid="6093581310002476511">"Закончить сеанс"</string> @@ -434,11 +428,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"Доступ к дополнительным командам управления источниками геоданных"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Доступ к дополнительным командам управления источниками геоданных и вмешательство в работу системы GPS или других источников геоданных."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"Доступ к точному местоположению только в фоновом режиме"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Приложение сможет получать сведения о вашем точном местоположении только в активном режиме. Для этого нужно включить геолокацию на устройстве и разрешить приложению использовать геоданные. Расход заряда батареи может увеличиться."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Приложение сможет получать сведения о вашем точном местоположении, только когда используется. Для этого на устройстве должна быть включена геолокация. Учтите, что при этом заряд батареи может расходоваться быстрее."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"Доступ к приблизительному местоположению только в активном режиме"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Приложение сможет получать сведения о вашем приблизительном местоположении только в активном режиме. Для этого нужно включить геолокацию на устройстве и разрешить приложению использовать геоданные."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Приложение сможет получать сведения о вашем приблизительном местоположении, только когда используется. Для этого на устройстве должна быть включена геолокация."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"доступ к геоданным в фоновом режиме"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Приложение сможет получать сведения о вашем местоположении как в фоновом, так и в активном режиме."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Приложение сможет получать доступ к сведениям о местоположении, даже когда не используется."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"Изменение настроек аудио"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Приложение сможет изменять системные настройки звука, например уровень громкости и активный динамик."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"Запись аудио"</string> @@ -450,11 +444,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"Фото- и видеосъемка"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Приложение может в любое время делать фотографии и снимать видео с помощью камеры."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Доступ приложения или сервиса к системным настройкам камеры, позволяющим снимать фото и видео"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Это привилегированное или системное приложение может в любое время делать фотографии и записывать видео с помощью камеры. Для этого приложению также требуется разрешение android.permission.CAMERA."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Разрешить приложению или сервису получать обратные вызовы при открытии и закрытии камер"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Это приложение сможет получать обратные вызовы при открытии (с указанием открывающего приложения) и закрытии любых камер."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"Управление функцией вибросигнала"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Приложение сможет контролировать вибросигналы."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Приложение сможет получать доступ к состоянию виброотклика."</string> @@ -1390,13 +1382,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Выполняем проверку контента."</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Новый накопитель: <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Нажмите, чтобы настроить."</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Для переноса фотографий и других файлов"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Проблема с накопителем (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Нажмите здесь, чтобы исправить."</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Внешний носитель (<xliff:g id="NAME">%s</xliff:g>) поврежден. Выберите, чтобы исправить."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> не поддерживается"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Устройство не поддерживает этот носитель (<xliff:g id="NAME">%s</xliff:g>). Нажмите, чтобы настроить."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Внешний носитель (<xliff:g id="NAME">%s</xliff:g>) не поддерживается на этом устройстве. Выберите, чтобы изменить формат."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Карта \"<xliff:g id="NAME">%s</xliff:g>\" извлечена неправильно"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Перед тем как извлечь накопитель, отключите его, чтобы избежать потери данных."</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Накопитель (<xliff:g id="NAME">%s</xliff:g>) извлечен"</string> @@ -1668,24 +1664,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Установить громкость выше рекомендуемого уровня?\n\nВоздействие громкого звука в течение долгого времени может привести к повреждению слуха."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Использовать быстрое включение?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Чтобы использовать функцию специальных возможностей, когда она включена, нажмите и удерживайте обе кнопки регулировки громкости в течение трех секунд."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Включить специальные возможности?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Чтобы включить специальные возможности, нажмите обе кнопки регулировки громкости на несколько секунд. Обратите внимание, что в работе устройства могут произойти изменения.\n\nТекущие функции:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nЧтобы изменить выбранные функции, перейдите в настройки и нажмите \"Специальные возможности\"."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Включить TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Чтобы включить TalkBack, нажмите обе кнопки регулировки громкости на несколько секунд. Благодаря этой программе чтения с экрана людям с нарушениями зрения будет проще работать с устройством. Обратите внимание, что в работе устройства произойдут изменения.\n\nЧтобы назначить это сочетание клавиш другой функции, перейдите в настройки и выберите \"Специальные возможности\"."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Включить функцию \"<xliff:g id="SERVICE">%1$s</xliff:g>\"?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Чтобы включить функцию \"<xliff:g id="SERVICE">%1$s</xliff:g>\", нажмите обе кнопки регулировки громкости на несколько секунд. Обратите внимание, что в работе устройства могут произойти изменения.\n\nЧтобы назначить это сочетание клавиш другой функции, перейдите в настройки и выберите \"Специальные возможности\"."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Включить"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Не включать"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Предоставить сервису \"<xliff:g id="SERVICE">%1$s</xliff:g>\" полный контроль над устройством?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Если включить сервис \"<xliff:g id="SERVICE">%1$s</xliff:g>\", устройство не будет использовать блокировку экрана для защиты данных."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Полный контроль нужен приложениям для реализации специальных возможностей и не нужен большинству остальных."</string> @@ -1696,10 +1683,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Разрешить"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Отклонить"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Выберите, какую функцию использовать:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Выберите функции, которые будут запускаться с помощью кнопки специальных возможностей"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Выберите функции, которые будут запускаться с помощью кнопки регулировки громкости"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Сервис \"<xliff:g id="SERVICE_NAME">%s</xliff:g>\" отключен."</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Изменить быстрые клавиши"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string> @@ -1707,23 +1692,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Использовать быстрое включение"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инверсия цветов"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Коррекция цвета"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Использован жест с кнопками регулировки громкости. Функция \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" включена."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Использован жест с кнопками регулировки громкости. Функция \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" отключена."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Чтобы использовать сервис \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\", нажмите и удерживайте обе клавиши громкости в течение трех секунд."</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Выберите функцию, которая будет запускаться при нажатии кнопки специальных возможностей:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Выберите функцию, которая будет запускаться с помощью жеста (провести по экрану снизу вверх двумя пальцами):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Выберите функцию, которая будет запускаться с помощью жеста (провести по экрану снизу вверх тремя пальцами):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Для переключения между функциями нажмите и удерживайте кнопку специальных возможностей."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Для переключения между функциями проведите по экрану снизу вверх двумя пальцами и задержите их."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Для переключения между функциями проведите по экрану снизу вверх тремя пальцами и задержите их."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Увеличение"</string> <string name="user_switched" msgid="7249833311585228097">"Выбран аккаунт пользователя <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Смена профиля на <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2118,8 +2095,7 @@ <item quantity="many">\"<xliff:g id="FILE_NAME_2">%s</xliff:g>\" и ещё <xliff:g id="COUNT_3">%d</xliff:g> файлов</item> <item quantity="other">\"<xliff:g id="FILE_NAME_2">%s</xliff:g>\" и ещё <xliff:g id="COUNT_3">%d</xliff:g> файла</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Рекомендованных пользователей нет."</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Список приложений"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Приложению не разрешено записывать звук, однако оно может делать это с помощью этого USB-устройства."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Главный экран"</string> @@ -2141,12 +2117,12 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"Рабочий"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Просмотр личных данных"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Просмотр рабочих данных"</string> - <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Этим контентом нельзя делиться в рабочих приложениях"</string> - <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"Системный администратор запретил делиться этим контентом, используя приложения из рабочего профиля."</string> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"Этим контентом нельзя делиться с рабочими приложениями"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"Системный администратор запретил делиться этим контентом с приложениями из рабочего профиля."</string> <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"Этот контент нельзя открывать в рабочих приложениях"</string> <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"Системный администратор запретил открывать этот контент, используя приложения из рабочего профиля."</string> - <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Этим контентом нельзя делиться в личных приложениях"</string> - <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"Системный администратор запретил делиться этим контентом, используя приложения из личного профиля."</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"Этим контентом нельзя делиться с личными приложениями"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"Системный администратор запретил делиться этим контентом с приложениями из личного профиля."</string> <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"Этот контент нельзя открывать в личных приложениях"</string> <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"Системный администратор запретил открывать этот контент, используя приложения из личного профиля."</string> <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Рабочий профиль приостановлен."</string> @@ -2155,222 +2131,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Нет рабочих приложений, с помощью которых можно открыть этот контент."</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Нет личных приложений, поддерживающих этот контент."</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Нет личных приложений, с помощью которых можно открыть этот контент."</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Запись и воспроизведение телефонных разговоров"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Если это приложение используется для звонков по умолчанию, оно сможет записывать и воспроизводить телефонные разговоры."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN-код для разблокировки сети SIM-карты"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN-код для разблокировки подмножества сети SIM-карты"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN-код для разблокировки корпоративной SIM-карты"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN-код для разблокировки оператора SIM-карты"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN-код для разблокировки SIM-карты"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Введите PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Введите PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Введите PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Введите PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Введите PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN-код для разблокировки сети 1 карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN-код для разблокировки сети 2 карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN-код для разблокировки HRPD карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN-код для разблокировки корпоративной карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN-код для разблокировки оператора карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN-код для разблокировки карты R-UIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Введите PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Введите PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Введите PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Введите PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Введите PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Введите PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN-код для разблокировки SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN-код для разблокировки эквивалентных домашних сетей PLMN оператора"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN-код для разблокировки ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN-код для разблокировки IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN-код для разблокировки подмножества сети оператора"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Запрос разблокировки сети SIM-карты…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Запрос разблокировки подмножества сети SIM-карты…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Запрос разблокировки оператора SIM-карты…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Запрос разблокировки корпоративной SIM-карты…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Запрос разблокировки PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Запрос разблокировки PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Запрос разблокировки PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Запрос разблокировки PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Запрос разблокировки PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Запрос разблокировки SIM-карты…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Запрос разблокировки сети 1 карты R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Запрос разблокировки сети 2 карты R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Запрос разблокировки HRPD карты R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Запрос разблокировки оператора карты R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Запрос разблокировки корпоративной карты R-UIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Запрос разблокировки SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Запрос разблокировки эквивалентных домашних сетей PLMN оператора…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Запрос разблокировки ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Запрос разблокировки IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Запрос разблокировки подмножества сети оператора…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Запрос разблокировки карты R-UIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Запрос разблокировки PUK-кодом…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Запрос разблокировки PUK-кодом…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Запрос разблокировки PUK-кодом…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Запрос разблокировки PUK-кодом…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Запрос разблокировки PUK-кодом…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Запрос разблокировки PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Не удалось выполнить запрос на разблокировку сети SIM-карты."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Не удалось выполнить запрос на разблокировку подмножества сети SIM-карты."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Не удалось выполнить запрос на разблокировку оператора SIM-карты."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Не удалось выполнить запрос на разблокировку корпоративной SIM-карты."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Не удалось выполнить запрос на разблокировку SIM-карты."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Не удалось выполнить запрос на разблокировку сети 1 карты R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Не удалось выполнить запрос на разблокировку сети 2 карты R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Не удалось выполнить запрос на разблокировку HRPD карты R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Не удалось выполнить запрос на разблокировку корпоративной карты R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Не удалось выполнить запрос на разблокировку оператора карты R-UIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Не удалось выполнить запрос на разблокировку карты R-UIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Не удалось выполнить разблокировку PUK-кодом."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Не удалось выполнить разблокировку PUK-кодом."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Не удалось выполнить разблокировку PUK-кодом."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Не удалось выполнить разблокировку PUK-кодом."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Не удалось выполнить разблокировку PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Не удалось выполнить разблокировку PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Не удалось выполнить разблокировку PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Не удалось выполнить разблокировку PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Не удалось выполнить разблокировку PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Не удалось выполнить разблокировку PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Не удалось выполнить разблокировку PUK-кодом."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Не удалось выполнить запрос на разблокировку SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Не удалось выполнить запрос на разблокировку эквивалентных домашних сетей PLMN оператора."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Не удалось выполнить запрос на разблокировку ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Не удалось выполнить запрос на разблокировку IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Не удалось выполнить запрос на разблокировку подмножества сети оператора."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Разблокировка сети SIM-карты завершена."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Разблокировка подмножества сети SIM-карты завершена."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Разблокировка оператора SIM-карты завершена."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Разблокировка корпоративной SIM-карты завершена."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Разблокировка SIM-карты завершена."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Разблокировка сети 1 карты R-UIM завершена."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Разблокировка сети 2 карты R-UIM завершена."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Разблокировка HRPD карты R-UIM завершена."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Разблокировка оператора карты R-UIM завершена."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Разблокировка корпоративной карты R-UIM завершена."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Разблокировка карты R-UIM завершена."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Разблокировка PUK-кодом завершена."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Разблокировка PUK-кодом завершена."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Разблокировка PUK-кодом завершена."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Разблокировка PUK-кодом завершена."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Разблокировка PUK-кодом завершена."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Разблокировка PUK-кодом завершена."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Разблокировка PUK-кодом завершена."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Разблокировка PUK-кодом завершена."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Разблокировка PUK-кодом завершена."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Разблокировка PUK-кодом завершена."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Разблокировка PUK-кодом завершена."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Разблокировка SPN завершена."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Разблокировка эквивалентных домашних сетей PLMN оператора завершена."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Разблокировка ICCID завершена."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Разблокировка IMPI завершена."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Разблокировка подмножества сети оператора завершена."</string> </resources> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index c414174da305..64d3f7049ca4 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"පරිපාලක පුද්ගලික භාවිතය සඳහා උපාංගය අත්හැර දමන ලදී"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"උපාංගය කළමනාකරණය කෙරේ"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"ඔබගේ ආයතනය මෙම උපාංගය කළමනාකරණය කරන අතර එය ජාල තදබදය නිරීක්ෂණය කළ හැක. විස්තර සඳහා තට්ටු කරන්න."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"ස්ථාන සැකසීම් ඔබේ පරිපාලක විසින් වෙනස් කරන ලදී"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"ඔබේ ස්ථාන සැකසීම් බැලීමට තට්ටු කරන්න."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"යෙදුම්වලට ඔබේ ස්ථානයට ප්රවේශ විය හැකිය"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"තව දැන ගැනීමට ඔබේ IT පරිපාලක අමතන්න"</string> <string name="country_detector" msgid="7023275114706088854">"රටවල් අනාවරකය"</string> <string name="location_service" msgid="2439187616018455546">"ස්ථාන සේවාව"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"සංවේදක දැනුම් දීමේ සේවාව"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"ඔබගේ උපාංගය මකා දැමෙනු ඇත"</string> <string name="factory_reset_message" msgid="2657049595153992213">"පරිපාලක යෙදුම භාවිතා කළ නොහැකිය. ඔබේ උපාංගය දැන් මකා දමනු ඇත.\n\nඔබට ප්රශ්න තිබේ නම්, ඔබේ සංවිධානයේ පරිපාලකට අමතන්න."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> විසින් මුද්රණය කිරීම අබල කර ඇත."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"ඔබේ පෞද්ගලික යෙදුම් අනවහිර කර"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"හෙට යෙදුම් අවහිර කරනු ඇත"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"ඔබේ IT පරිපාලක ඔබේ කාර්යාල පැතිකඩ දින <xliff:g id="DAYS">%1$d</xliff:g>කට වඩා විරාම කිරීමට ඉඩ නොදේ"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"කාර්යාල පැතිකඩ ක්රියාත්මක කරන්න"</string> <string name="me" msgid="6207584824693813140">"මම"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ටැබ්ලට විකල්ප"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV විකල්ප"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"දුරකථන විකල්ප"</string> <string name="global_action_lock" msgid="6949357274257655383">"තිර අගුල"</string> <string name="global_action_power_off" msgid="4404936470711393203">"බල රහිත"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"බලය"</string> + <string name="global_action_restart" msgid="4678451019561687074">"යළි අරඹන්න"</string> <string name="global_action_emergency" msgid="1387617624177105088">"හදිසි"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"දෝෂ වර්තාව"</string> <string name="global_action_logout" msgid="6093581310002476511">"සැසිය අවසන් කරන්න"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"අමතර ස්ථාන සැපයුම්කරු විධාන වෙත ප්රවේශ වීම"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ස්ථානය සපයන අමතර අණ වලට ප්රවේශය කිරීමට යෙදුමට අවසර දෙන්න. GPS ක්රියාවන් හෝ වෙනත් ස්ථාන මූලාශ්ර සමඟ මැදිහත් වීමට මෙයින් යෙදුමට ඉඩ ලැබේ."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"පෙරබිම තුළ පමණක් නිශ්චිත ස්ථානය වෙත පිවිසෙන්න"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"මෙම යෙදුම පෙරබිම තුළ ඇති විට පමණක් එයට ඔබගේ නිශ්චිත ස්ථානය ලබා ගත හැකිය. යෙදුමට ඒවා භාවිත කිරීමට හැකියාව ලැබීමට ස්ථාන සේවා ක්රියාත්මක කර ඔබගේ දුරකථනයේ ලබා ගත හැකි විය යුතුය. මෙය බැටරි පරිභෝජනය වැඩි කළ හැකිය."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"යෙදුම භාවිතයේ පවතින අතරතුර ස්ථාන සේවා වෙතින් මෙම යෙදුමට ඔබේ නිශ්චිත ස්ථානය ලබා ගත හැකිය. යෙදුම සඳහා ස්ථානය ලබා ගැනීමට ඔබේ උපාංගය සඳහා ස්ථාන සේවා ක්රියාත්මක කළ යුතුය. මෙය බැටරි භාවිතය වැඩි කළ හැකිය."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"පෙරබිම තුළ පමණක් ආසන්න ස්ථානයට ප්රවේශය"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"මෙම යෙදුම පෙරබිම තුළ ඇති විට පමණක් එයට ඔබගේ ආසන්න ස්ථානය ලබා ගත හැකිය. යෙදුමට ඒවා භාවිත කිරීමට හැකියාව ලැබීමට ස්ථාන සේවා ක්රියාත්මක කර ඔබගේ උපාංගයේ ලබා ගත හැකි විය යුතුය."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"යෙදුම භාවිතයේ පවතින අතරතුර ස්ථාන සේවා වෙතින් මෙම යෙදුමට ඔබේ ආසන්න ස්ථානය ලබා ගත හැකිය. යෙදුම සඳහා ස්ථානය ලබා ගැනීමට ඔබේ උපාංගය සඳහා ස්ථාන සේවා ක්රියාත්මක කළ යුතුය."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"පසුබිමේ ස්ථානය ප්රවේශ කිරීම"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"පෙරබිම ස්ථාන ප්රවේශයට අමතරව පසුබිමේ ධාවනය වන අතරතුර මෙම යෙදුමට ස්ථානය වෙත ප්රවේශ විය හැකිය."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"යෙදුම භාවිතයේ නොපවතින අතරතුර පවා ඕනෑම අවස්ථාවක මෙම යෙදුමට ස්ථානය වෙත ප්රවේශ විය හැකිය."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ඔබගේ ශ්රව්ය සැකසීම් වෙනස් කරන්න"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ශබ්දය ආදී ගෝලීය ශබ්ද සැකසීම් වෙනස් කිරීමට සහ ප්රතිදානය සඳහා භාවිත කරන්නේ කුමන නාදකය දැයි තේරීමට යෙදුමට අවසර දෙන්න."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ශබ්ද පටිගත කරන්න"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"පින්තූර සහ වීඩියෝ ගන්න"</string> <string name="permdesc_camera" msgid="1354600178048761499">"මෙම යෙදුමට ඕනෑම වේලාවක කැමරාව භාවිත කර පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට හැකිය."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"පින්තූර සහ වීඩියෝ ගැනීමට පද්ධති කැමරාවලට යෙදුමකට හෝ සේවාවකට ප්රවේශය ඉඩ දෙන්න"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"මෙම වරප්රසාද ලත් හෝ පද්ධති යෙදුමට ඕනෑම වේලාවක පද්ධති කැමරාව භාවිත කර පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට හැකිය. යෙදුම විසින් රඳවා තබා ගැනීමට android.permission.CAMERA ප්රවේශයද අවශ්ය වේ"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"විවෘත වෙමින් හෝ වැසෙමින් පවතින කැමරා උපාංග පිළිබඳ පසු ඇමතුම් ලබා ගැනීමට යෙදුමකට හෝ සේවාවකට ඉඩ දෙන්න."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"මෙම යෙදුමට ඕනෑම කැමරා උපාංගයක් විවෘත වෙමින් පවතින විට (කුමන යෙදුමකින්) හෝ වැසෙමින් පවතින විට පසු ඇමතුම් ලබා ගැනීමට හැකිය."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"කම්පනය පාලනය කිරීම"</string> @@ -1351,13 +1344,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"වත්මන් අන්තර්ගතය සමාලෝචනය කරමින්"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"අලුත් <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"පිහිටුවීමට තට්ටු කරන්න"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ඡායාරූප සහ මාධ්ය හුවමාරු කිරීම සඳහා"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> සමගින් වන ගැටලුව"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"විසඳීමට තට්ටු කරන්න"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> දූෂිතයි. විසඳීමට තට්ටු කරන්න."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"සහාය නොදක්වන <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"මෙම උපාංගය මෙම <xliff:g id="NAME">%s</xliff:g> සඳහා සහාය නොදක්වයි. සහාය දක්වන ආකෘතියකින් පිහිටුවීමට තට්ටු කරන්න."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"මෙම උපාංගය මෙම <xliff:g id="NAME">%s</xliff:g> සඳහා සහාය නොදක්වයි. සහාය දක්වන ආකෘතියකින් පිහිටුවීමට තෝරන්න."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"මෙම උපාංගය මෙම <xliff:g id="NAME">%s</xliff:g>ට සඳහා සහාය නොදක්වයි."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> අනපේක්ෂිතව ඉවත් කරන ලදි"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"අන්තර්ගතය නැති වීම වළක්වා ගැනීම සඳහා ඉවත් කිරීමට පෙර මාධ්යය ඉවත් කරන්න"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> ඉවත් කරන ලදී"</string> @@ -1625,24 +1621,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"නිර්දේශිතයි මට්ටමට වඩා ශබ්දය වැඩිද?\n\nදිගු කාලයක් සඳහා ඉහළ ශබ්දයක් ඇසීමෙන් ඇතැම් විට ඔබගේ ඇසීමට හානි විය හැක."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ප්රවේශ්යතා කෙටිමඟ භාවිතා කරන්නද?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"කෙටිමග ක්රියාත්මක විට, හඬ පරිමා බොත්තම් දෙකම තත්පර 3ක් තිස්සේ එබීමෙන් ප්රවේශ්යතා විශේෂාංගය ආරම්භ වනු ඇත."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"ප්රවේශ්යතා විශේෂාංග ක්රියාත්මක කරන්නද?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"හඬ පරිමා යතුරු දෙකම තත්පර කීපයකට පහළට අල්ලාගෙන සිටීම ප්රවේශ්යතා විශේෂාංග ක්රියාත්මක කරයි. මෙය ඔබේ උපාංගය ක්රියා කරන ආකාරය වෙනස් කළ හැකිය.\n\nවත්මන් විශේෂාංග:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nඔබට තේරූ විශේෂාංග සැකසීම් > ප්රවේශ්යතාව හි වෙනස් කළ හැකිය."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack ක්රියාත්මක කරන්නද?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"හඬ පරිමා යතුරු දෙකම තත්පර කීපයකට පහළට අල්ලාගෙන සිටීම, අන්ධ හෝ අඩු දෘෂ්ටියක් අති පුද්ගලයන්ට ප්රයෝජනවත් තිර කියවනයක් වන TalkBack ක්රියාත්මක කරයි. TalkBack ඔබේ උපාංගය ක්රියා කරන ආකාරය වෙනස් කරයි.\n\nඔබට සැකසීම් > ප්රවේශ්යතාව හි මෙම කෙටිමග තවත් විශේෂාංගයකට වෙනස් කළ හැකිය."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> ක්රියාත්මක කරන්නද?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"හඬ පරිමා යතුරු දෙකම තත්පර කීපයකට පහළට අල්ලාගෙන සිටීම ප්රවේශ්යතා විශේෂාංගයක් වන <xliff:g id="SERVICE">%1$s</xliff:g> ක්රියාත්මක කරයි. මෙය ඔබේ උපාංගය ක්රියා කරන ආකාරය වෙනස් කළ හැකිය.\n\nඔබට මෙම කෙටිමග සැකසීම් > ප්රවේශ්යතාව හි තවත් විශේෂාංගයකට වෙනස් කළ හැකිය."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ක්රියාත්මක කරන්න"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ක්රියාත්මක නොකරන්න"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> හට ඔබේ උපාංගයේ සම්පූර්ණ පාලනය තබා ගැනීමට ඉඩ දෙන්නද?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ඔබ <xliff:g id="SERVICE">%1$s</xliff:g> ක්රියාත්මක කරන්නේ නම්, දත්ත සංකේතනය වැඩිදියුණු කිරීමට ඔබේ උපාංගය ඔබේ තිර අගුල භාවිත නොකරනු ඇත."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"පූර්ණ පාලනය ඔබට ප්රවේශ්යතා අවශ්යතා සමඟ උදවු කරන යෙදුම් සඳහා සුදුසු වන නමුත් බොහෝ යෙදුම් සඳහා සුදුසු නොවේ."</string> @@ -1653,10 +1640,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ඉඩ දෙන්න"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ප්රතික්ෂේප කරන්න"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"එය භාවිත කිරීම ආරම්භ කිරීමට විශේෂාංගයක් තට්ටු කරන්න:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ප්රවේශ්යතා බොත්තම සමග භාවිත කිරීමට විශේෂාංග තෝරා ගන්න"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"හඬ පරිමා යතුරු කෙටිමග සමග භාවිත කිරීමට විශේෂාංග තෝරා ගන්න"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ක්රියාවිරහිත කර ඇත"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"කෙටිමං සංස්කරණ කරන්න"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"නිමයි"</string> @@ -1664,23 +1649,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"කෙටිමඟ භාවිතා කරන්න"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"වර්ණ අපවර්තනය"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"වර්ණ නිවැරදි කිරීම"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"හඬ පරිමා යතුරු අල්ලා ගන්න <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාත්මකයි."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"හඬ පරිමා යතුරු අල්ලා ගන්න <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාවිරහිතයි."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> භාවිත කිරීමට හඬ පරිමා යතුරු දෙකම තත්පර තුනකට ඔබාගෙන සිටින්න"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"ඔබ ප්රවේශ්යතා බොත්තම තට්ටු කරන විට භාවිත කිරීමට විශේෂාංගයක් තෝරා ගන්න:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"ප්රවේශ්යතා ඉංගිතය සමඟ භාවිතයට විශේෂාංගයක් තෝරා ගන්න (ඇඟිලි දෙකකින් තිරයේ පහළ සිට ඉහළට ස්වයිප් කරන්න):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"ප්රවේශ්යතා ඉංගිතය සමඟ භාවිතයට විශේෂාංගයක් තෝරා ගන්න (ඇඟිලි තුනකින් තිරයේ පහළ සිට ඉහළට ස්වයිප් කරන්න):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"විශේෂාංග අතර මාරු වීමට, ප්රවේශ්යතා බොත්තම ස්පර්ශ කර අල්ලාගෙන සිටින්න."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"විශේෂාංග අතර මාරු වීමට, ඇඟිලි දෙකකින් ඉහළට ස්වයිප් කර අල්ලාගෙන සිටින්න."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"විශේෂාංග අතර මාරු වීමට, ඇඟිලි තුනකින් ඉහළට ස්වයිප් කර අල්ලාගෙන සිටින්න."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"විශාලනය"</string> <string name="user_switched" msgid="7249833311585228097">"දැනට සිටින පරිශීලකයා <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> වෙත මාරු කරමින්…"</string> @@ -2051,8 +2028,7 @@ <item quantity="one">ගොනු<xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g></item> <item quantity="other">ගොනු<xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g></item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"බෙදා ගැනීමට නිර්දේශිත පුද්ගලයන් නැත"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"යෙදුම් ලැයිස්තුව"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"මෙම යෙදුමට පටිගත කිරීම් අවසරයක් ලබා දී නොමැති නමුත් මෙම USB උපාංගය හරහා ශ්රව්ය ග්රහණය කර ගත හැකිය."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"මුල් පිටුව"</string> @@ -2088,222 +2064,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"කාර්යාල යෙදුම් කිසිවකට මෙම අන්තර්ගතය විවෘත කළ නොහැකිය"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"පෞද්ගලික යෙදුම් කිසිවකට මෙම අන්තර්ගතයට සහාය දැක්විය නොහැකිය"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"පෞද්ගලික යෙදුම් කිසිවකට මෙම අන්තර්ගතය විවෘත කළ නොහැකිය"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ටෙලිෆොනි ඇමතුම්වලින් ඕඩියෝ පටිගත කරන්න නැතහොත් වාදනය කරන්න"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"පෙරනිමි ඩයලන යෙදුමක් ලෙස පැවරූ විට, මෙම යෙදුමට ටෙලිෆොනි ඇමතුම්වලින් ඕඩියෝ පටිගත කිරීමට හෝ වාදනය කිරීමට ඉඩ දෙයි."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM ජාල අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM ජාල උප කට්ටල අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM සමාගම් අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM සේවා සැපයුම්කරු අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK ඇතුළු කරන්න"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK ඇතුළු කරන්න"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK ඇතුළු කරන්න"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK ඇතුළු කරන්න"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK ඇතුළු කරන්න"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM ජාල1 අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM ජාල2 අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM hrpd අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM සමාගම් අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM සේවා සැපයුම්කරු අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK ඇතුළු කරන්න"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK ඇතුළු කරන්න"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK ඇතුළු කරන්න"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK ඇතුළු කරන්න"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK ඇතුළු කරන්න"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK ඇතුළු කරන්න"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP සමාන මුල් පිටු PLMN අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"ජාල උප කට්ටල සේවා සැපයුම්කරු අගුලු හැරීමේ PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM ජාල අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM ජාල උප කට්ටල අගුලු හැරීම ඉල්ලමින් …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM සේවා සැපයුම්කරු අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"SIM සමාගම් අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM ජාල1 අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM ජාල2 අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM hrpd අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM සේවා සැපයුම්කරු අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM සමාගම් අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP සමාන මුල් පිටු PLMN අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"ජාල උප කට්ටල සේවා සැපයුම්කරු අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK අගුලු හැරීම ඉල්ලමින්…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM ජාල අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM ජාල උප කට්ටල අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM සේවා සැපයුම්කරු අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM සමාගම් අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM ජාල1 අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM ජාල2 අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM සමාගම් අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM සේවා සැපයුම්කරු අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK අගුලු හැරීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK අගුලු හැරීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK අගුලු හැරීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK අගුලු හැරීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK අගුලු හැරීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK අගුලු හැරීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK අගුලු හැරීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK අගුලු හැරීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK අගුලු හැරීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK අගුලු හැරීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK අගුලු හැරීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP සමාන මුල් පිටු PLMN අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"ජාල උප කට්ටල සේවා සැපයුම්කරු අගුලු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM ජාල අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM ජාල උප කට්ටල අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM සේවා සැපයුම්කරු අගුලු හැරීම සාර්ථකයි ."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM සමාගම් අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM ජාල1 අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM ජාල2 අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM සේවා සැපයුම්කරු අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM සමාගම් අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP සමාන මුල් පිටු PLMN අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI අගුලු හැරීම සාර්ථකයි."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"ජාල උප කට්ටල සේවා සැපයුම්කරු අගුලු හැරීම අසාර්ථකයි."</string> </resources> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 67cee61eff87..e064c37aad29 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -195,8 +195,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Správca uvoľnil toto zariadenie na osobné používanie"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Zariadenie je spravované"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizácia spravuje toto zariadenie a môže sledovať sieťovú premávku. Klepnutím zobrazíte podrobnosti."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Nastavenia polohy zmenil váš správca"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Klepnutím zobrazíte nastavenia polohy."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikácie majú prístup k vašej polohe"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Viac sa dozviete od svojho správcu IT"</string> <string name="country_detector" msgid="7023275114706088854">"Detektor krajiny"</string> <string name="location_service" msgid="2439187616018455546">"Služba určovania polohy"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Služba upozornení senzora"</string> @@ -204,14 +204,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Vaše zariadenie bude vymazané"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Daná aplikácia na správu sa nedá použiť. Vaše zariadenie bude vymazané.\n\nV prípade otázok kontaktujte správcu organizácie."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Tlač zakázala aplikácia <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Odblokujte osobné aplikácie"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Aplikácie sa zajtra zablokujú"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Správca IT vám zakázal pozastaviť pracovný profil na viac ako <xliff:g id="DAYS">%1$d</xliff:g> d."</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Zapnúť pracovný profil"</string> <string name="me" msgid="6207584824693813140">"Ja"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Možnosti tabletu"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Možnosti zariadenia Android TV"</string> @@ -245,10 +241,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Možnosti telefónu"</string> <string name="global_action_lock" msgid="6949357274257655383">"Zámka obrazovky"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Vypnúť"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Vypnutie"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Reštart"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Tieseň"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Hlásenie o chybách"</string> <string name="global_action_logout" msgid="6093581310002476511">"Ukončiť reláciu"</string> @@ -434,11 +428,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"prístup k ďalším príkazom poskytovateľa polohy"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Umožňuje aplikácii pristupovať k ďalším príkazom poskytovateľa informácií o polohe. Aplikácii to môže umožniť zasahovať do činnosti systému GPS alebo iných zdrojov informácií o polohe."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"prístup k presnej polohe iba v popredí"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Táto aplikácia dokáže získať vašu presnú polohu iba vtedy, keď je spustená v popredí. Služby určovania polohy musia byť zapnuté a k dispozícii v zariadení, aby ich mohla aplikácia používať. Môže to zvýšiť spotrebu batérie."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Keď túto aplikáciu používate, môže získavať vašu presnú polohu zo služieb určovania polohy. V zariadení musíte zapnúť služby určovania polohy, aby ju mohla získať. Môže to zvýšiť spotrebu batérie."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"prístup k približnej polohe iba v popredí"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Táto aplikácia dokáže získať vašu približnú polohu iba vtedy, keď je spustená v popredí. Služby určovania polohy musia byť zapnuté a k dispozícii v zariadení, aby ich mohla aplikácia používať."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Keď túto aplikáciu používate, môže získavať vašu približnú polohu zo služieb určovania polohy. V zariadení musíte zapnúť služby určovania polohy, aby ju mohla získať."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"prístup k polohe na pozadí"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Táto aplikácia môže používať polohu nielen vtedy, keď je spustená v popredí, ale aj na pozadí."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Táto aplikácia môže používať polohu kedykoľvek, dokonca aj keď nie je používaná."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"meniť nastavenia zvuku"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Umožňuje aplikácii upraviť globálne nastavenia zvuku, ako je hlasitosť, alebo určiť, z ktorého reproduktora bude zvuk vychádzať."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"nahrávať zvuk"</string> @@ -450,10 +444,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"fotiť a nakrúcať videá"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Táto aplikácia môže kedykoľvek fotografovať a zaznamenávať videá pomocou fotoaparátu."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Povoľte aplikácii alebo službe prístup k fotoaparátom systému na snímanie fotiek a videí"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Táto oprávnená alebo systémová aplikácia môže kedykoľvek fotiť a nahrávať videá fotoaparátom systému. Aplikácia musí mať tiež povolenie android.permission.CAMERA."</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Povoliť aplikácii alebo službe prijímať spätné volanie, keď sú zariadenia s kamerou otvorené alebo zatvorené."</string> - <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Táto aplikácia môže prijímať spätné volanie, keď je ľubovoľné zariadenie s kamerou otvorené (aplikáciou, ktorú určíte) alebo zatvorené."</string> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Táto aplikácia môže prijímať spätné volania pri otváraní alebo zatváraní ľubovoľného fotoaparátu (s infomáciou o aplikácii, ktorá to robí)."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"ovládať vibrovanie"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Umožňuje aplikácii ovládať vibrácie."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Povoľuje aplikácii prístup k stavu vibrátora."</string> @@ -1389,13 +1382,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Kontrola aktuálneho obsahu"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nové médium <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Klepnutím médium nastavte"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Na prenos fotiek a médií"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problém s médiom <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Problém odstránite klepnutím"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Médium <xliff:g id="NAME">%s</xliff:g> je poškodené. Vyberte ho a vyriešte problém."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Nepodporované úložisko <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Toto zariadenie nepodporuje úložisko <xliff:g id="NAME">%s</xliff:g>. Klepnutím ho nastavíte v podporovanom formáte."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Toto zariadenie nepodporuje médium <xliff:g id="NAME">%s</xliff:g>. Vyberte ho a nastavte v podporovanom formáte."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Zariadenie nepodporuje toto médium <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Úl. <xliff:g id="NAME">%s</xliff:g> bolo neočakávane odobraté"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Pred odobratím médium najskôr odpojte, aby ste zabránili strate obsahu"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Médium <xliff:g id="NAME">%s</xliff:g> bolo odobraté"</string> @@ -1667,24 +1663,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zvýšiť hlasitosť nad odporúčanú úroveň?\n\nDlhodobé počúvanie pri vysokej hlasitosti môže poškodiť váš sluch."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Použiť skratku dostupnosti?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Keď je skratka zapnutá, stlačením obidvoch tlačidiel hlasitosti na tri sekundy spustíte funkciu dostupnosti."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Chcete zapnúť funkcie dostupnosti?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Pridržaním oboch klávesov hlasitosti na niekoľko sekúnd zapnete funkcie dostupnosti. Môže sa tým zmeniť spôsob fungovania vášho zariadenia.\n\nAktuálne funkcie:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nVybrané funkcie môžete zmeniť v časti Nastavenia > Dostupnosť."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Chcete zapnúť TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Pridržaním oboch klávesov hlasitosti na niekoľko sekúnd zapnete čítačku obrazovky TalkBack, ktorá pomáha nevidomým alebo slabozrakým. TalkBack úplne zmení spôsob fungovania vášho zariadenia.\n\nTúto skratku môžete zmeniť na inú funkciu v časti Nastavenia > Dostupnosť."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Chcete zapnúť <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Pridržaním oboch klávesov hlasitosti na niekoľko sekúnd zapnete funkciu dostupnosti <xliff:g id="SERVICE">%1$s</xliff:g>. Môže sa tým zmeniť spôsob fungovania vášho zariadenia.\n\nTúto skratku môžete zmeniť na inú funkciu v časti Nastavenia > Dostupnosť."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Zapnúť"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nezapínať"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Chcete povoliť službe <xliff:g id="SERVICE">%1$s</xliff:g> úplnú kontrolu nad zariadením?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ak zapnete službu <xliff:g id="SERVICE">%1$s</xliff:g>, vaše zariadenie nezvýši úroveň šifrovania údajov zámkou obrazovky."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Úplná kontrola je vhodná pre aplikácie, ktoré vám pomáhajú s dostupnosťou, ale nie pre väčšinu aplikácií."</string> @@ -1695,10 +1682,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Povoliť"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Zamietnuť"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Klepnutím na funkciu ju začnite používať:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Výber funkcií, ktoré chcete používať tlačidlom dostupnosti"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Výber funkcií, ktoré chcete používať klávesovou skratkou"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Služba <xliff:g id="SERVICE_NAME">%s</xliff:g> bola vypnutá"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Upraviť skratky"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Hotovo"</string> @@ -1706,23 +1691,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Použiť skratku"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzia farieb"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Úprava farieb"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Pridržali ste klávesy hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Pridržali ste klávesy hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vypnutá."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Ak chcete používať službu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, pridržte tri sekundy oba klávesy hlasitosti"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Klepnutím na tlačidlo dostupnosti vyberte požadovanú funkciu:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Vyberte funkciu, ktorú chcete používať s daným gestom dostupnosti (potiahnutím dvoma prstami z dolnej časti obrazovky nahor):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Vyberte funkciu aktivovanú daným gestom dostupnosti (potiahnutím troma prstami z dolnej časti obrazovky nahor):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Funkcie prepnete pridržaním tlačidla dostupnosti."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Funkcie prepnete potiahnutím dvoma prstami nahor a pridržaním."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Funkcie prepnete potiahnutím troma prstami nahor a pridržaním."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Priblíženie"</string> <string name="user_switched" msgid="7249833311585228097">"Aktuálny používateľ je <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Prepína sa na účet <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2117,8 +2094,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> súborov</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> súbor</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Žiadni odporúčaní ľudia na zdieľanie"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Zoznam aplikácií"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Tejto aplikácii nebolo udelené povolenie na nahrávanie, ale môže nasnímať zvuk cez toto zariadenie USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Domov"</string> @@ -2154,222 +2130,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Tento obsah neotvoria žiadne pracovné aplikácie"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Tento obsah nepodporujú žiadne osobné aplikácie"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Tento obsah neotvoria žiadne osobné aplikácie"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Nahrávanie alebo prehrávanie zvuku počas telefonických hovorov"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Povoľuje tejto aplikácii, keď je priradená ako predvolená aplikácia na vytáčanie, nahrávať alebo prehrávať zvuk počas telefonických hovorov."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN na odomknutie siete pre SIM kartu"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN na odomknutie podmnožiny siete pre SIM kartu"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN na odomknutie podnikovej SIM karty"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN na odomknutie poskytovateľa služieb pre SIM kartu"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN na odomknutie SIM karty"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Zadajte PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Zadajte PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Zadajte PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Zadajte PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Zadajte PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN na odomknutie siete RUIM č. 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN na odomknutie siete RUIM č. 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN na odomknutie karty RUIM Hrdp"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN na odomknutie podnikovej karty RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN na odomknutie poskytovateľa služieb RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Odomknutie karty RUIM kódom PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Zadajte PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Zadajte PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Zadajte PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Zadajte PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Zadajte PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Zadajte PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN na odomknutie SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN na odomknutie poskytovateľa Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN na odomknutie karty ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN na odomknutie karty IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN na odomknutie poskytovateľa služieb podmnožiny siete"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Žiada sa o odomknutie siete pre SIM kartu…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Žiada sa o odomknutie podmnožiny siete pre SIM kartu…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Žiada sa o odomknutie poskytovateľa služieb pre SIM kartu…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Žiada sa o odomknutie podnikovej SIM karty…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Žiada sa o odomknutie kódom PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Žiada sa o odomknutie kódom PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Žiada sa o odomknutie kódom PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Žiada sa o odomknutie kódom PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Žiada sa o odomknutie kódom PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Žiada sa o odomknutie SIM karty…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Žiada sa o odomknutie siete RUIM č. 1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Žiada sa o odomknutie siete RUIM č. 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Žiada sa o odomknutie podnikovej karty RUIM Hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Žiada sa o odomknutie poskytovateľa služieb RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Žiada sa o odomknutie podnikovej karty RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Žiada sa o odomknutie SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Žiada sa o odomknutie poskytovateľa Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Žiada sa o odomknutie karty ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Žiada sa o odomknutie karty IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Žiada sa o odomknutie poskytovateľa služieb podmnožiny siete…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Žiada sa o odomknutie karty RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Žiada sa o odomknutie kódom PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Žiada sa o odomknutie kódom PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Žiada sa o odomknutie kódom PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Žiada sa o odomknutie kódom PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Žiada sa o odomknutie kódom PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Žiada sa o odomknutie kódom PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Žiadosť o odomknutie siete pre SIM kartu nebola úspešná."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Žiadosť o odomknutie podmnožiny siete pre SIM kartu nebola úspešná."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Žiadosť o odomknutie poskytovateľa služieb pre SIM kartu nebola úspešná."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Žiadosť o odomknutie podnikovej SIM karty nebola úspešná."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Žiadosť o odomknutie SIM karty nebola úspešná."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Žiadosť o odomknutie siete RUIM č. 1 nebola úspešná."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Žiadosť o odomknutie siete RUIM č. 2 nebola úspešná."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Žiadosť o odomknutie karty RUIM Hrpd nebola úspešná."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Žiadosť o odomknutie podnikovej karty RUIM nebola úspešná."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Žiadosť o odomknutie poskytovateľa služieb RUIM nebola úspešná."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Žiadosť o odomknutie karty RUIM nebola úspešná."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Odomknutie kódom PUK nebolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Odomknutie kódom PUK nebolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Odomknutie kódom PUK nebolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Odomknutie kódom PUK nebolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Odomknutie kódom PUK nebolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Odomknutie kódom PUK nebolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Odomknutie kódom PUK nebolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Odomknutie kódom PUK nebolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Odomknutie kódom PUK nebolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Odomknutie kódom PUK nebolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Odomknutie kódom PUK nebolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Žiadosť o odomknutie SPN nebola úspešná."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Žiadosť o odomknutie poskytovateľa Equivalent Home PLMN nebola úspešná."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Žiadosť o odomknutie karty ICCID nebola úspešná."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Žiadosť o odomknutie karty IMPI nebola úspešná."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Žiadosť o odomknutie poskytovateľa služieb podmnožiny siete nebola úspešná."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Odomknutie siete pre SIM kartu bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Odomknutie podmnožiny siete pre SIM kartu bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Odomknutie poskytovateľa služieb pre SIM kartu bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Odomknutie podnikovej SIM karty bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Odomknutie SIM karty bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Odomknutie siete RUIM č. 1 bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Odomknutie siete RUIM č. 2 bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Odomknutie podnikovej karty RUIM Hrpd bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Odomknutie poskytovateľa služieb RUIM bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Odomknutie podnikovej karty RUIM bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Odomknutie karty RUIM bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Odomknutie kódom PUK bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Odomknutie kódom PUK bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Odomknutie kódom PUK bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Odomknutie kódom PUK bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Odomknutie kódom PUK bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Odomknutie kódom PUK bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Odomknutie kódom PUK bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Odomknutie kódom PUK bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Odomknutie kódom PUK bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Odomknutie kódom PUK bolo úspešné."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Odomknutie kódom PUK bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Odomknutie SPN bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Odomknutie poskytovateľa Equivalent Home PLMN bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Odomknutie karty ICCID bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Odomknutie karty IMPI bolo úspešné."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Odomknutie poskytovateľa služieb podmnožiny siete bolo úspešné."</string> </resources> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index d6f08610eecf..b6ba6eed3fa2 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -195,8 +195,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Skrbnik je napravo prepustil osebni uporabi"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Naprava je upravljana"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizacija upravlja to napravo in lahko nadzira omrežni promet. Dotaknite se za podrobnosti."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Skrbnik je spremenil nastavitve lokacije"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Dotaknite se za ogled nastavitev lokacije."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikacije imajo dostop do vaše lokacije"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Za več informacij se obrnite na skrbnika za IT"</string> <string name="country_detector" msgid="7023275114706088854">"Zaznavalnik države"</string> <string name="location_service" msgid="2439187616018455546">"Lokacijska storitev"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Storitev obvestil tipal"</string> @@ -204,14 +204,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Podatki v napravi bodo izbrisani"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Skrbniške aplikacije ni mogoče uporabljati. Podatki v napravi bodo izbrisani.\n\nČe imate vprašanja, se obrnite na skrbnika organizacije."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Tiskanje je onemogočil pravilnik <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Odblokirajte oseb. aplikacije"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Jutri bodo aplikac. blokirane"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Skrbnik za IT ne dovoli, da bi bil delovni profil začasno zaustavljen dlje kot <xliff:g id="DAYS">%1$d</xliff:g> dni"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Vklopi delovni profil"</string> <string name="me" msgid="6207584824693813140">"Jaz"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Možnosti tabličnega računalnika"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Možnosti naprave Android TV"</string> @@ -245,10 +241,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Možnosti telefona"</string> <string name="global_action_lock" msgid="6949357274257655383">"Zaklep zaslona"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Izklopi"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Vklop/izklop"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Vnovični zagon"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Klic v sili"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Poročilo o napakah"</string> <string name="global_action_logout" msgid="6093581310002476511">"Končaj sejo"</string> @@ -434,11 +428,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"dostopanje do ukazov ponudnika dodatnih lokacij"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Aplikaciji omogoča dostop do dodatnih ukazov ponudnika lokacij. S tem lahko aplikacija moti delovanje sistema GPS ali drugih virov lokacije."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"dostop do točne lokacije samo, ko deluje v ospredju"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ta aplikacija lahko pridobi vašo točno lokacijo samo, ko deluje v ospredju. Če želite aplikaciji omogočiti uporabo lokacijskih storitev, morajo biti te vklopljene in na voljo v napravi. Poraba energije baterije bo morda večja."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ta aplikacija lahko pridobi vašo natančno lokacijo od lokacijskih storitev, ko je aplikacija v uporabi. Lokacijske storitve za napravo morajo biti vklopljene, da lahko aplikacija pridobi lokacijo. To lahko poveča porabo energije baterije."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"dostop do približne lokacije samo, ko deluje v ospredju"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ta aplikacija lahko pridobi vašo približno lokacijo samo, ko deluje v ospredju. Če želite aplikaciji omogočiti uporabo lokacijskih storitev, morajo biti te vklopljene in na voljo v napravi."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ta aplikacija lahko pridobi vašo približno lokacijo od lokacijskih storitev, ko je aplikacija v uporabi. Lokacijske storitve za napravo morajo biti vklopljene, da lahko aplikacija pridobi lokacijo."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"dostop do lokacije med izvajanjem v ozadju"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ta aplikacija lahko dostopa do lokacije, ko deluje v ospredju ali ozadju."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ta aplikacija lahko kadar koli dostopa do lokacije, tudi če aplikacije ne uporabljate."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"spreminjanje nastavitev zvoka"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Aplikaciji omogoča spreminjanje splošnih zvočnih nastavitev, na primer glasnost in kateri zvočnik se uporablja."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"snemanje zvoka"</string> @@ -450,11 +444,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"fotografiranje in snemanje videoposnetkov"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Ta aplikacija lahko poljubno uporablja fotoaparat za snemanje fotografij ali videoposnetkov."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Aplikaciji ali storitvi dovoli dostop do vgrajenih fotoaparatov za snemanje fotografij in videoposnetkov"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ta prednostna ali sistemska aplikacija lahko z vgrajenim fotoaparatom kadar koli snema fotografije in videoposnetke. Aplikacija mora imeti omogočeno tudi dovoljenje android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Aplikaciji ali storitvi dovoli prejemanje povratnih klicev o odpiranju ali zapiranju naprav s fotoaparati."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ta aplikacija lahko prejema povratne klice, ko se odpira (s katero aplikacijo) ali zapira katera koli naprava s fotoaparatom."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"nadzor vibriranja"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Aplikaciji omogoča nadzor vibriranja."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Aplikaciji dovoljuje dostop do stanja vibriranja."</string> @@ -1390,13 +1382,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Pregledovanje trenutne vsebine"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nova naprava za shranjevanje: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Dotaknite se, če želite nastaviti"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Za prenos fotografij in predstavnosti"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Težava z nosilcem <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Dotaknite se, da to popravite"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Nosilec <xliff:g id="NAME">%s</xliff:g> je pokvarjen. Izberite, če ga želite popraviti."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Nepodprta naprava za shran. <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Ta naprava ne podpira tega nosilca <xliff:g id="NAME">%s</xliff:g>. Dotaknite se, če želite nastaviti v podprti obliki."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Naprava ne podpira nosilca <xliff:g id="NAME">%s</xliff:g>. Izberite, če ga želite nastaviti v podprti obliki."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Ta naprava ne podpira nosilca <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Shramba <xliff:g id="NAME">%s</xliff:g> nepričak. odstranjena"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Medij izvrzite, preden ga odstranite, da se izognete izgubi vsebine"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Nosilec <xliff:g id="NAME">%s</xliff:g> je odstranjen"</string> @@ -1668,24 +1663,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ali želite povečati glasnost nad priporočeno raven?\n\nDolgotrajno poslušanje pri veliki glasnosti lahko poškoduje sluh."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite uporabljati bližnjico funkcij za ljudi s posebnimi potrebami?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Ko je bližnjica vklopljena, pritisnite gumba za glasnost in ju pridržite tri sekunde, če želite zagnati funkcijo za ljudi s posebnimi potrebami."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Želite vklopiti funkcije za ljudi s posebnimi potrebami?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Če za nekaj sekund pridržite obe tipki za glasnost, boste vklopili funkcije za ljudi s posebnimi potrebami. To lahko spremeni način delovanja naprave.\n\nTrenutne funkcije:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nIzbrane funkcije lahko spremenite v meniju »Nastavitve« > »Funkcije za ljudi s posebnimi potrebami«."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Želite vklopiti TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Če za nekaj sekund pridržite obe tipki za glasnost, boste vklopili bralnik zaslona TalkBack, ki pomaga slepim in slabovidnim osebam. TalkBack povsem spremeni način delovanja naprave.\n\nTo bližnjico lahko v meniju »Nastavitve« > »Funkcije za ljudi s posebnimi potrebami« spremenite, da bo uporabljena za drugo funkcijo."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Želite vklopiti storitev <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Če za nekaj sekund pridržite obe tipki za glasnost, boste vklopili storitev <xliff:g id="SERVICE">%1$s</xliff:g>, ki je funkcija za ljudi s posebnimi potrebami. To lahko spremeni način delovanja naprave.\n\nTo bližnjico lahko v meniju »Nastavitve« > »Funkcije za ljudi s posebnimi potrebami« spremenite, da bo uporabljena za drugo funkcijo."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Vklopi"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ne vklopi"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Ali storitvi <xliff:g id="SERVICE">%1$s</xliff:g> dovolite popoln nadzor nad svojo napravo?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Če vklopite storitev <xliff:g id="SERVICE">%1$s</xliff:g>, vaša naprava ne bo uporabljala zaklepanja zaslona za izboljšanje šifriranja podatkov."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Popoln nadzor je ustrezen za aplikacije, ki vam pomagajo pri funkcijah za ljudi s posebnimi potrebami, vendar ne za večino aplikacij."</string> @@ -1696,10 +1682,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Dovoli"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Zavrni"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Če želite začeti uporabljati funkcijo, se je dotaknite:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Izberite funkcije, ki jih želite uporabljati z gumbom za funkcije za ljudi s posebnimi potrebami"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Izberite funkcije, ki jih želite uporabljati z bližnjico na tipki za glasnost"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Storitev <xliff:g id="SERVICE_NAME">%s</xliff:g> je izklopljena"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Uredi bližnjice"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Končano"</string> @@ -1707,23 +1691,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Uporabi bližnjico"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija barv"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Popravljanje barv"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tipki za glasnost sta pridržani. Storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vklopljena."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tipki za glasnost sta pridržani. Storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je izklopljena."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Za uporabo storitve <xliff:g id="SERVICE_NAME">%1$s</xliff:g> pritisnite obe tipki za glasnost in ju pridržite tri sekunde"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Izberite funkcijo, ki jo želite uporabljati, ko se dotaknete gumba za funkcije za ljudi s posebnimi potrebami:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Izberite funkcijo, ki jo želite zagnati s potezo za ljudi s posebnimi potrebami (vlečenje z dvema prstoma z dna zaslona navzgor):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Izberite funkcijo, ki jo želite zagnati s potezo za ljudi s posebnimi potrebami (vlečenje s tremi prsti z dna zaslona navzgor):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Če želite preklopiti med funkcijami, pridržite gumb za funkcije za ljudi s posebnimi potrebami."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Če želite preklopiti med funkcijami, z dvema prstoma povlecite navzgor in pridržite."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Če želite preklopiti med funkcijami, s tremi prsti povlecite navzgor in pridržite."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Povečava"</string> <string name="user_switched" msgid="7249833311585228097">"Trenutni uporabnik <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Preklop na uporabnika <xliff:g id="NAME">%1$s</xliff:g> …"</string> @@ -2118,8 +2094,7 @@ <item quantity="few"><xliff:g id="FILE_NAME_2">%s</xliff:g> in še <xliff:g id="COUNT_3">%d</xliff:g> datoteke</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> in še <xliff:g id="COUNT_3">%d</xliff:g> datotek</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Ni priporočenih oseb za deljenje vsebine"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Seznam aplikacij"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Ta aplikacija sicer nima dovoljenja za snemanje, vendar bi lahko zajemala zvok prek te naprave USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Začetni zaslon"</string> @@ -2155,222 +2130,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Nobena delovna aplikacija ne more odpreti te vsebine"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Nobena osebna aplikacija ne podpira te vsebine"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Nobena osebna aplikacija ne more odpreti te vsebine"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Snemanje ali predvajanje zvoka med telefonskimi klici"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Tej aplikaciji dovoljuje snemanje ali predvajanje zvoka med telefonskimi klici, ko je nastavljena kot privzeta aplikacija za klicanje."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Koda PIN za odklepanje omrežja kartice SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Koda PIN za odklepanje podnabora omrežja kartice SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Koda PIN za odklepanje kartice SIM za podjetje"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Koda PIN za odklepanje kartice SIM za ponudnika storitev"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Koda PIN za odklepanje kartice SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Vnesite kodo PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Vnesite kodo PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Vnesite kodo PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Vnesite kodo PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Vnesite kodo PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Koda PIN za odklepanje omrežja1 kartice RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Koda PIN za odklepanje omrežja2 kartice RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Koda PIN za odklepanje omrežja HRPD kartice RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Koda PIN za odklepanje kartice RUIM za podjetje"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Koda PIN za odklepanje kartice RUIM za ponudnika storitev"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Koda PIN za odklepanje kartice RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Vnesite kodo PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Vnesite kodo PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Vnesite kodo PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Vnesite kodo PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Vnesite kodo PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Vnesite kodo PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Koda PIN za odklepanje za SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Koda PIN za odklepanje enakovrednega domačega omrežja PLMN za ponudnika storitev"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Koda PIN za odklepanje ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Koda PIN za odklepanje IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Koda PIN za odklepanje podnabora omrežja za ponudnika storitev"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Zahtevanje odklepanja omrežja kartice SIM …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Zahtevanje odklepanja podnabora omrežja kartice SIM …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Zahtevanje odklepanja kartice SIM za ponudnika storitev …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Zahtevanje odklepanja kartice SIM za podjetje …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Zahtevanje odklepanja s kodo PUK …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Zahtevanje odklepanja s kodo PUK …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Zahtevanje odklepanja s kodo PUK …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Zahtevanje odklepanja s kodo PUK …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Zahtevanje odklepanja s kodo PUK …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Zahtevanje odklepanja kartice SIM …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Zahtevanje odklepanja omrežja1 kartice RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Zahtevanje odklepanja omrežja2 kartice RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Zahtevanje odklepanja omrežja HRPD kartice RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Zahtevanje odklepanja kartice RUIM za ponudnika storitev …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Zahtevanje odklepanja kartice RUIM za podjetje …"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Zahtevanje odklepanja za SPN …"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Zahtevanje odklepanja enakovrednega domačega omrežja PLMN za ponudnika storitev …"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Zahtevanje odklepanja ICCID …"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Zahtevanje odklepanja IMPI …"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Zahtevanje odklepanja podnabora omrežja za ponudnika storitev …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Zahtevanje odklepanja kartice RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Zahtevanje odklepanja s kodo PUK …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Zahtevanje odklepanja s kodo PUK …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Zahtevanje odklepanja s kodo PUK …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Zahtevanje odklepanja s kodo PUK …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Zahtevanje odklepanja s kodo PUK …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Zahtevanje odklepanja s kodo PUK …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Zahteva za odklepanje omrežja kartice SIM ni uspela."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Zahteva za odklepanje podnabora omrežja kartice SIM ni uspela."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Zahteva za odklepanje kartice SIM za ponudnika storitev ni uspela."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Zahteva za odklepanje kartice SIM za podjetje ni uspela."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Zahteva za odklepanje kartice SIM ni uspela."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Zahteva za odklepanje omrežja1 kartice RUIM ni uspela."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Zahteva za odklepanje omrežja2 kartice RUIM ni uspela."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Zahteva za odklepanje omrežja HRPD kartice RUIM ni uspela."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Zahteva za odklepanje kartice RUIM za podjetje ni uspela."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Zahteva za odklepanje kartice RUIM za ponudnika storitev ni uspela."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Zahteva za odklepanje kartice RUIM ni uspela."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Odklepanje s kodo PUK ni uspelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Odklepanje s kodo PUK ni uspelo."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Odklepanje s kodo PUK ni uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Odklepanje s kodo PUK ni uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Odklepanje s kodo PUK ni uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Odklepanje s kodo PUK ni uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Odklepanje s kodo PUK ni uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Odklepanje s kodo PUK ni uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Odklepanje s kodo PUK ni uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Odklepanje s kodo PUK ni uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Odklepanje s kodo PUK ni uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Zahteva za odklepanje za SPN ni uspela."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Zahteva za odklepanje enakovrednega domačega omrežja PLMN za ponudnika storitev ni uspela."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Zahteva za odklepanje ICCID ni uspela."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Zahteva za odklepanje IMPI ni uspela."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Zahteva za odklepanje podnabora omrežja za ponudnika storitev ni uspela."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Odklepanje omrežja kartice SIM je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Odklepanje podnabora omrežja kartice SIM je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Odklepanje kartice SIM za ponudnika storitev je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Odklepanje kartice SIM za podjetje je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Odklepanje kartice SIM je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Odklepanje omrežja1 kartice RUIM je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Odklepanje omrežja2 kartice RUIM je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Odklepanje omrežja HRPD kartice RUIM je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Zahteva za odklepanje kartice RUIM za ponudnika storitev je uspela."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Odklepanje kartice RUIM za podjetje je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Odklepanje kartice RUIM je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Odklepanje s kodo PUK je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Odklepanje s kodo PUK je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Odklepanje s kodo PUK je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Odklepanje s kodo PUK je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Odklepanje s kodo PUK je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Odklepanje s kodo PUK je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Odklepanje s kodo PUK je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Odklepanje s kodo PUK je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Odklepanje s kodo PUK je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Odklepanje s kodo PUK je uspelo."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Odklepanje s kodo PUK je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Odklepanje za SPN je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Odklepanje enakovrednega domačega omrežja PLMN za ponudnika storitev je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Odklepanje ICCID je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Odklepanje IMPI je uspelo."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Odklepanje podnabora omrežja za ponudnika storitev je uspela."</string> </resources> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index 553b03af3a03..a1fcf3f1efa8 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administratori e refuzoi pajisjen për përdorim personal"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Pajisja është e menaxhuar"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Organizata jote e menaxhon këtë pajisje dhe mund të monitorojë trafikun e rrjetit. Trokit për detaje."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Cilësimet e vendndodhjes u ndryshuan nga administratori yt"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Trokit për të parë cilësimet e tua të vendndodhjes."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikacionet mund të kenë qasje te vendndodhja jote"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Kontakto me administratorin e teknologjisë së informacionit për të mësuar më shumë"</string> <string name="country_detector" msgid="7023275114706088854">"Zbuluesi i shtetit"</string> <string name="location_service" msgid="2439187616018455546">"Vendndodhja e shërbimit"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Shërbimi i njoftimeve të sensorit"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Pajisja do të spastrohet"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Aplikacioni i administratorit nuk mund të përdoret. Pajisja jote tani do të fshihet.\n\nNëse ke pyetje, kontakto me administratorin e organizatës."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Printimi është çaktivizuar nga <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Zhblloko aplikacionet e tua personale"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Aplikacionet do të bllokohen nesër"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Administratori yt i teknologjisë së informacionit nuk e lejon profilin tënd të punës të vendoset në pauzë për më shumë se <xliff:g id="DAYS">%1$d</xliff:g> ditë"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Aktivizo profilin e punës"</string> <string name="me" msgid="6207584824693813140">"Unë"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opsionet e tabletit"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opsionet e Android TV"</string> @@ -241,12 +237,10 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Opsionet e telefonit"</string> <string name="global_action_lock" msgid="6949357274257655383">"Kyçja e ekranit"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Fik"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Energjia"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Rinis"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Urgjenca"</string> - <string name="global_action_bug_report" msgid="5127867163044170003">"Raporti i defekteve në kod"</string> + <string name="global_action_bug_report" msgid="5127867163044170003">"Raport i defektit në kod"</string> <string name="global_action_logout" msgid="6093581310002476511">"Jepi fund sesionit"</string> <string name="global_action_screenshot" msgid="2610053466156478564">"Pamja e ekranit"</string> <string name="bugreport_title" msgid="8549990811777373050">"Raporti i defekteve në kod"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"qasje në komandat shtesë të ofruesit të vendndodhjes"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Lejon aplikacionin të ketë qasje në komandat shtesë të ofruesit për vendndodhjen. Kjo mund ta lejojë aplikacionin të ndërhyjë në operacionin e GPS-së apo të burimeve të tjera për vendndodhjen."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"qasu në vendndodhjen e saktë vetëm në plan të parë"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ky aplikacion mund të marrë vendndodhjen tënde të saktë vetëm kur është në plan të parë. Shërbimet e vendndodhjes duhet të jenë të aktivizuara dhe në dispozicion në pajisjen tënde që aplikacioni të mund t\'i përdorë. Kjo gjë mund të rrisë konsumin e baterisë."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ky aplikacion mund të marrë vendndodhjen tënde të saktë nga shërbimet e vendndodhjes kur aplikacioni është në përdorim. Shërbimet e vendndodhjes për pajisjen tënde duhet të aktivizohen që aplikacioni të marrë vendndodhjen. Kjo mund të rrisë përdorimin e baterisë."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"qasu në vendndodhjen e përafërt vetëm në plan të parë"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ky aplikacion mund të marrë vendndodhjen tënde të përafërt vetëm kur është në plan të parë. Shërbimet e vendndodhjes duhet të jenë të aktivizuara dhe të ofrohen në pajisjen tënde që aplikacioni të mund t\'i përdorë."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ky aplikacion mund të marrë vendndodhjen tënde të përafërt nga shërbimet e vendndodhjes kur aplikacioni është në përdorim. Shërbimet e vendndodhjes për pajisjen tënde duhet të aktivizohen që aplikacioni të marrë vendndodhjen."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"qasje te vendndodhja në sfond"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ky aplikacion mund të ketë qasje te vendndodhja ndërkohë që funksionon në sfond, përveç qasjes në plan të parë te vendndodhja."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ky aplikacion mund të ketë qasje te vendndodhja në çdo kohë, edhe kur aplikacioni nuk është në përdorim."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ndrysho cilësimet e audios"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Lejon aplikacionin të modifikojë cilësimet globale të audios siç është volumi dhe se cili altoparlant përdoret për daljen."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"regjistro audio"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"bëj fotografi dhe video"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Ky aplikacion mund të nxjerrë fotografi dhe të regjistrojë video me kamerën tënde në çdo kohë."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Lejo një aplikacion ose shërbim të ketë qasje në kamerat e sistemit për të shkrepur fotografi dhe regjistruar video"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ky aplikacion sistemi ose i privilegjuar mund të nxjerrë fotografi dhe të regjistrojë video duke përdorur një kamerë në çdo moment. Kërkon që autorizimi i android.permission.CAMERA të mbahet edhe nga aplikacioni"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Lejo që një aplikacion ose shërbim të marrë telefonata mbrapsht për pajisjet e kamerës që hapen ose mbyllen."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ky aplikacion mund të marrë telefonata mbrapsht kur hapet ose mbyllet një pajisje e kamerës (nga një aplikacion)."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kontrollo dridhjen"</string> @@ -1349,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Përmbajtja aktuale po rishikohet"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> e re"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Trokit për ta konfiguruar"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Për transferimin e fotografive dhe skedarëve të tjerë"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problem me <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Trokit për ta rregulluar"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> është dëmtuar. Zgjidh për ta rregulluar."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> nuk mbështetet"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Kjo pajisje nuk e mbështet këtë <xliff:g id="NAME">%s</xliff:g>. Trokit për ta konfiguruar në një format të mbështetur."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Kjo pajisje nuk e mbështet këtë <xliff:g id="NAME">%s</xliff:g>. Përzgjidhe për ta konfiguruar në një format të mbështetur."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Kjo pajisje nuk e mbështet këtë <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> u hoq papritur"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Nxirr median para se ta heqësh për të shmangur humbjen e përmbajtjes"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> u hoq"</string> @@ -1623,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Të ngrihet volumi mbi nivelin e rekomanduar?\n\nDëgjimi me volum të lartë për periudha të gjata mund të dëmtojë dëgjimin."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Të përdoret shkurtorja e qasshmërisë?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kur shkurtorja është e aktivizuar, shtypja e të dy butonave për 3 sekonda do të nisë një funksion qasshmërie."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Të aktivizohen veçoritë e qasshmërisë?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Mbajtja shtypur e dy tasteve të volumit për pak sekonda aktivizon veçoritë e qasshmërisë. Kjo mund të ndryshojë mënyrën se si funksionon pajisja jote.\n\nVeçoritë aktuale:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nKe ndryshuar veçoritë e zgjedhura te Cilësimet > Qasshmëria."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Të aktivizohet TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Mbajtja shtypur e dy tasteve të volumit për pak sekonda aktivizon TalkBack, një lexues ekrani që është i dobishëm për personat që janë të verbër ose kanë probleme me shikimin. TalkBack ndryshon plotësisht mënyrën se si funksionon pajisja jote.\n\nMund të ndryshosh këtë shkurtore te një veçori tjetër te Cilësimet > Qasshmëria."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Të aktivizohet <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Mbajtja shtypur e dy tasteve të volumit për pak sekonda aktivizon <xliff:g id="SERVICE">%1$s</xliff:g>, një veçori të qasshmërisë. Kjo mund të ndryshojë mënyrën se si funksionon pajisja jote.\n\nMund të ndryshosh këtë shkurtore te një veçori tjetër te Cilësimet > Qasshmëria."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktivizo"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Mos e aktivizo"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Do të lejosh që <xliff:g id="SERVICE">%1$s</xliff:g> të ketë kontroll të plotë të pajisjes sate?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Nëse aktivizon <xliff:g id="SERVICE">%1$s</xliff:g>, pajisja nuk do të përdorë kyçjen e ekranit për të përmirësuar enkriptimin e të dhënave."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Kontrolli i plotë është i përshtatshëm për aplikacionet që të ndihmojnë me nevojat e qasshmërisë, por jo për shumicën e aplikacioneve."</string> @@ -1651,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Lejo"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Refuzo"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Trokit te një veçori për të filluar ta përdorësh atë:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Zgjidh veçoritë që do të përdorësh me butonin e qasshmërisë"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Zgjidh veçoritë që do të përdorësh me shkurtoren e tastit të volumit"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> është çaktivizuar"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Redakto shkurtoret"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"U krye"</string> @@ -1662,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Përdor shkurtoren"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Kthimi i ngjyrës"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korrigjimi i ngjyrës"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tastet e volumit të mbajtura shtypur. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> i aktivizuar."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tastet e volumit të mbajtura shtypur. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> i çaktivizuar."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Shtyp dhe mbaj shtypur të dy butonat e volumit për tre sekonda për të përdorur <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Zgjidh një funksion për ta përdorur kur troket butonin e qasshmërisë:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Zgjidh një veçori për ta përdorur me gjestin e qasshmërisë (rrëshqit shpejt lart nga fundi i ekranit me dy gishta):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Zgjidh një veçori për ta përdorur me gjestin e qasshmërisë (rrëshqit shpejt lart nga fundi i ekranit me tre gishta):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Për të kaluar mes veçorive, prek dhe mbaj prekur butonin e qasshmërisë."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Për të kaluar mes veçorive, rrëshqit shpejt lart me dy gishta dhe mbaje prekur."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Për të kaluar mes veçorive, rrëshqit shpejt lart me tre gishta dhe mbaje prekur."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Zmadhimi"</string> <string name="user_switched" msgid="7249833311585228097">"Emri i përdoruesit aktual: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Po kalon në <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2049,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> skedarë</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> skedar</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Nuk ka persona të rekomanduar për ta ndarë"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lista e aplikacioneve"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Këtij aplikacioni nuk i është dhënë leje për regjistrim, por mund të regjistrojë audio përmes kësaj pajisjeje USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Ekrani bazë"</string> @@ -2086,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Asnjë aplikacion pune nuk mund ta hapë këtë përmbajtje"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Asnjë aplikacion personal nuk mund ta mbështesë këtë përmbajtje"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Asnjë aplikacion personal nuk mund ta hapë këtë përmbajtje"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Të regjistrojë ose luajë audio në telefonata"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Lejon këtë aplikacion, kur caktohet si aplikacioni i parazgjedhur i formuesit të numrave, të regjistrojë ose luajë audio në telefonata."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Kodi PIN i shkyçjes së rrjetit të kartës SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Kodi PIN i shkyçjes së nënrenditjes së rrjetit të kartës SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Kodi PIN i shkyçjes së kartës SIM të korporatës"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Kodi PIN i shkyçjes së ofruesit të shërbimit të kartës SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Kodi PIN i shkyçjes së kartës SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Fut kodin PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Fut kodin PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Fut kodin PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Fut kodin PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Fut kodin PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Kodi PIN i shkyçjes së kartës RUIM rrjeti 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Kodi PIN i shkyçjes së RUIM rrjeti 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Kodi PIN i shkyçjes së kartës RUIM hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Kodi PIN i shkyçjes së korporatës së kartës RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Kodi PIN i shkyçjes së ofruesit të shërbimit të kartës RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Kodi PIN i shkyçjes së kartës RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Fut kodin PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Fut kodin PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Fut kodin PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Fut kodin PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Fut kodin PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Fut kodin PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Kodi PIN i shkyçjes së SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Kodi PIN i shkyçjes së SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Kodi PIN i shkyçjes së ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Kodi PIN i shkyçjes së IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Kodi PIN i shkyçjes së ofruesit të shërbimit të nënrenditjes së rrjetit"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Po kërkon shkyçjen e rrjetit të kartës SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Po kërkon shkyçjen e nënrenditjes së rrjetit të kartës SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Po kërkon shkyçjen e ofruesit të shërbimit të kartës SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Po kërkon shkyçjen e korporatës së kartës SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Po kërkon shkyçjen me kodin PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Po kërkon shkyçjen me kodin PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Po kërkon shkyçjen me kodin PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Po kërkon shkyçjen me kodin PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Po kërkon shkyçjen me kodin PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Po kërkon shkyçjen e kartës SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Po kërkon shkyçjen e kartës RUIM rrjeti 1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Po kërkon shkyçjen e kartës RUIM rrjeti 2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Po kërkon shkyçjen e kartës RUIM hrdp…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Po kërkon shkyçjen e ofruesit të shërbimit të kartës RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Po kërkon shkyçjen e korporatës së kartës RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Po kërkon shkyçjen e SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Po kërkon shkyçjen e SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Po kërkon shkyçjen e ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Po kërkon shkyçjen e IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Po kërkon shkyçjen e ofruesit të shërbimit të nënrenditjes së rrjetit…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Po kërkon shkyçjen e kartës RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Po kërkon shkyçjen me kodin PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Po kërkon shkyçjen me kodin PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Po kërkon shkyçjen me kodin PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Po kërkon shkyçjen me kodin PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Po kërkon shkyçjen me kodin PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Po kërkon shkyçjen me kodin PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Kërkesa për shkyçjen e rrjetit të kartës SIM ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Kërkesa e shkyçjes së nënrenditjes së rrjetit të kartës SIM ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Kërkesa e shkyçjes së ofruesit të shërbimit të kartës SIM ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Kërkesa për shkyçjen e korporatës së kartës SIM ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Kërkesa për shkyçjen e kartës SIM ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Kërkesa për shkyçjen e kartës RUIM Rrjeti 1 ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Kërkesa për shkyçjen e kartës RUIM Rrjeti 2 ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Kërkesa për shkyçjen e kartës RUIM Hrpd ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Kërkesa për shkyçjen e korporatës së kartës RUIM ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Kërkesa e shkyçjes së ofruesit të shërbimit të kartës RUIM ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Kërkesa për shkyçjen e kartës RUIM ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Shkyçja me kodin PUK ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Shkyçja me kodin PUK ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Shkyçja me kodin PUK ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Shkyçja me kodin PUK ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Shkyçja me kodin PUK ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Shkyçja me kodin PUK ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Shkyçja me kodin PUK ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Shkyçja me kodin PUK ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Shkyçja me kodin PUK ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Shkyçja me kodin PUK ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Shkyçja me kodin PUK ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Kërkesa për shkyçjen e SPN ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Kërkesa e shkyçjes së SP Equivalent Home PLMN ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Kërkesa për shkyçjen e ICCID ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Kërkesa për shkyçjen e IMPI ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Kërkesa e shkyçjes së ofruesit të shërbimit të nënrenditjes së rrjetit ishte e pasuksesshme."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Shkyçja e rrjetit të kartës SIM ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Shkyçja e nënrenditjes së rrjetit të kartës SIM ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Shkyçja e ofruesit të shërbimit të kartës SIM ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Shkyçja e korporatës së kartës SIM ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Shkyçja e kartës SIM ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Shkyçja e kartës RUIM Rrjeti 1 ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Shkyçja e kartës RUIM Rrjeti 2 ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Shkyçja e kartës RUIM Hrpd ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Shkyçja e ofruesit të shërbimit të kartës RUIM ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Shkyçja e korporatës së kartës RUIM ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Shkyçja e kartës RUIM ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Shkyçja me kodin PUK ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Shkyçja me kodin PUK ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Shkyçja me kodin PUK ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Shkyçja me kodin PUK ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Shkyçja me kodin PUK ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Shkyçja me kodin PUK ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Shkyçja me kodin PUK ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Shkyçja me kodin PUK ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Shkyçja me kodin PUK ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Shkyçja me kodin PUK ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Shkyçja me kodin PUK ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Shkyçja e SPN ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Shkyçja e SP Equivalent Home PLMN ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Shkyçja e ICCID ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Shkyçja e IMPI ishte e suksesshme."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Shkyçja e ofruesit të shërbimit të nënrenditjes së rrjetit ishte e suksesshme."</string> </resources> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 014ad3a1f8b4..2e793a66f2e6 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -193,8 +193,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Администратор је уступио уређај за личну употребу"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Уређајем се управља"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Организација управља овим уређајем и може да надгледа мрежни саобраћај. Додирните за детаље."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Администратор је променио подешавања локације"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Додирните да бисте видели подешавања локације."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Апликације могу да приступају вашој локацији"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Обратите се ИТ администратору да бисте сазнали више"</string> <string name="country_detector" msgid="7023275114706088854">"Детектор земље"</string> <string name="location_service" msgid="2439187616018455546">"Услуга локације"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Услуга обавештења сензора"</string> @@ -202,14 +202,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Уређај ће бити обрисан"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Не можете да користите ову апликацију за администраторе. Уређај ће сада бити обрисан.\n\nАко имате питања, контактирајте администратора организације."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Штампање је онемогућила апликација <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Одблокирајте личне апликације"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Аплик. ће се блокирати сутра"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"ИТ администратор вам не дозвољава да профил за Work паузирате више од <xliff:g id="DAYS">%1$d</xliff:g> дана"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Укључи профил за Work"</string> <string name="me" msgid="6207584824693813140">"Ја"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Опције за таблет"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Опције Android TV-а"</string> @@ -243,10 +239,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Опције телефона"</string> <string name="global_action_lock" msgid="6949357274257655383">"Закључај екран"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Искључи"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Напајање"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Рестартуј"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Хитни позив"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Извештај о грешци"</string> <string name="global_action_logout" msgid="6093581310002476511">"Заврши сесију"</string> @@ -431,11 +425,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"приступ додатним командама добављача локације"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Омогућава апликацији да приступа додатним командама даваоца услуга локације. То може да омогући апликацији да утиче на рад GPS-а или других извора локације."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"приступ прецизној локацији само у првом плану"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ова апликација може да одреди вашу тачну локацију само када ради у првом плану. Услуге локације морају да буду укључене и доступне на уређају да би апликација могла да их користи. То може да повећа потрошњу батерије."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ова апликација може да одреди вашу тачну локацију на основу услуга локације док се апликација користи. Услуге локације за уређај морају да буду укључене да би апликација одредила локацију. То може да повећа потрошњу батерије."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"приступ приближној локацији само у првом плану"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ова апликација може да одреди вашу приближну локацију само када ради у првом плану. Услуге локације морају да буду укључене и доступне на уређају да би апликација могла да их користи."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ова апликација може да одреди вашу приближну локацију на основу услуга локације док се апликација користи. Услуге локације за уређај морају да буду укључене да би апликација одредила локацију."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"приступ локацији у позадини"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ова апликација може да приступа локацији док ради у позадини, као и када ради у првом плану."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ова апликација може да приступа локацији у било ком тренутку, чак и док се апликација не користи."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"промена аудио подешавања"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Дозвољава апликацији да мења глобална аудио подешавања као што су јачина звука и избор звучника који се користи као излаз."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"снимање аудио записа"</string> @@ -447,11 +441,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"снимање фотографија и видео снимака"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Ова апликација може да снима фотографије и видео снимке помоћу камере у било ком тренутку."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Дозволите некој апликацији или услузи да приступа камерама система да би снимала слике и видео снимке"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ова привилегована системска апликација може да снима слике и видео снимке помоћу камере система у било ком тренутку. Апликација треба да има и дозволу android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Дозволите апликацији или услузи да добија повратне позиве о отварању или затварању уређаја са камером."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ова апликација може да добија повратне позиве када се било који уређај са камером отвара или затвара (помоћу неке апликације)."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"контрола вибрације"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Дозвољава апликацији да контролише вибрацију."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Дозвољава апликацији да приступа стању вибрирања."</string> @@ -1370,13 +1362,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Прегледа се актуелни садржај"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Нови/а <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Додирните да бисте подесили"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"За пренос слика и медија"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Проблем са: <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Додирните да бисте исправили"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Медиј <xliff:g id="NAME">%s</xliff:g> је оштећен. Изаберите да га поправите."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Уређај <xliff:g id="NAME">%s</xliff:g> није подржан"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Овај уређај не подржава овај уређај <xliff:g id="NAME">%s</xliff:g>. Додирните да бисте подесили подржани формат."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Овај уређај не подржава овај медиј (<xliff:g id="NAME">%s</xliff:g>). Изаберите да га подесите у подржаном формату."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Уређај <xliff:g id="NAME">%s</xliff:g> је неочекивано уклоњен"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Избаците медијум пре него што га уклоните да не бисте изгубили садржај"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> је уклоњен/а"</string> @@ -1646,24 +1642,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Желите да појачате звук изнад препорученог нивоа?\n\nСлушање гласне музике дуже време може да вам оштети слух."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Желите ли да користите пречицу за приступачност?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Када је пречица укључена, притисните оба дугмета за јачину звука да бисте покренули функцију приступачности."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Желите ли да укључите функције приступачности?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Ако задржите оба тастера за јачину звука пар секунди, укључиће се функције приступачности. То може да промени начин рада уређаја.\n\nПостојеће функције:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nМожете да промените изабране функције у одељку Подешавања > Приступачност."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Желите ли да укључите TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Ако задржите оба тастера за јачину звука пар секунди, укључује се TalkBack, читач екрана који је користан за слепе и слабовиде особе. TalkBack потпуно мења начин рада уређаја.\n\nМожете да промените функцију на коју се односи ова пречица у одељку Подешавања > Приступачност."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Желите ли да укључите услугу <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ако задржите оба тастера за јачину звука пар секунди, укључује се <xliff:g id="SERVICE">%1$s</xliff:g>, функција приступачности. То може да промени начин рада уређаја.\n\nМожете да промените функцију на коју се односи ова пречица у одељку Подешавања > Приступачност."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Укључи"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Не укључуј"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Желите ли да дозволите да услуга <xliff:g id="SERVICE">%1$s</xliff:g> има потпуну контролу над уређајем?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако укључите услугу <xliff:g id="SERVICE">%1$s</xliff:g>, уређај неће користити закључавање екрана да би побољшао шифровање података."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Потпуна контрола је примерена за апликације које вам помажу код услуга приступачности, али не и за већину апликација."</string> @@ -1674,10 +1661,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дозволи"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Одбиј"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Додирните неку функцију да бисте почели да је користите:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Одаберите функције које ћете користити са дугметом Приступачност"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Одаберите функције које ћете користити са тастером јачине звука као пречицом"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Услуга <xliff:g id="SERVICE_NAME">%s</xliff:g> је искључена"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Измените пречице"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string> @@ -1685,23 +1670,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Користи пречицу"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инверзија боја"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Корекција боја"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Задржали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је укључена."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Задржали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је искључена."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Притисните и задржите оба тастера за јачину звука три секунде да бисте користили <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Изаберите функцију која ће се користити када додирнете дугме Приступачност:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Одаберите функцију која ће се користити помоћу покрета за приступачност (помоћу два прста превуците нагоре од дна екрана):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Одаберите функцију која ће се користити помоћу покрета за приступачност (помоћу три прста превуците нагоре од дна екрана):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Да бисте прелазили са једне функције на другу, додирните и задржите дугме Приступачност."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Да бисте прелазили са једне функције на другу, превуците нагоре помоћу два прста и задржите."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Да бисте прелазили са једне функције на другу, превуците нагоре помоћу три прста и задржите."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Увећање"</string> <string name="user_switched" msgid="7249833311585228097">"Актуелни корисник <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Пребацивање на <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2084,8 +2061,7 @@ <item quantity="few"><xliff:g id="FILE_NAME_2">%s</xliff:g> и још <xliff:g id="COUNT_3">%d</xliff:g> датотеке</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> и још <xliff:g id="COUNT_3">%d</xliff:g> датотека</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Нема препоручених људи за дељење"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Листа апликација"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Ова апликација нема дозволу за снимање, али би могла да снима звук помоћу овог USB уређаја."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Почетак"</string> @@ -2121,222 +2097,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Ниједна апликација за посао не може да отвори овај садржај"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Ниједна лична апликација не може да подржава овај садржај"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Ниједна лична апликација не може да отвори овај садржај"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Снимање или пуштање звука у телефонским позивима"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Омогућава овој апликацији, када је додељена као подразумевана апликација за позивање, да снима или пушта звук у телефонским позивима."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN за откључавање SIM мреже"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN за откључавање подскупа SIM мреже"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN за откључавање пословне SIM картице"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN за откључавање добављача услуге SIM картице"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN за откључавање SIM картице"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Унесите PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Унесите PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Унесите PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Унесите PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Унесите PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN за откључавање RUIM мреже 1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN за откључавање RUIM мреже 2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN за откључавање RUIM hrpd-а"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN за откључавање пословне RUIM картице"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN за откључавање RUIM картице добављача услуге"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN за откључавање RUIM картице"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Унесите PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Унесите PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Унесите PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Унесите PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Унесите PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Унесите PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN за откључавање SPN-а"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN за откључавање SP еквивалентног матичног PLMN-а"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN за откључавање ICCID-а"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN за откључавање IMPI-ја"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN за откључавање добављача услуге подскупа мреже"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Захтева се откључавање SIM мреже…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Захтева се откључавање подскупа SIM мреже…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Захтева се откључавање добављача услуге SIM картице…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Захтева се откључавање пословне SIM картице…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Захтева се откључавање помоћу PUK-а…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Захтева се откључавање помоћу PUK-а…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Захтева се откључавање помоћу PUK-а…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Захтева се откључавање помоћу PUK-а…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Захтева се откључавање помоћу PUK-а…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Захтева се откључавање SIM картице…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Захтева се откључавање RUIM мреже 1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Захтева се откључавање RUIM мреже 2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Захтева се откључавање RUIM hrpd-а…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Захтева се откључавање RUIM картице добављача услуге…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Захтева се откључавање пословне RUIM картице…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Захтева се откључавање SPN-а…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Захтева се откључавање SP еквивалентног матичног PLMN-а…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Захтева се откључавање ICCID-а…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Захтева се откључавање IMPI-ја…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Захтева се откључавање добављача услуге подскупа мреже…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Захтева се откључавање RUIM картице…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Захтева се откључавање помоћу PUK-а…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Захтева се откључавање помоћу PUK-а…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Захтева се откључавање помоћу PUK-а…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Захтева се откључавање помоћу PUK-а…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Захтева се откључавање помоћу PUK-а…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Захтева се откључавање помоћу PUK-а…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Захтев за откључавање SIM мреже није успео."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Захтев за откључавање подскупа SIM мреже је успео."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Захтев за откључавање добављача услуге SIM картице није успео."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Захтев за откључавање пословне SIM картице није успео."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Захтев за откључавање SIM картице није успео."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Захтев за откључавање RUIM мреже 1 није успео."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Захтев за откључавање RUIM мреже 2 није успео."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Захтев за откључавање RUIM hrpd-а није успео."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Захтев за откључавање пословне RUIM картице није успео."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Захтев за откључавање RUIM картице добављача услуге није успео."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Захтев за откључавање RUIM картице није успео."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Откључавање помоћу PUK-а није успело."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Откључавање помоћу PUK-а није успело."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Откључавање помоћу PUK-а није успело."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Откључавање помоћу PUK-а није успело."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Откључавање помоћу PUK-а није успело."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Откључавање помоћу PUK-а није успело."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Откључавање помоћу PUK-а није успело."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Откључавање помоћу PUK-а није успело."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Откључавање помоћу PUK-а није успело."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Откључавање помоћу PUK-а није успело."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Откључавање помоћу PUK-а није успело."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Захтев за откључавање SPN-а није успео."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Захтев за откључавање SP еквивалентног матичног PLMN-а није успео."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Захтев за откључавање ICCID-а није успео."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Захтев за откључавање IMPI-ја није успео."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Захтев за откључавање добављача услуге подскупа мреже није успео."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Откључавање SIM мреже је успело."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Откључавање подскупа SIM мреже је успело."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Откључавање добављача услуге SIM картице је успело."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Откључавање пословне SIM картице је успело."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Откључавање SIM картице је успело."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Откључавање RUIM мреже 1 је успело."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Откључавање RUIM мреже 2 је успело."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Откључавање RUIM hrpd-а је успело."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Захтев за откључавање RUIM картице добављача услуге је успео."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Откључавање пословне RUIM картице је успело."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Откључавање RUIM картице је успело."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Откључавање помоћу PUK-а је успело."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Откључавање помоћу PUK-а је успело."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Откључавање помоћу PUK-а је успело."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Откључавање помоћу PUK-а је успело."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Откључавање помоћу PUK-а је успело."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Откључавање помоћу PUK-а је успело."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Откључавање помоћу PUK-а је успело."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Откључавање помоћу PUK-а је успело."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Откључавање помоћу PUK-а је успело."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Откључавање помоћу PUK-а је успело."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Откључавање помоћу PUK-а је успело."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Откључавање SPN-а је успело."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Откључавање SP еквивалентног матичног PLMN-а је успело."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Откључавање ICCID-а је успело."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Откључавање IMPI-ја је успело."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Захтев за откључавање добављача услуге подскупа мреже је успео."</string> </resources> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index 05a1abe93012..0b2962cee50b 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administratören tillåter inte längre privat bruk av enheten"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Enheten hanteras"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Organisationen hanterar den här enheten och kan övervaka nätverkstrafiken. Tryck om du vill veta mer."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Platsinställningarna har ändrats av administratören"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Tryck för att se dina platsinställningar."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Appar har åtkomst till din plats"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Kontakta IT-administratören om du vill veta mer"</string> <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string> <string name="location_service" msgid="2439187616018455546">"Location Service"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Enheten kommer att rensas"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Det går inte att använda administratörsappen. Enheten rensas.\n\nKontakta organisationens administratör om du har några frågor."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Utskrift har inaktiverats av <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Återaktivera privata appar"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Appar blockeras i morgon"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT-administratören tillåter inte att din jobbprofil pausas i mer än <xliff:g id="DAYS">%1$d</xliff:g> dagar"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Aktivera jobbprofilen"</string> <string name="me" msgid="6207584824693813140">"Jag"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Alternativ för surfplattan"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Alternativ för Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Telefonalternativ"</string> <string name="global_action_lock" msgid="6949357274257655383">"Skärmlås"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Stäng av"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Strömbrytare"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Starta om"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Nödsituation"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Felrapport"</string> <string name="global_action_logout" msgid="6093581310002476511">"Avsluta session"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"få åtkomst till extra kommandon för platsleverantör"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Tillåter att appen får åtkomst till extra kommandon för platsleverantör. Detta kan innebära att appen tillåts störa funktionen för GPS eller andra platskällor."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"endast åtkomst till exakt plats i förgrunden"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Den här appen kan endast få information om din exakta plats när den körs i förgrunden. Platstjänsterna måste ha aktiverats och vara tillgängliga på enheten om appen ska kunna använda dem. Detta kan leda till ökad batteriförbrukning."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Den här appen kan få åtkomst till din exakta plats från platstjänster när appen används. Platstjänster för enheten måste vara aktiverat för att appen ska få åtkomst till plats. Detta kan öka batteriförbrukningen."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"endast åtkomst till ungefärlig plats i förgrunden"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Den här appen kan endast få information om din ungefärliga plats när den körs i förgrunden. Platstjänsterna måste ha aktiverats och vara tillgängliga på enheten om appen ska kunna använda dem."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Den här appen kan få åtkomst till din ungefärliga plats från platstjänster när appen används. Platstjänster för enheten måste vara aktiverat för att appen ska få åtkomst till plats."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"få åtkomst till platsinformation i bakgrunden"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Appen får åtkomst till platsinformation när appen körs i bakgrunden, förutom att den har åtkomst när den körs i förgrunden."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Den här appen har platsåtkomst hela tiden, även när appen inte används."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ändra dina ljudinställningar"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Tillåter att appen ändrar globala ljudinställningar som volym och vilken högtalarutgång som används."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"spela in ljud"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"ta bilder och spela in videoklipp"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Appen kan ta kort och spela in video med kameran när som helst."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Ge en app eller tjänst behörighet att ta bilder och spela in videor med systemets kameror"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Denna systemapp med särskild behörighet kan ta bilder och spela in videor med systemets kamera när som helst. Appen måste även ha behörigheten android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Tillåt att en app eller tjänst får återanrop när en kameraenhet öppnas eller stängs."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Den här appen kan få återanrop när en kameraenhet öppnas (efter app) eller stängs."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"styra vibration"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Tillåter att appen styr vibrationen."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Appen beviljas åtkomst till vibrationsstatus."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Granskar nuvarande innehåll"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Nytt <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Tryck för att konfigurera"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"För överföring av foton och media"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problem med <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tryck och åtgärda"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> har skadats. Välj för att åtgärda."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> stöds inte"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Enheten har inte stöd för <xliff:g id="NAME">%s</xliff:g>. Tryck här om du vill konfigurera i ett format som stöds."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Enheten stöder inte detta <xliff:g id="NAME">%s</xliff:g>. Välj för att konfigurera i ett format som stöds."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Enheten har inte stöd för detta <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> togs bort oväntat"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Mata ut media innan du tar bort den för att inte förlora innehåll"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> har tagits bort"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vill du höja volymen över den rekommenderade nivån?\n\nAtt lyssna med stark volym långa stunder åt gången kan skada hörseln."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vill du använda Aktivera tillgänglighet snabbt?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"När kortkommandot har aktiverats startar du en tillgänglighetsfunktion genom att trycka ned båda volymknapparna i tre sekunder."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Vill du aktivera tillgänglighetsfunktionerna?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Om du trycker ned båda volymknapparna i ett par sekunder aktiveras tillgänglighetsfunktionerna. Det kan leda till att enheten fungerar annorlunda.\n\nAktuella funktioner:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nDu kan ändra vilka funktioner som aktiveras under Inställningar > Tillgänglighet."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Vill du aktivera TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Om du trycker ned båda volymknapparna i ett par sekunder aktiveras TalkBack, en skärmläsare som personer med nedsatt syn kan använda som hjälpmedel. Med TalkBack fungerar enheten helt annorlunda.\n\nDu kan ändra vilken funktion som ska aktiveras med genvägen under Inställningar > Tillgänglighet."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Vill du aktivera <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Om du trycker ned båda volymknapparna i ett par sekunder aktiveras <xliff:g id="SERVICE">%1$s</xliff:g>, en tillgänglighetsfunktion. Det kan leda till att enheten fungerar annorlunda.\n\nDu kan ändra vilken funktion som ska aktiveras med genvägen under Inställningar > Tillgänglighet."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktivera"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Aktivera inte"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vill du tillåta att <xliff:g id="SERVICE">%1$s</xliff:g> får fullständig kontroll över enheten?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Om du aktiverar <xliff:g id="SERVICE">%1$s</xliff:g> används inte skärmlåset för att förbättra datakryptering på enheten."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Fullständig kontroll lämpar sig för appar med tillgänglighetsfunktioner, men är inte lämplig för de flesta appar."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Tillåt"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Neka"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tryck på funktioner som du vill aktivera:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Välj vilka funktioner du vill använda med hjälp av tillgänglighetsknappen"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Välj vilka funktioner du vill använda med hjälp av kortkommandot för volymknapparna"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> har inaktiverats"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Redigera genvägar"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Klar"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Använd kortkommandot"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverterade färger"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Färgkorrigering"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volymknapparna har tryckts ned. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> har aktiverats."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volymknapparna har tryckts ned. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> har inaktiverats."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Tryck och håll båda volymknapparna i tre sekunder för att använda <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Välj en funktion som ska användas när du trycker på tillgänglighetsknappen:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Välj en funktion som ska användas med tillgänglighetsrörelsen (svepa uppåt med två fingrar från skärmens nederkant):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Välj en funktion som ska användas med tillgänglighetsrörelsen (svepa uppåt med tre fingrar från skärmens nederkant):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Byt mellan funktionerna genom att trycka länge på tillgänglighetsknappen."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Byt funktion genom att svepa uppåt med två fingrar och hålla kvar dem."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Byt funktion genom att svepa uppåt med tre fingrar och hålla kvar dem."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Förstoring"</string> <string name="user_switched" msgid="7249833311585228097">"Nuvarande användare: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Byter till <xliff:g id="NAME">%1$s</xliff:g> …"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> filer</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> fil</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Det finns inga rekommendationer för delning"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Applista"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Appen har inte fått inspelningsbehörighet men kan spela in ljud via denna USB-enhet."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Startsida"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Det går inte att öppna innehållet med några jobbappar"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Inga privata appar har stöd för det här innehållet"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Det går inte att öppna innehållet med några privata appar"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Spela in och spela upp ljud i telefonsamtal"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Tillåter appen att spela in och spela upp ljud i telefonsamtal när den har angetts som standardapp för uppringningsfunktionen."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Pinkod för upplåsning av nätverk för SIM-kort"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Pinkod för upplåsning av delnätverk för SIM-kort"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Pinkod för upplåsning av företag för SIM-kort"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Pinkod för upplåsning av operatör för SIM-kort"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Pinkod för upplåsning av SIM-kort"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Ange PUK-kod"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Ange PUK-kod"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Ange PUK-kod"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Ange PUK-kod"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Ange PUK-kod"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Pinkod för upplåsning av nätverk 1 för RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Pinkod för upplåsning av nätverk 2 för RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Pinkod för upplåsning av HRPD för RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Pinkod för upplåsning av företag för RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Pinkod för upplåsning av operatör för RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Pinkod för upplåsning av RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Ange PUK-kod"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Ange PUK-kod"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Ange PUK-kod"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Ange PUK-kod"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Ange PUK-kod"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Ange PUK-kod"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Pinkod för upplåsning av SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Pinkod för upplåsning av operatör och likvärdig hem-PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Pinkod för upplåsning med ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Pinkod för upplåsning med IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Pinkod för upplåsning av operatör för delnätverk"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Begär upplåsning av nätverk för SIM-kort …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Begär upplåsning av delnätverk för SIM-kort …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Begär upplåsning av operatör för SIM-kort …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Begär upplåsning av företag för SIM-kort …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Begär upplåsning med PUK-kod …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Begär upplåsning med PUK-kod …"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Begär upplåsning med PUK-kod …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Begär upplåsning med PUK-kod …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Begär upplåsning med PUK-kod …"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Begär upplåsning av SIM-kort …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Begär upplåsning av nätverk 1 för RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Begär upplåsning av nätverk 2 för RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Begär upplåsning av HRPD för RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Begär upplåsning av operatör för RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Begär upplåsning av företag för RUIM …"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Begär upplåsning av SPN …"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Begär upplåsning av operatör och likvärdig hem-PLMN …"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Begär upplåsning med ICCID …"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Begär upplåsning med IMPI …"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Begär upplåsning av operatör för delnätverk …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Begär upplåsning av RUIM …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Begär upplåsning med PUK-kod …"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Begär upplåsning med PUK-kod …"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Begär upplåsning med PUK-kod …"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Begär upplåsning med PUK-kod …"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Begär upplåsning med PUK-kod …"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Begär upplåsning med PUK-kod …"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Begäran om upplåsning av nätverk för SIM-kort misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Begäran om upplåsning av delnätverk för SIM-kort misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Begäran om upplåsning av operatör för SIM-kort misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Begäran om upplåsning av företag för SIM-kort misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Begäran om upplåsning av SIM-kort misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Begäran om upplåsning av nätverk 1 för RUIM misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Begäran om upplåsning av nätverk 2 för RUIM misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Begäran om upplåsning av HRPD för RUIM misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Begäran om upplåsning av företag för RUIM misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Begäran om upplåsning av operatör för RUIM misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Begäran om upplåsning av RUIM misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Upplåsning med PUK-kod misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Upplåsning med PUK-kod misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Upplåsning med PUK-kod misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Upplåsning med PUK-kod misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Upplåsning med PUK-kod misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Upplåsning med PUK-kod misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Upplåsning med PUK-kod misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Upplåsning med PUK-kod misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Upplåsning med PUK-kod misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Upplåsning med PUK-kod misslyckades."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Upplåsning med PUK-kod misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Begäran om upplåsning av SPN misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Begäran om upplåsning av operatör och likvärdig hem-PLMN misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Begäran om upplåsning med ICCID misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Begäran om upplåsning med IMPI misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Begäran om upplåsning av operatör för delnätverk misslyckades."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Nätverk upplåst för SIM-kort."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Delnätverk upplåst för SIM-kort."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Operatör upplåst för SIM-kort."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM upplåst för företag."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM-kort upplåst."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Nätverk 1 upplåst för RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Nätverk 2 upplåst för RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"HRPD upplåst för RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Operatör upplåst för RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Företag upplåst för RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM upplåst."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Upplåst med PUK-kod."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Upplåst med PUK-kod."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Upplåst med PUK-kod."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Upplåst med PUK-kod."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Upplåst med PUK-kod."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Upplåst med PUK-kod."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Upplåst med PUK-kod."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Upplåst med PUK-kod."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Upplåst med PUK-kod."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Upplåst med PUK-kod."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Upplåst med PUK-kod."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN upplåst."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Operatör och likvärdig hem-PLMN upplåst."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Upplåst med ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Upplåst med IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Operatör upplåst för delnätverk."</string> </resources> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index bea38039cd41..0360106c1f89 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Msimamizi aliacha kutumia kifaa kwa matumizi ya binafsi"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Kifaa kinadhibitiwa"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Shirika lako linadhibiti kifaa hiki na huenda likafuatilia shughuli kwenye mtandao. Gusa ili upate maelezo zaidi."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Mipangilio ya mahali imebadilishwa na msimamizi wako"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Gusa ili uone mipangilio ya mahali ulipo."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Programu zinaweza kutambua mahali ulipo"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Wasiliana na msimamizi wako wa TEHAMA ili upate maelezo zaidi"</string> <string name="country_detector" msgid="7023275114706088854">"Kitambuzi cha Nchi"</string> <string name="location_service" msgid="2439187616018455546">"Huduma ya Mahali"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Huduma ya Arifa ya Kitambuzi"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Data iliyomo kwenye kifaa chako itafutwa"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Huwezi kutumia programu ya msimamizi. Sasa data iliyo kwenye kifaa chako itafutwa.\n\nIkiwa una maswali yoyote, wasiliana na msimamizi wa shirika lako."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Kipengele cha kuchapisha kimezimwa na <xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Acha kuzuia programu za binafsi"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Programu zitazuiwa kesho"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Msimamizi wako wa TEHAMA haruhusu wasifu wako wa kazini kusimamishwa kwa zaidi ya siku <xliff:g id="DAYS">%1$d</xliff:g>"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Washa wasifu wa kazini"</string> <string name="me" msgid="6207584824693813140">"Mimi"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Chaguo za kompyuta ndogo"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Chaguo za Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Chaguo za simu"</string> <string name="global_action_lock" msgid="6949357274257655383">"Funga skrini"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Zima"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Kuwasha/kuzima"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Zima kisha uwashe"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Dharura"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Ripoti ya hitilafu"</string> <string name="global_action_logout" msgid="6093581310002476511">"Maliza kipindi"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"fikia amri za ziada za mtoa huduma ya mahali"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ruhusu programu kufikia amri za ziada za mtoa huduma za mahali. Hii huenda ikaruhusu programu ikatize matumizi ya GPS au vyanzo vingine vya eneo."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"kufikia mahali mahususi ikiwa tu programu imefunguliwa kwenye skrini"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Programu hii inaweza kupata mahali halisi ikiwa tu umeifungua kwenye skrini. Ni lazima uwashe huduma za mahali na zipatikane kwenye kifaa chako ili programu iweze kuzitumia. Hatua hii inaweza kuongeza matumizi ya betri."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Programu hii inaweza kupata mahali halisi ulipo kutoka kwenye huduma za mahali wakati programu inatumika. Ni lazima uwashe huduma za mahali za kifaa chako ili programu itambue mahali. Huenda hatua hii ikaongeza matumizi ya betri."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"kufikia mahali palipokadiriwa ikiwa tu programu imefunguliwa kwenye skrini"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Programu hii inaweza kukadiria mahali ulipo ikiwa tu umeifungua kwenye skrini. Ni lazima huduma za mahali ziwashwe na zipatikane kwenye kifaa chako ili programu iweze kuzitumia."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Programu hii inaweza kukadiria mahali ulipo kutoka kwenye huduma za mahali wakati programu inatumika. Ni lazima uwashe huduma za mahali za kifaa chako ili programu itambue mahali."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ifikie mahali inapotumika chinichini"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Programu hii inaweza kufikia maelezo ya mahali inapotumika chinichini, pamoja na ufikiaji wa mahali wakati umeifungua kwenye skrini."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Programu hii inaweza kufikia maelezo ya mahali wakati wowote, hata wakati programu haitumiki."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"badilisha mipangilio yako ya sauti"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Inaruhusu programu kurekebisha mipangilio ya sauti kila mahali kama vile sauti na ni kipaza sauti kipi ambacho kinatumika kwa kutoa."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"kurekodi sauti"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"Kupiga picha na kurekodi video"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Programu hii inaweza kupiga picha na kurekodi video kwa kutumia kamera wakati wowote."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Ruhusu programu au huduma ifikie kamera za mfumo ili ipige picha na irekodi video"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Programu hii ya mfumo au inayopendelewa inaweza kupiga picha na kurekodi video ikitumia kamera ya mfumo wakati wowote. Inahitaji ruhusa ya android.permission.CAMERA iwepo kwenye programu pia"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Ruhusu programu au huduma ipokee simu zinazopigwa tena kuhusu vifaa vya kamera kufunguliwa au kufungwa."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Programu hii inaweza kupokea misimbo ya kutekeleza wakati kifaa chochote cha kamera kinafunguliwa (na programu) au kufungwa."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"Kudhibiti mtetemo"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Inaruhusu programu kudhibiti kitingishi."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Huruhusu programu kufikia hali ya kitetemeshaji."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Inakagua maudhui ya sasa"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> mpya"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Gusa ili uweke mipangilio"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Kwa ajili ya kuhamisha picha na maudhui"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Tatizo limetokea kwenye <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Gusa ili urekebishe"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> imeharibika. Ichague ili uirekebishe."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> isiyotumika"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Kifaa hiki hakitumii <xliff:g id="NAME">%s</xliff:g>. Gusa ili uweke mipangilio ya muundo unaoweza kutumika."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Kifaa hiki hakitumii <xliff:g id="NAME">%s</xliff:g> hii. Ichague ili uweke muundo unaotumika."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Kifaa hiki hakitumii <xliff:g id="NAME">%s</xliff:g> hii."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> imeondolewa bila kutarajiwa"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Ondoa kifaa cha maudhui kabla ya kukichomoa ili usipoteze maudhui"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Imeondoa <xliff:g id="NAME">%s</xliff:g>"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ungependa kupandisha sauti zaidi ya kiwango kinachopendekezwa?\n\nKusikiliza kwa sauti ya juu kwa muda mrefu kunaweza kuharibu uwezo wako wa kusikia."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Ungependa kutumia njia ya mkato ya ufikivu?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Unapowasha kipengele cha njia ya mkato, hatua ya kubonyeza vitufe vyote viwili vya sauti kwa sekunde tatu itafungua kipengele cha ufikivu."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Ungependa kuwasha vipengele vya ufikivu?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Hatua ya kushikilia chini vitufe vyote viwili vya sauti kwa sekunde chache huwasha vipengele vya ufikivu. Huenda hatua hii ikabadilisha jinsi kifaa chako kinavyofanya kazi.\n\nVipengele vya sasa:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nUnaweza kubadilisha vipengele ulivyochagua katika Mipangilio > Ufikivu."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Ungependa kuwasha TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Kushikilia vitufe vyote viwili vya sauti kwa sekunde chache huwasha kipengele cha TalkBack, kisoma skrini ambacho ni muhimu kwa vipofu au walio na uwezo mdogo wa kuona. TalkBack hubadilisha kikamilifu jinsi kifaa chako kinavyofanya kazi.\n\nUnaweza kubadilisha njia hii ya mkato iwe kipengele kingine katika Mipangilio > Ufikivu."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Ungependa kuwasha <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Hatua ya kushikilia chini vitufe vyote viwili vya sauti kwa sekunde chache huwasha <xliff:g id="SERVICE">%1$s</xliff:g>, kipengele cha ufikivu. Huenda hatua hii ikabadilisha jinsi kifaa chako kinavyofanya kazi.\n\nUnaweza kubadilisha njia hii ya mkato iwe kipengele kingine katika Mipangilio > Ufikivu."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Washa"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Usiwashe"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Ungependa kuruhusu <xliff:g id="SERVICE">%1$s</xliff:g> idhibiti kifaa chako kikamilifu?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ukiwasha <xliff:g id="SERVICE">%1$s</xliff:g>, kifaa chako hakitatumia kipengele cha kufunga skrini yako ili kuboresha usimbaji wa data kwa njia fiche."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Udhibiti kamili unafaa kwa programu zinazokusaidia kwa mahitaji ya ufikivu, ila si kwa programu nyingi."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Ruhusu"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Kataa"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Gusa kipengele ili uanze kukitumia:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Chagua vipengele vya kutumia na kitufe cha zana za ufikivu"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Chagua vipengele vya kutumia na njia ya mkato ya kitufe cha sauti"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Huduma ya <xliff:g id="SERVICE_NAME">%s</xliff:g> imezimwa"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Kubadilisha njia za mkato"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Nimemaliza"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Tumia Njia ya Mkato"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ugeuzaji rangi"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Usahihishaji wa rangi"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Vitufe vya sauti vilivyoshikiliwa. Umewasha <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Vitufe vya sauti vilivyoshikiliwa. Umezima <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Bonyeza na ushikilie vitufe vyote viwili vya sauti kwa sekunde tatu ili utumie <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Chagua kipengele utakachotumia ukigusa kitufe cha ufikivu:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Chagua kipengele cha kutumia pamoja na ishara ya ufikivu (telezesha vidole viwili kutoka chini kwenda juu kwenye skrini):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Chagua kipengele cha kutumia pamoja na ishara ya ufikivu (telezesha vidole vitatu kutoka chini kwenda juu kwenye skrini):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Ili ubadilishe kati ya vipengele, gusa na ushikilie kitufe cha zana za ufikivu."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Ili ubadilishe kati ya vipengele, telezesha vidole viwili juu na ushikilie."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Ili ubadilishe kati ya vipengele, telezesha vidole vitatu juu na ushikilie."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ukuzaji"</string> <string name="user_switched" msgid="7249833311585228097">"Mtumiaji wa sasa <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Inabadili kwenda <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other">Faili <xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g></item> <item quantity="one">Faili <xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g></item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Hujapendekeza watu wa kushiriki nao"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Orodha ya programu"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Programu hii haijapewa ruhusa ya kurekodi lakini inaweza kurekodi sauti kupitia kifaa hiki cha USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Mwanzo"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Hakuna programu za kazini zinazoweza kufungua maudhui haya"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Hakuna programu za binafsi zinazoweza kutumia maudhui haya"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Hakuna programu za binafsi zinazoweza kufungua maudhui haya"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Kurekodi au kucheza sauti katika simu"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Huruhusu programu hii, wakati imekabidhiwa kuwa programu chaguomsingi ya kipiga simu, kurekodi au kucheza sauti katika simu."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN ya kufungua mtandao wa SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN ya kufungua SIM iliyofungwa na mtoa huduma za simu"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN ya kufungua SIM ya shirika"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN ya kufungua kadi ya mtoa huduma ya SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN ya kufungua SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Weka PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Weka PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Weka PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Weka PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Weka PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN ya kufungua mtandao wa 1 wa RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN ya kufungua mtandao wa 2 wa RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN ya kufungua Mtandao wa HRPD"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN ya kufungua kadi ya RUIM ya Shirika"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN ya kufungua kadi ya mtoa huduma ya RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN ya kufungua kadi ya RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Weka PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Weka PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Weka PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Weka PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Weka PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Weka PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN ya kufungua ya SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN ya kufungua kadi ya SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN ya kufungua ya ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN ya kufungua ya IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN ya kufungua kadi ya mtoa huduma ya mtandao mdogo"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Inaomba kufungua mtandao wa SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Inaomba kufungua SIM iliyofungwa na mtoa huduma za simu …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Inaomba kufungua kadi ya mtoa huduma ya SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Inaomba kufungua SIM ya shirika…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Inaomba kufungua kwa kutumia PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Inaomba kufungua kwa kutumia PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Inaomba kufungua kwa kutumia PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Inaomba kufungua kwa kutumia PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Inaomba kufungua kwa kutumia PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Inaomba kufungua SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Inaomba kufungua mtandao wa 1 wa RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Inaomba kufungua mtandao wa 2 wa RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Inaomba kufungua Mtandao wa HRPD…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Inaomba kufungua kadi ya mtoa huduma ya RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Inaomba kufungua kadi ya RUIM ya Shirika…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Inaomba kufungua kwa kutumia SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Inaomba kufungua kadi ya SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Inaomba kufungua kwa kutumia ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Inaomba kufungua kwa kutumia IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Inaomba kufungua kadi ya mtoa huduma ya Mtandao mdogo…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Inaomba kufungua kadi ya RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Inaomba kufungua kwa kutumia PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Inaomba kufungua kwa kutumia PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Inaomba kufungua kwa kutumia PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Inaomba kufungua kwa kutumia PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Inaomba kufungua kwa kutumia PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Inaomba kufungua kwa kutumia PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Ombi la kufungua Mtandao wa SIM halijafaulu."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Ombi la kufungua SIM iliyofungwa na mtoa huduma za simu halikufaulu."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Imeshindwa kutekeleza ombi la kufungua kadi ya Mtoa Huduma ya SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Imeshindwa kutekeleza ombi la kufungua SIM ya Shirika."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Imeshindwa kutekeleza ombi la kufungua SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Imeshindwa kutekeleza ombi la kufungua Mtandao wa 1 wa RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Imeshindwa kutekeleza ombi la kufungua Mtandao wa 2 wa RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Imeshindwa kutekeleza ombi la kufungua Mtandao wa HRPD."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Imeshindwa kutekeleza ombi la kufungua kadi ya RUIM ya Shirika."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Imeshindwa kutekeleza ombi la kufungua kadi ya Mtoa Huduma ya RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Imeshindwa kutekeleza ombi la kufungua kadi ya RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Imeshindwa kufungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Imeshindwa kufungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Imeshindwa kufungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Imeshindwa kufungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Imeshindwa kufungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Imeshindwa kufungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Imeshindwa kufungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Imeshindwa kufungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Imeshindwa kufungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Imeshindwa kufungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Imeshindwa kufungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Imeshindwa kutekeleza ombi la kufungua kwa kutumia SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Imeshindwa kutekeleza ombi la kufungua kadi ya SP Equivalent Home PLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Imeshindwa kutekeleza ombi la kufungua kwa kutumia ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Imeshindwa kutekeleza ombi la kufungua kwa kutumia IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Imeshindwa kutekeleza ombi la kufungua kadi ya mtoa huduma ya mtandao mdogo."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Imefungua SIM iliyofungwa na mtoa huduma za simu."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Ombi la kufungua SIM iliyofungwa na mtoa huduma za simu limefaulu."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Imefungua kadi ya Mtoa Huduma ya SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Imefungua SIM ya Shirika."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Imefungua SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Imefungua Mtandao wa 1 wa RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Imefungua Mtandao wa 2 wa RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Imefungua Mtandao wa HRPD."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Imefungua kadi ya Mtoa Huduma ya RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Imefungua kadi ya RUIM ya Shirika."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Imefungua kadi ya RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Imefungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Imefungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Imefungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Imefungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Imefungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Imefungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Imefungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Imefungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Imefungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Imefungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Imefungua kwa kutumia PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Imefungua kwa kutumia SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Imefungua kadi ya SP Equivalent Home PLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Imefungua kwa kutumia ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Imefungua kwa kutumia IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Imefungua kadi ya mtoa huduma ya mtandao mdogo."</string> </resources> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index ff7592100f78..6ec7c751ddd7 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"நிர்வாகியால் தனிப்பட்ட உபயோகத்திற்காக ஒதுக்கப்பட்ட சாதனம்"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"சாதனம் நிர்வகிக்கப்படுகிறது"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"உங்கள் நிறுவனம் இந்தச் சாதனத்தை நிர்வகிக்கும், அத்துடன் அது நெட்வொர்க் ட்ராஃபிக்கைக் கண்காணிக்கலாம். விவரங்களுக்கு, தட்டவும்."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"உங்கள் நிர்வாகியால் இருப்பிட அமைப்புகள் மாற்றப்பட்டன"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"உங்கள் இருப்பிட அமைப்புகளைப் பார்க்க தட்டவும்."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"ஆப்ஸ் உங்கள் இருப்பிடத்தை அணுக முடியும்"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"உங்கள் IT நிர்வாகியைத் தொடர்புகொண்டு மேலும் அறியலாம்"</string> <string name="country_detector" msgid="7023275114706088854">"நாட்டைக் கண்டறியும் அம்சம்"</string> <string name="location_service" msgid="2439187616018455546">"இருப்பிடச் சேவை"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"சென்சார் அறிவிப்புச் சேவை"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"சாதனத் தரவு அழிக்கப்படும்"</string> <string name="factory_reset_message" msgid="2657049595153992213">"நிர்வாகி ஆப்ஸை உபயோகிக்க முடியாது. இப்போது, உங்கள் சாதனம் ஆரம்ப நிலைக்கு மீட்டமைக்கப்படும்.\n\nஏதேனும் கேள்விகள் இருப்பின், உங்கள் நிறுவனத்தின் நிர்வாகியைத் தொடர்புகொள்ளவும்."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"பிரிண்ட் செய்வதை <xliff:g id="OWNER_APP">%s</xliff:g> தடுத்துள்ளது."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"தனிப்பட்ட ஆப்ஸை அனுமதியுங்கள்"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"ஆப்ஸ் நாளை தடை செய்யப்படும்"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"பணிக் கணக்கு <xliff:g id="DAYS">%1$d</xliff:g> நாட்களுக்கு மேல் இடைநிறுத்தப்படுவதை உங்கள் IT நிர்வாகி அனுமதிக்கவில்லை"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"பணிக் கணக்கை ஆன் செய்"</string> <string name="me" msgid="6207584824693813140">"நான்"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"டேப்லெட் விருப்பங்கள்"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV விருப்பத்தேர்வுகள்"</string> @@ -428,11 +424,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"கூடுதல் இட வழங்குநரின் கட்டளைகளின் அணுகல்"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"கூடுதல் இட வழங்குநர் கட்டளைகளை அணுகப் ஆப்ஸை அனுமதிக்கிறது. இது, GPS அல்லது பிற இருப்பிட மூலங்களின் செயல்பாட்டை இடைமறிக்க ஆப்ஸை அனுமதிக்கலாம்."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"முன்புலத்தில் இயங்கும்போது மட்டும் துல்லியமான இருப்பிடத்தைக் கண்டறிதல்"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"இந்த ஆப்ஸ் முன்புலத்தில் இயங்கும்போது மட்டுமே நீங்கள் இருக்கும் இடத்தைத் துல்லியமாகக் கண்டறியும். உங்கள் சாதனத்தில், இருப்பிடச் சேவைகளை ஆப்ஸ் பயன்படுத்துவதற்கு வசதியாக, அவை ஆன் செய்யப்பட்டிருக்க வேண்டும். இதனால் பேட்டரி அதிகம் பயன்படுத்தப்படக்கூடும்."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"இந்த ஆப்ஸ் பயன்பாட்டில் இருக்கும்போது இருப்பிடச் சேவைகளிலிருந்து உங்களது துல்லியமான இருப்பிடத் தகவலை அது பெறும். இருப்பிடத் தகவலை ஆப்ஸ் பெறுவதற்கு உங்களது சாதனத்தில் இருப்பிடச் சேவைகள் இயக்கப்பட்டிருக்க வேண்டும். இது பேட்டரியை அதிகம் உபயோகிக்கக்கூடும்."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"முன்புலத்தில் இயங்கும்போது மட்டும் தோராயமான இருப்பிடத்தைக் கண்டறிதல்"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"முன்புலத்தில் இருக்கும்போது மட்டுமே இந்த ஆப்ஸால் தோராயமான இடத்தைக் கண்டறிய முடியும். இருப்பிட சேவைகள் ஆன் செய்யப்பட்டு சாதனத்தில் இருக்க வேண்டும், அப்போதுதான் அவற்றை ஆப்ஸால் பயன்படுத்த முடியும்."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"இந்த ஆப்ஸ் பயன்பாட்டில் உள்ளபோது இருப்பிடச் சேவைகளிலிருந்து உங்களது தோராயமான இருப்பிடத் தகவலை அது பெறும். இருப்பிடத் தகவலை ஆப்ஸ் பெறுவதற்கு உங்களது சாதனத்தில் இருப்பிடச் சேவைகள் இயக்கப்பட்டிருக்க வேண்டும்."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"பின்புலத்தில் இருப்பிடத்தை அணுகுதல்"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"முன்புல இருப்பிட அணுகலுடன் பின்புலத்தில் இயங்கும்போதும் இந்த ஆப்ஸால் இருப்பிடத்தை அணுக முடியும்."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"இந்த ஆப்ஸ் எந்த நேரத்திலும் (ஆப்ஸ் பயன்பாட்டில் இல்லாத நேரத்திலும் கூட) இருப்பிடத் தகவலை அணுகும்."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"எனது ஆடியோ அமைப்புகளை மாற்றுதல்"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ஒலியளவு மற்றும் வெளியீட்டிற்கு ஸ்பீக்கர்கள் பயன்படுத்தப்படுவது போன்ற ஒட்டுமொத்த ஆடியோ அமைப்புகளைக் கட்டுப்படுத்தப் ஆப்ஸை அனுமதிக்கிறது."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ஆடியோவைப் பதிவுசெய்தல்"</string> @@ -446,8 +442,7 @@ <string name="permlab_systemCamera" msgid="3642917457796210580">"படங்களையும் வீடியோக்களையும் எடுப்பதற்கு சிஸ்டம் கேமராக்களை அணுக ஆப்ஸையோ சேவையையோ அனுமதி"</string> <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> <skip /> - <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) --> - <skip /> + <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"கேமரா சாதனங்கள் திறக்கப்படும்போதோ மூடப்படும்போதோ அது குறித்த கால்பேக்குகளைப் பெற ஒரு ஆப்ஸையோ சேவையையோ அனுமதிக்கவும்."</string> <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> <skip /> <string name="permlab_vibrate" msgid="8596800035791962017">"அதிர்வைக் கட்டுப்படுத்துதல்"</string> @@ -463,10 +458,8 @@ <string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"அழைக்கும் அனுபவத்தை மேம்படுத்தும் பொருட்டு, சிஸ்டம் மூலம் தனது அழைப்புகளை ரூட் செய்ய ஆப்ஸை அனுமதிக்கும்."</string> <string name="permlab_callCompanionApp" msgid="3654373653014126884">"சிஸ்டம் மூலமாக அழைப்புகளைப் பார்த்தலும் கட்டுப்படுத்துதலும்."</string> <string name="permdesc_callCompanionApp" msgid="8474168926184156261">"செயலில் உள்ள அழைப்புகளைச் சாதனத்தில் பார்க்கவும் கட்டுப்படுத்தவும் ஆப்ஸை அனுமதிக்கிறது. அழைப்பு எண்கள் மற்றும் அழைப்புகளின் நிலை போன்ற தகவல்களும் இதில் அடங்கும்."</string> - <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) --> - <skip /> - <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) --> - <skip /> + <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"ஆடியோ ரெக்கார்டு கட்டுப்பாடுகளிலிருந்து விலக்கு"</string> + <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"ஆடியோ ரெக்கார்டு செய்வது தொடர்பான கட்டுப்பாடுகளிலிருந்து ஆப்ஸை விலக்கும்."</string> <string name="permlab_acceptHandover" msgid="2925523073573116523">"மற்றொரு பயன்பாட்டிலிருந்து அழைப்பைத் தொடருதல்"</string> <string name="permdesc_acceptHandovers" msgid="7129026180128626870">"மற்றொரு பயன்பாட்டில் தொடங்கப்பட்ட அழைப்பைத் தொடருவதற்கு, ஆப்ஸை அனுமதிக்கிறது."</string> <string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ஃபோன் எண்களைப் படித்தல்"</string> @@ -773,7 +766,7 @@ <string name="phoneTypeTtyTdd" msgid="532038552105328779">"TTY TDD"</string> <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"பணியிட மொபைல்"</string> <string name="phoneTypeWorkPager" msgid="3748332310638505234">"பணியிட பேஜர்"</string> - <string name="phoneTypeAssistant" msgid="757550783842231039">"உதவியாளர்"</string> + <string name="phoneTypeAssistant" msgid="757550783842231039">"Assistant"</string> <string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string> <string name="eventTypeCustom" msgid="3257367158986466481">"பிரத்தியேகம்"</string> <string name="eventTypeBirthday" msgid="7770026752793912283">"பிறந்தநாள்"</string> @@ -806,7 +799,7 @@ <string name="orgTypeOther" msgid="5450675258408005553">"மற்றவை"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"பிரத்தியேகம்"</string> <string name="relationTypeCustom" msgid="282938315217441351">"பிரத்தியேகம்"</string> - <string name="relationTypeAssistant" msgid="4057605157116589315">"உதவியாளர்"</string> + <string name="relationTypeAssistant" msgid="4057605157116589315">"Assistant"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"சகோதரர்"</string> <string name="relationTypeChild" msgid="9076258911292693601">"குழந்தை"</string> <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"வாழ்வுத் துணை"</string> @@ -1353,13 +1346,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"தற்போதைய உள்ளடக்கத்தை மதிப்பாய்வு செய்கிறது"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"புதிய <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"அமைக்க, தட்டவும்"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"படங்களையும் மீடியாவையும் மாற்றலாம்"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> இல் சிக்கல்"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"சரிசெய்ய, தட்டவும்"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> சிதைந்துள்ளது. சரிசெய்ய, தேர்ந்தெடுக்கவும்."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"ஆதரிக்கப்படாத <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"சாதனம் இந்த <xliff:g id="NAME">%s</xliff:g>ஐ ஆதரிக்கவில்லை. ஆதரிக்கப்படும் வடிவமைப்பில் அமைக்க, தட்டவும்."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"சாதனம் இந்த <xliff:g id="NAME">%s</xliff:g>ஐ ஆதரிக்கவில்லை. ஆதரிக்கப்படும் வடிவமைப்பில் அமைக்க, தேர்ந்தெடுக்கவும்."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> அகற்றப்பட்டது"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"உள்ளடக்கத்தை இழக்காமலிருக்க, அகற்றும் முன்பாக மீடியாவை வெளியேற்றவும்"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> அகற்றப்பட்டது"</string> @@ -1645,10 +1642,8 @@ <skip /> <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> <skip /> - <!-- no translation found for accessibility_enable_service_title (3931558336268541484) --> - <skip /> - <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) --> - <skip /> + <string name="accessibility_enable_service_title" msgid="3931558336268541484">"உங்கள் சாதனத்தை முழுமையாகக் கட்டுப்படுத்த <xliff:g id="SERVICE">%1$s</xliff:g> சேவையை அனுமதிக்க வேண்டுமா?"</string> + <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> சேவையை ஆன் செய்தால் தரவு என்க்ரிப்ஷனை மேம்படுத்த சாதனம் திரைப் பூட்டைப் பயன்படுத்தாது."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"உங்களுக்கு உதவக்கூடிய ஆப்ஸுக்குக் தேவையான அணுகல்தன்மையை அளித்து முழுக் கட்டுப்பாட்டையும் அளிக்கலாம், ஆனால் பெரும்பாலான ஆப்ஸுக்கு இது பொருந்தாது."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"திரையைப் பார்த்தலும் நிர்வகித்தலும்"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"இந்த அம்சத்தால் திரையில் உள்ள அனைத்தையும் படிக்க முடிவதோடு பிற ஆப்ஸின் மேல் உள்ளடக்கத்தைக் காட்டும்."</string> @@ -1656,17 +1651,14 @@ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ஏதேனும் ஆப்ஸ் அல்லது வன்பொருள் சென்சாரின் உதவியுடன் உரையாடல்களைக் கண்காணித்து உங்கள் சார்பாக ஆப்ஸுடன் உரையாட இச்சேவையால் இயலும்."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"அனுமதி"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"நிராகரி"</string> - <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) --> - <skip /> + <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ஒரு அம்சத்தைப் பயன்படுத்த அதைத் தட்டவும்:"</string> <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> <skip /> <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> <skip /> - <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) --> - <skip /> + <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ஆஃப் செய்யப்பட்டுள்ளது"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ஷார்ட்கட்களை மாற்று"</string> - <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) --> - <skip /> + <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"முடிந்தது"</string> <string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ஷார்ட்கட்டை முடக்கு"</string> <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ஷார்ட்கட்டைப் பயன்படுத்து"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"வண்ணத்தை நேர் எதிராக மாற்றுதல்"</string> @@ -2084,35 +2076,20 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"பணிச் சுயவிவரம்"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"தனிப்பட்ட காட்சி"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"பணிக் காட்சி"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"பணி ஆப்ஸுடன் இதைப் பகிர முடியாது"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"உங்கள் பணிக் கணக்கில் உள்ள ஆப்ஸில் இந்த உள்ளடக்கத்தைப் பகிர்வதை உங்கள் IT நிர்வாகி அனுமதிக்கவில்லை"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"பணி ஆப்ஸில் இதைத் திறக்க முடியவில்லை"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"உங்கள் பணிக் கணக்கில் உள்ள ஆப்ஸில் இந்த உள்ளடக்கத்தைத் திறப்பதை உங்கள் IT நிர்வாகி அனுமதிக்கவில்லை"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"தனிப்பட்ட ஆப்ஸுடன் இதைப் பகிர முடியாது"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"உங்கள் தனிப்பட்ட கணக்கில் உள்ள ஆப்ஸில் இந்த உள்ளடக்கத்தைப் பகிர்வதை உங்கள் IT நிர்வாகி அனுமதிக்கவில்லை"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"தனிப்பட்ட ஆப்ஸில் இதைத் திறக்க முடியவில்லை"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"உங்கள் தனிப்பட்ட கணக்கில் உள்ள ஆப்ஸில் இந்த உள்ளடக்கத்தைத் திறப்பதை உங்கள் IT நிர்வாகி அனுமதிக்கவில்லை"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"பணிக் கணக்கு இடைநிறுத்தப்பட்டுள்ளது"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"இயக்கு"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"அழைப்புகளின்போது ரெக்கார்டு செய்தல் அல்லது ஆடியோவைப் பிளே செய்தல்"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"இயல்பான டயலர் ஆப்ஸாக இதை அமைக்கும்போது, அழைப்புகளை ரெக்கார்டு செய்ய அல்லது ஆடியோவைப் பிளே செய்ய இதை அனுமதிக்கும்."</string> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"இந்த உள்ளடக்கத்தை எந்தவொரு பணி ஆப்ஸும் ஆதரிக்காது"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"இந்த உள்ளடக்கத்தை எந்தவொரு பணி ஆப்ஸாலும் திறக்க முடியாது"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"இந்த உள்ளடக்கத்தை எந்தவொரு தனிப்பட்ட ஆப்ஸும் ஆதரிக்காது"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"இந்த உள்ளடக்கத்தை எந்தவொரு தனிப்பட்ட ஆப்ஸாலும் திறக்க முடியாது"</string> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> <skip /> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index b0972b33ea7a..8bd07f35978a 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"వ్యక్తిగత వినియోగం కోసం నిర్వాహకులు పరికరాన్ని తీసి వేశారు"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"పరికరం నిర్వహించబడింది"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"మీ సంస్థ ఈ పరికరాన్ని నిర్వహిస్తుంది మరియు నెట్వర్క్ ట్రాఫిక్ని పర్యవేక్షించవచ్చు. వివరాల కోసం నొక్కండి."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"మీ అడ్మిన్ లొకేషన్ సెట్టింగ్లను మార్చారు"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"మీ లొకేషన్ సెట్టింగ్లను చూడటానికి ట్యాప్ చేయండి."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"యాప్లు మీ లొకేషన్ను యాక్సెస్ చేయగలవు"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"మరింత తెలుసుకోవడానికి మీ IT అడ్మిన్ను కాంటాక్ట్ చేయండి"</string> <string name="country_detector" msgid="7023275114706088854">"దేశం డిటెక్టర్"</string> <string name="location_service" msgid="2439187616018455546">"లొకేషన్ సర్వీస్"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"సెన్సార్ నోటిఫికేషన్ సర్వీస్"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"మీ పరికరంలోని డేటా తొలగించబడుతుంది"</string> <string name="factory_reset_message" msgid="2657049595153992213">"నిర్వాహక యాప్ ఉపయోగించడం సాధ్యపడదు. మీ పరికరంలోని డేటా ఇప్పుడు తొలగించబడుతుంది.\n\nమీకు ప్రశ్నలు ఉంటే, మీ సంస్థ యొక్క నిర్వాహకులను సంప్రదించండి."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"ముద్రణ <xliff:g id="OWNER_APP">%s</xliff:g> ద్వారా నిలిపివేయబడింది."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"మీపర్సనల్యాప్స్నిఅన్బ్లాక్"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"యాప్లు రేపు బ్లాక్ చేయబడతాయి"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"మీ కార్యాలయ ప్రొఫైల్ను <xliff:g id="DAYS">%1$d</xliff:g> రోజుల కంటే ఎక్కువ పాజ్ చేసి ఉంచడానికి మీ IT అడ్మిన్ అనుమతించరు"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"కార్యాలయ ప్రొఫైల్ను ఆన్ చేయండి"</string> <string name="me" msgid="6207584824693813140">"నేను"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"టాబ్లెట్ ఎంపికలు"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ఎంపికలు"</string> @@ -428,11 +424,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"అదనపు స్థాన ప్రదాత ఆదేశాలను యాక్సెస్ చేయడం"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"అదనపు స్థాన ప్రదాత ఆదేశాలను యాక్సెస్ చేయడానికి యాప్ను అనుమతిస్తుంది. ఇది GPS లేదా ఇతర స్థాన మూలాల నిర్వహణలో యాప్ ప్రమేయం ఉండేలా అనుమతించవచ్చు."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"స్క్రీన్పై ఉన్నప్పుడు మాత్రమే ఖచ్చితమైన స్థానాన్ని యాక్సెస్ చేయండి"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ఈ యాప్ స్క్రీన్పై ఉన్నప్పుడు మాత్రమే మీ ఖచ్చితమైన లొకేషన్ను తెలుసుకోగలదు. మీ పరికరంలో లొకేషన్ సర్వీస్లు అందుబాటులో ఉండి, అవి తప్పనిసరిగా ఆన్ చేసి ఉంటేనే, యాప్ వాటిని ఉపయోగించగలదు. దీని వలన బ్యాటరీ వినియోగం పెరగవచ్చు."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"యాప్ ఉపయోగంలో ఉన్నప్పుడు మాత్రమే ఈ యాప్ మీ ఖచ్చితమైన లొకేషన్ను లొకేషన్ సర్వీస్ల ద్వారా తెలుసుకోగలదు. లొకేషన్ను యాప్ పొందాలంటే, దాని కోసం మీ పరికరం యొక్క లొకేషన్ సర్వీస్లను తప్పనిసరిగా ఆన్ చేయాలి. ఇది బ్యాటరీ వినియోగాన్ని పెంచవచ్చు."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"స్క్రీన్పై ఉన్నప్పుడు మాత్రమే సుమారు లొకేషన్ను యాక్సెస్ చేయండి"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ఈ యాప్ స్క్రీన్పై ఉన్నప్పుడు మాత్రమే మీ సుమారు లొకేషన్ను తెలుసుకోగలదు. మీ పరికరంలో లొకేషన్ సర్వీస్లు అందుబాటులో ఉండి, అవి తప్పనిసరిగా ఆన్ చేసి ఉంటేనే, యాప్ వాటిని ఉపయోగించగలదు."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"యాప్ ఉపయోగంలో ఉన్నప్పుడు మాత్రమే ఈ యాప్ మీ ఇంచుమించు లొకేషన్ను లొకేషన్ సర్వీస్ల నుండి తెలుసుకోగలదు. లొకేషన్ను యాప్ పొందాలంటే, దాని కోసం మీ పరికరం యొక్క లొకేషన్ సర్వీస్లను తప్పనిసరిగా ఆన్ చేయాలి."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"నేపథ్యంలో స్థానాన్ని యాక్సెస్ చేయి"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"స్క్రీన్పై ఉన్నప్పుడు లొకేషన్ను యాక్సెస్ చేయడంతో పాటు ఈ యాప్ బ్యాక్గ్రౌండ్లో నడుస్తున్నప్పుడు కూడా లొకేషన్ను యాక్సెస్ చేయగలదు."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"యాప్ ఉపయోగంలో లేనప్పటికీ కూడా, ఈ యాప్, లొకేషన్ను ఎప్పుడైనా యాక్సెస్ చేయగలదు."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"మీ ఆడియో సెట్టింగ్లను మార్చడం"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"వాల్యూమ్ మరియు అవుట్పుట్ కోసం ఉపయోగించాల్సిన స్పీకర్ వంటి సార్వజనీన ఆడియో సెట్టింగ్లను సవరించడానికి యాప్ను అనుమతిస్తుంది."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ఆడియోను రికార్డ్ చేయడం"</string> @@ -447,8 +443,7 @@ <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> <skip /> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"కెమెరా పరికరాలు తెరుచుకుంటున్నప్పుడు లేదా మూసుకుంటున్నప్పుడు కాల్బ్యాక్లను స్వీకరించడానికి యాప్ను లేదా సర్వీస్ను అనుమతించండి."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"ఏదైనా కెమెరా పరికరం తెరుచుకుంటున్నప్పుడు (ఏదైనా యాప్ ద్వారా) లేదా మూసుకుంటున్నప్పుడు ఈ సిగ్నేచర్ యాప్ కాల్బ్యాక్లను అందుకోగలదు."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"వైబ్రేషన్ను నియంత్రించడం"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"వైబ్రేటర్ను నియంత్రించడానికి యాప్ను అనుమతిస్తుంది."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"వైబ్రేటర్ స్థితిని యాక్సెస్ చేసేందుకు యాప్ను అనుమతిస్తుంది."</string> @@ -770,7 +765,7 @@ <string name="phoneTypeTtyTdd" msgid="532038552105328779">"TTY TDD"</string> <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"కార్యాలయ మొబైల్"</string> <string name="phoneTypeWorkPager" msgid="3748332310638505234">"కార్యాలయ పేజర్"</string> - <string name="phoneTypeAssistant" msgid="757550783842231039">"అసిస్టెంట్"</string> + <string name="phoneTypeAssistant" msgid="757550783842231039">"Assistant"</string> <string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string> <string name="eventTypeCustom" msgid="3257367158986466481">"అనుకూలం"</string> <string name="eventTypeBirthday" msgid="7770026752793912283">"పుట్టినరోజు"</string> @@ -803,7 +798,7 @@ <string name="orgTypeOther" msgid="5450675258408005553">"ఇతరం"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"అనుకూలం"</string> <string name="relationTypeCustom" msgid="282938315217441351">"అనుకూలం"</string> - <string name="relationTypeAssistant" msgid="4057605157116589315">"అసిస్టెంట్"</string> + <string name="relationTypeAssistant" msgid="4057605157116589315">"Assistant"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"సోదరుడు"</string> <string name="relationTypeChild" msgid="9076258911292693601">"బిడ్డ"</string> <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"జీవిత భాగస్వామి"</string> @@ -1350,13 +1345,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"ప్రస్తుత కంటెంట్ సమీక్షించబడుతోంది"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"కొత్త <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"సెటప్ చేయడానికి నొక్కండి"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"ఫోటోలు మరియు మీడియాను బదిలీ చేయడానికి"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g>తో సమస్య ఉంది"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"పరిష్కరించడానికి నొక్కండి"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> పాడైంది. సరిచేయడానికి ఎంచుకోండి."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g>కి మద్దతు లేదు"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"ఈ పరికరం ఈ <xliff:g id="NAME">%s</xliff:g>కి మద్దతు ఇవ్వదు. మద్దతు కలిగిన ఆకృతిలో సెటప్ చేయడానికి నొక్కండి."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"ఈ పరికరం ఈ <xliff:g id="NAME">%s</xliff:g>కి మద్దతు ఇవ్వదు. మద్దతు కలిగిన ఆకృతిలో సెటప్ చేయడానికి ఎంచుకోండి."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> ఊహించని విధంగా తీసివేయబడింది"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"కంటెంట్ని కోల్పోవడాన్ని నివారించాలంటే తీసివేయబోయే ముందు మీడియాని తొలగించండి"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> తీసివేయబడింది"</string> @@ -2073,35 +2072,20 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"కార్యాలయం"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"వ్యక్తిగత వీక్షణ"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"పని వీక్షణ"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"వర్క్ యాప్లతో దీనిని షేర్ చేయడం సాధ్యపడదు"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"మీ కార్యాలయ ప్రొఫైల్లోని యాప్లతో ఈ కంటెంట్ను మీరు షేర్ చేయడానికి మీ IT అడ్మిన్ అనుమతించరు"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"వర్క్ యాప్లతో తెరవడం సాధ్యపడదు"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"మీ కార్యాలయ ప్రొఫైల్లోని యాప్లతో ఈ కంటెంట్ను మీరు తెరవడానికి మీ IT అడ్మిన్ అనుమతించరు"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"వ్యక్తిగత యాప్లతో దీనిని షేర్ చేయడం సాధ్యపడదు"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"మీ వ్యక్తిగత ప్రొఫైల్లోని యాప్లతో ఈ కంటెంట్ను మీరు షేర్ చేయడానికి మీ IT అడ్మిన్ అనుమతించరు"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"దీనిని, వ్యక్తిగత యాప్లతో తెరవడం సాధ్యపడదు"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"మీ వ్యక్తిగత ప్రొఫైల్లోని యాప్లతో ఈ కంటెంట్ను మీరు తెరవడానికి మీ IT అడ్మిన్ అనుమతించరు"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"కార్యాలయ ప్రొఫైల్ పాజ్ చేయబడింది"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"ఆన్ చేయి"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"టెలిఫోనీ కాల్స్లో రికార్డ్ చేయండి లేదా ఆడియో ప్లే చేయండి"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"డిఫాల్ట్ డయలర్ యాప్గా కేటాయించినప్పుడు, టెలిఫోనీ కాల్స్లో రికార్డ్ చేయడానికి లేదా ఆడియో ప్లే చేయడానికి ఈ యాప్ను అనుమతిస్తుంది."</string> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"కార్యాలయ యాప్లు ఏవీ ఈ కంటెంట్ను సపోర్ట్ చేయలేవు"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"కార్యాలయ యాప్లు ఏవీ ఈ కంటెంట్ను తెరవలేవు"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"వ్యక్తిగత యాప్లు ఏవీ ఈ కంటెంట్ను సపోర్ట్ చేయలేవు"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"వ్యక్తిగత యాప్లు ఏవీ ఈ కంటెంట్ను తెరవలేవు"</string> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> <skip /> <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index abdf0418bb6e..d22f3e207aae 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"ผู้ดูแลระบบปล่อยอุปกรณ์ให้คุณใช้งานส่วนตัว"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"อุปกรณ์มีการจัดการ"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"องค์กรของคุณจัดการอุปกรณ์นี้และอาจตรวจสอบการจราจรของข้อมูลในเครือข่าย แตะเพื่อดูรายละเอียด"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"ผู้ดูแลระบบเปลี่ยนการตั้งค่าตำแหน่ง"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"แตะเพื่อดูการตั้งค่าตำแหน่ง"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"แอปจะเข้าถึงตำแหน่งของคุณได้"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"โปรดสอบถามข้อมูลเพิ่มเติมจากผู้ดูแลระบบไอที"</string> <string name="country_detector" msgid="7023275114706088854">"เครื่องมือหาตำแหน่งประเทศ"</string> <string name="location_service" msgid="2439187616018455546">"บริการตำแหน่ง"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"บริการแจ้งเตือนเกี่ยวกับเซ็นเซอร์"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"ระบบจะลบข้อมูลในอุปกรณ์ของคุณ"</string> <string name="factory_reset_message" msgid="2657049595153992213">"ใช้แอปผู้ดูแลระบบนี้ไม่ได้ ขณะนี้ระบบจะลบข้อมูลในอุปกรณ์ของคุณ\n\nโปรดติดต่อผู้ดูแลระบบขององค์กรหากมีคำถาม"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ปิดใช้การพิมพ์แล้ว"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"เลิกบล็อกแอปส่วนตัว"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"ระบบจะบล็อกแอปพรุ่งนี้"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"ผู้ดูแลระบบไอทีไม่อนุญาตให้หยุดโปรไฟล์งานชั่วคราวเกิน <xliff:g id="DAYS">%1$d</xliff:g> วัน"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"เปิดโปรไฟล์งาน"</string> <string name="me" msgid="6207584824693813140">"ฉัน"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ตัวเลือกของแท็บเล็ต"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"ตัวเลือกของ Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"ตัวเลือกโทรศัพท์"</string> <string name="global_action_lock" msgid="6949357274257655383">"ล็อกหน้าจอ"</string> <string name="global_action_power_off" msgid="4404936470711393203">"ปิดเครื่อง"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"เปิด/ปิด"</string> + <string name="global_action_restart" msgid="4678451019561687074">"รีสตาร์ท"</string> <string name="global_action_emergency" msgid="1387617624177105088">"เหตุฉุกเฉิน"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"รายงานข้อบกพร่อง"</string> <string name="global_action_logout" msgid="6093581310002476511">"จบเซสชัน"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"เข้าถึงคำสั่งของโปรแกรมแจ้งตำแหน่งพิเศษ"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"อนุญาตให้แอปเข้าถึงคำสั่งของผู้ให้บริการตำแหน่งเพิ่มเติม ซึ่งอาจทำให้แอปสามารถแทรกแซงการทำงานของ GPS หรือต้นทางของตำแหน่งอื่นๆ ได้"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"เข้าถึงตำแหน่งที่แม่นยำเมื่ออยู่เบื้องหน้าเท่านั้น"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"แอปนี้เข้าถึงตำแหน่งที่แม่นยำของคุณได้เมื่อทำงานอยู่เบื้องหน้าเท่านั้น แอปจะใช้บริการตำแหน่งได้ต่อเมื่อคุณเปิดบริการและบริการพร้อมใช้งานในอุปกรณ์ของคุณ ซึ่งอาจทำให้มีการใช้แบตเตอรี่มากขึ้น"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"แอปนี้เข้าถึงตำแหน่งที่แม่นยำของคุณได้จากบริการตำแหน่งขณะที่มีการใช้งาน โดยแอปจะเข้าถึงตำแหน่งได้ก็ต่อเมื่อคุณเปิดบริการตำแหน่งของอุปกรณ์ไว้ อาจมีการใช้งานแบตเตอรี่เพิ่มมากขึ้น"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"เข้าถึงตำแหน่งโดยประมาณเมื่ออยู่เบื้องหน้าเท่านั้น"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"แอปนี้เข้าถึงตำแหน่งโดยประมาณของคุณได้เมื่อทำงานอยู่เบื้องหน้าเท่านั้น แอปจะใช้บริการตำแหน่งได้ต่อเมื่อคุณเปิดบริการและบริการพร้อมใช้งานในอุปกรณ์ของคุณ"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"แอปนี้เข้าถึงตำแหน่งโดยประมาณของคุณได้จากบริการตำแหน่งขณะที่มีการใช้งาน โดยแอปจะเข้าถึงตำแหน่งได้ก็ต่อเมื่อคุณเปิดบริการตำแหน่งของอุปกรณ์ไว้"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"เข้าถึงตำแหน่งในเบื้องหลัง"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"แอปนี้เข้าถึงตำแหน่งในขณะที่ทำงานอยู่เบื้องหลังได้ด้วย นอกเหนือจากการเข้าถึงตำแหน่งเมื่อทำงานอยู่เบื้องหน้า"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"แอปนี้เข้าถึงตำแหน่งได้ทุกเมื่อแม้จะไม่ได้ใช้แอปอยู่"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"เปลี่ยนการตั้งค่าเสียงของคุณ"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"อนุญาตให้แอปพลิเคชันปรับเปลี่ยนการตั้งค่าเสียงทั้งหมดได้ เช่น ระดับเสียงและลำโพงที่จะใช้งาน"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"บันทึกเสียง"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"ถ่ายภาพและวิดีโอ"</string> <string name="permdesc_camera" msgid="1354600178048761499">"แอปนี้สามารถถ่ายภาพและวิดีโอด้วยกล้องได้ทุกเมื่อ"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"อนุญาตให้แอปพลิเคชันหรือบริการเข้าถึงกล้องของระบบเพื่อถ่ายภาพและวิดีโอ"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"แอปของระบบหรือที่ได้รับสิทธิ์นี้จะถ่ายภาพและบันทึกวิดีโอโดยใช้กล้องของระบบได้ทุกเมื่อ แอปต้องมีสิทธิ์ android.permission.CAMERA ด้วย"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"อนุญาตให้แอปพลิเคชันหรือบริการได้รับโค้ดเรียกกลับเมื่อมีการเปิดหรือปิดอุปกรณ์กล้อง"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"แอปนี้จะได้รับโค้ดเรียกกลับเมื่อมีการปิดหรือเปิดอุปกรณ์กล้อง (โดยแอปพลิเคชันที่เปิด)"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"ควบคุมการสั่นเตือน"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"อนุญาตให้แอปพลิเคชันควบคุมการสั่นเตือน"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"อนุญาตให้แอปเข้าถึงสถานะการสั่น"</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"กำลังตรวจสอบเนื้อหาปัจจุบัน"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> ใหม่"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"แตะเพื่อตั้งค่า"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"สำหรับการโอนรูปภาพและสื่อ"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"ปัญหาเกี่ยวกับ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"แตะเพื่อแก้ไข"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> เสียหาย เลือกเพื่อแก้ไข"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"ไม่สนับสนุน <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"อุปกรณ์นี้ไม่สนับสนุน <xliff:g id="NAME">%s</xliff:g> นี้ แตะเพื่อตั้งค่าในรูปแบบที่สนับสนุน"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"อุปกรณ์นี้ไม่รองรับ <xliff:g id="NAME">%s</xliff:g> นี้ เลือกเพื่อตั้งค่าในรูปแบบที่รองรับ"</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> ถูกนำออกไปโดยไม่คาดคิด"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"ยกเลิกการต่อเชื่อมสื่อก่อนที่จะนำออกเพื่อหลีกเลี่ยงไม่ให้เนื้อหาสูญหาย"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"นำ <xliff:g id="NAME">%s</xliff:g> ออกแล้ว"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"นี่เป็นการเพิ่มระดับเสียงเกินระดับที่แนะนำ\n\nการฟังเสียงดังเป็นเวลานานอาจทำให้การได้ยินของคุณบกพร่องได้"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ใช้ทางลัดการช่วยเหลือพิเศษไหม"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"เมื่อทางลัดเปิดอยู่ การกดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มนาน 3 วินาทีจะเริ่มฟีเจอร์การช่วยเหลือพิเศษ"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"ต้องการเปิดฟีเจอร์การช่วยเหลือพิเศษใช่ไหม"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"การกดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มค้างไว้ 2-3 วินาทีจะเปิดฟีเจอร์การช่วยเหลือพิเศษ การดำเนินการนี้อาจเปลี่ยนแปลงลักษณะการทำงานของอุปกรณ์\n\nฟีเจอร์ปัจจุบัน:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nคุณจะเปลี่ยนฟีเจอร์ที่เลือกไว้ได้ในการตั้งค่า > การช่วยเหลือพิเศษ"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"ต้องการเปิด TalkBack ใช่ไหม"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"การกดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มค้างไว้ 2-3 วินาทีจะเปิด TalkBack ซึ่งเป็นโปรแกรมอ่านหน้าจอที่มีประโยชน์สำหรับผู้ที่ตาบอดหรือมีสายตาเลือนราง TalkBack จะเปลี่ยนแปลงลักษณะการทำงานของอุปกรณ์ไปโดยสิ้นเชิง\n\nคุณแก้ไขทางลัดนี้ให้เปิดฟีเจอร์อื่นได้ในการตั้งค่า > การช่วยเหลือพิเศษ"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"ต้องการเปิด <xliff:g id="SERVICE">%1$s</xliff:g> ใช่ไหม"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"การกดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มค้างไว้ 2-3 วินาทีจะเปิด <xliff:g id="SERVICE">%1$s</xliff:g> ซึ่งเป็นฟีเจอร์การช่วยเหลือพิเศษ การดำเนินการนี้อาจเปลี่ยนแปลงลักษณะการทำงานของอุปกรณ์\n\nคุณแก้ไขทางลัดนี้ให้เปิดฟีเจอร์อื่นได้ในการตั้งค่า > การช่วยเหลือพิเศษ"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"เปิด"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ไม่ต้องเปิด"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"อนุญาตให้ <xliff:g id="SERVICE">%1$s</xliff:g> ควบคุมอุปกรณ์อย่างเต็มที่ไหม"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"หากคุณเปิด <xliff:g id="SERVICE">%1$s</xliff:g> อุปกรณ์ของคุณจะไม่ใช้ล็อกหน้าจอเพื่อปรับปรุงการเข้ารหัสข้อมูล"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"การควบคุมอย่างเต็มที่เหมาะสำหรับแอปที่ช่วยคุณในเรื่องความต้องการความช่วยเหลือพิเศษแต่ไม่เหมาะสำหรับแอปส่วนใหญ่"</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"อนุญาต"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ปฏิเสธ"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"แตะฟีเจอร์เพื่อเริ่มใช้"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"เลือกฟีเจอร์ที่จะใช้กับปุ่มการช่วยเหลือพิเศษ"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"เลือกฟีเจอร์ที่จะใช้กับทางลัดปุ่มปรับระดับเสียง"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"ปิด <xliff:g id="SERVICE_NAME">%s</xliff:g> แล้ว"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"แก้ไขทางลัด"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"เสร็จ"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ใช้ทางลัด"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"การกลับสี"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"การปรับแก้สี"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"กดปุ่มปรับระดับเสียงค้างไว้แล้ว เปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"กดปุ่มปรับระดับเสียงค้างไว้แล้ว ปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"กดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มค้างไว้ 3 วินาทีเพื่อใช้ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"เลือกฟีเจอร์ที่จะใช้เมื่อคุณแตะปุ่มการช่วยเหลือพิเศษดังต่อไปนี้"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"เลือกฟีเจอร์ที่จะใช้กับท่าทางสัมผัสการช่วยเหลือพิเศษ (ใช้ 2 นิ้วเลื่อนขึ้นจากด้านล่างของหน้าจอ) ดังต่อไปนี้"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"เลือกฟีเจอร์ที่จะใช้กับท่าทางสัมผัสการช่วยเหลือพิเศษ (ใช้ 3 นิ้วเลื่อนขึ้นจากด้านล่างของหน้าจอ) ดังต่อไปนี้"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"หากต้องการสลับระหว่างฟีเจอร์ต่างๆ ให้แตะปุ่มการช่วยเหลือพิเศษค้างไว้"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"หากต้องการสลับระหว่างฟีเจอร์ต่างๆ ให้ใช้ 2 นิ้วเลื่อนขึ้นแล้วค้างไว้"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"หากต้องการสลับระหว่างฟีเจอร์ต่างๆ ให้ใช้ 3 นิ้วเลื่อนขึ้นแล้วค้างไว้"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"การขยาย"</string> <string name="user_switched" msgid="7249833311585228097">"ผู้ใช้ปัจจุบัน <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"กำลังเปลี่ยนเป็น <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> และอีก <xliff:g id="COUNT_3">%d</xliff:g> ไฟล์</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> และอีก <xliff:g id="COUNT_1">%d</xliff:g> ไฟล์</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"ไม่มีบุคคลที่แนะนำให้แชร์ด้วย"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"รายชื่อแอป"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"แอปนี้ไม่ได้รับอนุญาตให้บันทึกเสียงแต่จะบันทึกเสียงผ่านอุปกรณ์ USB นี้ได้"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"หน้าแรก"</string> @@ -2087,222 +2063,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"ไม่มีแอปงานที่เปิดเนื้อหานี้ได้"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"ไม่มีแอปส่วนตัวที่รองรับเนื้อหานี้"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"ไม่มีแอปส่วนตัวที่เปิดเนื้อหานี้ได้"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"บันทึกหรือเปิดเสียงในสายโทรศัพท์"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"อนุญาตให้แอปนี้ (เมื่อกำหนดให้เป็นแอปโทรออกเริ่มต้น) บันทึกหรือเปิดเสียงในสายโทรศัพท์ได้"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN ปลดล็อกเครือข่ายที่ใช้กับ SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN ปลดล็อกเครือข่ายย่อยที่ใช้กับ SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN ปลดล็อกองค์กรที่ใช้กับ SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN ปลดล็อกผู้ให้บริการที่ใช้กับ SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN ปลดล็อก SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"ป้อน PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"ป้อน PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"ป้อน PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"ป้อน PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"ป้อน PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN ปลดล็อกเครือข่ายประเภท 1 ที่ใช้กับ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN ปลดล็อกเครือข่ายประเภท 2 ที่ใช้กับ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN ปลดล็อก HRPD ที่ใช้กับ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN ปลดล็อกองค์กรที่ใช้กับ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN ปลดล็อกผู้ให้บริการที่ใช้กับ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN ปลดล็อก RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"ป้อน PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"ป้อน PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"ป้อน PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"ป้อน PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"ป้อน PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"ป้อน PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN ปลดล็อก SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN ปลดล็อกตาม SP และ Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN ปลดล็อก ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN ปลดล็อก IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN ปลดล็อกผู้ให้บริการในเครือข่ายย่อย"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"กำลังขอปลดล็อกเครือข่ายที่ใช้กับ SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"กำลังขอปลดล็อกเครือข่ายย่อยที่ใช้กับ SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"กำลังขอปลดล็อกผู้ให้บริการที่ใช้กับ SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"กำลังขอปลดล็อกองค์กรที่ใช้กับ SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"กำลังขอปลดล็อก PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"กำลังขอปลดล็อก PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"กำลังขอปลดล็อก PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"กำลังขอปลดล็อก PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"กำลังขอปลดล็อก PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"กำลังขอปลดล็อก SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"กำลังขอปลดล็อกเครือข่ายประเภท 1 ที่ใช้กับ RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"กำลังขอปลดล็อกเครือข่ายประเภท 2 ที่ใช้กับ RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"กำลังขอปลดล็อก HRPD ที่ใช้กับ RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"กำลังขอปลดล็อกผู้ให้บริการที่ใช้กับ RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"กำลังขอปลดล็อกองค์กรที่ใช้กับ RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"กำลังขอปลดล็อก SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"กำลังขอปลดล็อกตาม SP และ Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"กำลังขอปลดล็อก ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"กำลังขอปลดล็อก IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"กำลังขอปลดล็อกผู้ให้บริการในเครือข่ายย่อย…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"กำลังขอปลดล็อก RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"กำลังขอปลดล็อก PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"กำลังขอปลดล็อก PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"กำลังขอปลดล็อก PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"กำลังขอปลดล็อก PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"กำลังขอปลดล็อก PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"กำลังขอปลดล็อก PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"ขอปลดล็อกเครือข่ายที่ใช้กับ SIM ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"ขอปลดล็อกเครือข่ายย่อยที่ใช้กับ SIM ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"ขอปลดล็อกผู้ให้บริการที่ใช้กับ SIM ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"ขอปลดล็อกองค์กรที่ใช้กับ SIM ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"ขอปลดล็อก SIM ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"ขอปลดล็อกเครือข่ายประเภท 1 ที่ใช้กับ RUIM ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"ขอปลดล็อกเครือข่ายประเภท 2 ที่ใช้กับ RUIM ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"ขอปลดล็อก HRPD ที่ใช้กับ RUIM ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"ขอปลดล็อกองค์กรที่ใช้กับ RUIM ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"ขอปลดล็อกผู้ให้บริการที่ใช้กับ RUIM ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"ขอปลดล็อก RUIM ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"ปลดล็อก PUK ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"ปลดล็อก PUK ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"ปลดล็อก PUK ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"ปลดล็อก PUK ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"ปลดล็อก PUK ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"ปลดล็อก PUK ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"ปลดล็อก PUK ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"ปลดล็อก PUK ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"ปลดล็อก PUK ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"ปลดล็อก PUK ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"ปลดล็อก PUK ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"ขอปลดล็อก SPN ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"ขอปลดล็อกตาม SP และ Equivalent Home PLMN ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ขอปลดล็อก ICCID ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"ขอปลดล็อก IMPI ไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"ขอปลดล็อกผู้ให้บริการในเครือข่ายย่อยไม่สำเร็จ"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"ปลดล็อกเครือข่ายที่ใช้กับ SIM สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"ปลดล็อกเครือข่ายย่อยที่ใช้กับ SIM สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"ปลดล็อกผู้ให้บริการที่ใช้กับ SIM สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"ปลดล็อกองค์กรที่ใช้กับ SIM สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"ปลดล็อก SIM สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"ปลดล็อกเครือข่ายประเภท 1 ที่ใช้กับ RUIM สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"ปลดล็อกเครือข่ายประเภท 2 ที่ใช้กับ RUIM สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"ปลดล็อก HRPD ที่ใช้กับ RUIM สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"ปลดล็อกผู้ให้บริการที่ใช้กับ RUIM สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"ปลดล็อกองค์กรที่ใช้กับ RUIM สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"ปลดล็อก RUIM สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"ปลดล็อก PUK สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"ปลดล็อก PUK สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"ปลดล็อก PUK สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"ปลดล็อก PUK สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"ปลดล็อก PUK สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"ปลดล็อก PUK สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"ปลดล็อก PUK สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"ปลดล็อก PUK สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"ปลดล็อก PUK สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"ปลดล็อก PUK สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"ปลดล็อก PUK สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"ปลดล็อก SPN สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"ปลดล็อกตาม SP และ Equivalent Home PLMN สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ปลดล็อก ICCID สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"ปลดล็อก IMPI สำเร็จแล้ว"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"ปลดล็อกผู้ให้บริการในเครือข่ายย่อยสำเร็จแล้ว"</string> </resources> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index dd76d5b0c69a..07e204e3a50f 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Inalis ng admin ang device para sa personal na paggamit"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Pinamamahalaan ang device"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Pinamamahalaan ng iyong organisasyon ang device na ito, at maaari nitong subaybayan ang trapiko sa network. I-tap para sa mga detalye."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Binago ang mga setting ng lokasyon ng iyong admin"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"I-tap para makita ang iyong mga setting ng lokasyon."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Maa-access ng mga app ang iyong lokasyon"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Makipag-ugnayan sa iyong IT admin para matuto pa"</string> <string name="country_detector" msgid="7023275114706088854">"Detector ng Bansa"</string> <string name="location_service" msgid="2439187616018455546">"Serbisyo ng Lokasyon"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Serbisyo ng Notification ng Sensor"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Buburahin ang iyong device"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Hindi magamit ang admin app. Mabubura na ang iyong device.\n\nKung mayroon kang mga tanong, makipag-ugnayan sa admin ng iyong organisasyon."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Na-disable ng <xliff:g id="OWNER_APP">%s</xliff:g> ang pag-print."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"I-unblock ang iyong mga personal na app"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Iba-block ang mga app bukas"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Hindi pinapayagan ng IT admin mo na ma-pause ang iyong profile sa trabaho sa loob ng mahigit <xliff:g id="DAYS">%1$d</xliff:g> (na) araw"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"I-on ang profile sa trabaho"</string> <string name="me" msgid="6207584824693813140">"Ako"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Mga pagpipilian sa tablet"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Mga opsyon sa Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Pagpipilian sa telepono"</string> <string name="global_action_lock" msgid="6949357274257655383">"Pag-lock sa screen"</string> <string name="global_action_power_off" msgid="4404936470711393203">"I-off"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Power"</string> + <string name="global_action_restart" msgid="4678451019561687074">"I-restart"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergency"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Ulat sa bug"</string> <string name="global_action_logout" msgid="6093581310002476511">"Tapusin ang session"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"i-access ang mga dagdag na command ng provider ng lokasyon"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Nagbibigay-daan sa app na mag-access ng mga karagdagang command ng provider ng lokasyon. Maaari nitong bigyang-daan ang app na gambalain ang pagpapatakbo ng GPS o ng iba pang mga pinagmulan ng lokasyon."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"i-access lang ang tumpak na lokasyon sa foreground"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Makukuha lang ng app na ito ang iyong eksaktong lokasyon kapag nasa foreground ito. Naka-on at available dapat ang mga serbisyo ng lokasyon sa iyong device para magamit ng app ang mga ito. Posibleng lumakas ang pagkonsumo ng baterya dahil dito."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Makukuha ng app na ito ang iyong eksaktong lokasyon mula sa mga serbisyo ng lokasyon habang ginagamit ang app. Naka-on dapat ang mga serbisyo ng lokasyon para sa iyong device para makuha ng app ang lokasyon. Posibleng madagdagan ang paggamit ng baterya dahil dito."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"i-access lang ang tinatantyang lokasyon sa foreground"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Makukuha lang ng app na ito ang iyong tinatantyang lokasyon kapag nasa foreground ito. Naka-on at available dapat ang mga serbisyo ng lokasyon sa iyong device para magamit ng app ang mga ito."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Makukuha ng app na ito ang iyong tinantyang lokasyon mula sa mga serbisyo ng lokasyon habang ginagamit ang app. Naka-on dapat ang mga serbisyo ng lokasyon para sa iyong device para makuha ng app ang lokasyon."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"i-access ang lokasyon sa background"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Puwedeng i-access ng app na ito ang lokasyon habang tumatakbo sa background, bilang karagdagan sa access sa lokasyon sa foreground."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Maa-access ng app na ito ang lokasyon anumang oras, kahit habang hindi ginagamit ang app."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"baguhin ang mga setting ng iyong audio"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Pinapayagan ang app na baguhin ang mga pandaigdigang setting ng audio gaya ng volume at kung aling speaker ang ginagamit para sa output."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"mag-record ng audio"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"kumuha ng mga larawan at video"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Makakakuha ng mga larawan at makakapag-record ng mga video ang app na ito gamit ang camera anumang oras."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Bigyan ang isang application o serbisyo ng access sa mga camera ng system para kumuha ng mga larawan at video"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ang may pribilehiyong app o system app na ito ay makakakuha ng mga larawan at makakapag-record ng mga video gamit ang isang camera ng system anumang oras. Kinakailangang may android.permission.CAMERA na pahintulot din ang app"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Payagan ang isang application o serbisyo na makatanggap ng mga callback tungkol sa pagbubukas o pagsasara ng mga camera device."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Puwedeng makatanggap ang app na ito ng mga callback kapag binubuksan (kung anong application) o isinasara ang anumang camera device."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kontrolin ang pag-vibrate"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Pinapayagan ang app na kontrolin ang vibrator."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Pinapayagan ang app na ma-access ang naka-vibrate na status."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Sinusuri ang kasalukuyang content"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Bagong <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Mag-tap para i-set up"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Para sa paglilipat ng mga larawan at media"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Isyu sa <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Mag-tap para ayusin"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Sira ang <xliff:g id="NAME">%s</xliff:g>. Piliin upang ayusin."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Hindi sinusuportahang <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Hindi sinusuportahan ng device na ito ang <xliff:g id="NAME">%s</xliff:g> na ito. I-tap upang i-set up sa isang sinusuportahang format."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Hindi sinusuportahan ng device na ito ang <xliff:g id="NAME">%s</xliff:g> na ito. Piliin upang i-set up sa isang sinusuportahang format."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Hindi sinusuportahan ng device na ito ang <xliff:g id="NAME">%s</xliff:g> na ito."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Hindi inaasahang naalis ang <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"I-eject ang media bago tanggalin para maiwasan ang pagkawala ng content"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Inalis ang <xliff:g id="NAME">%s</xliff:g>"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Lakasan ang volume nang lagpas sa inirerekomendang antas?\n\nMaaaring mapinsala ng pakikinig sa malakas na volume sa loob ng mahahabang panahon ang iyong pandinig."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gagamitin ang Shortcut sa Pagiging Accessible?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kapag naka-on ang shortcut, magsisimula ang isang feature ng pagiging naa-access kapag pinindot ang parehong button ng volume."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"I-on ang mga feature ng pagiging accessible?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Mao-on ang mga feature ng pagiging accessible kapag pinindot nang matagal ang parehong volume key nang ilang segundo. Posibleng mabago nito ang paggana ng iyong device.\n\nMga kasalukuyang feature:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nPuwede mong baguhin ang mga napiling feature sa Mga Setting > Pagiging Accessible."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"I-on ang TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Kapag pinindot nang matagal ang parehong volume key nang ilang segundo, mao-on ang TalkBack na isang screen reader na nakakatulong sa mga taong bulag o malabo ang paningin. Ganap na binabago ng TalkBack kung paano gumagana ang iyong device.\n\nMapapalitan mo ng ibang feature ang shortcut na ito sa Mga Setting > Pagiging Accessible."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"I-on ang <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Mao-on ang feature ng pagiging accessible na <xliff:g id="SERVICE">%1$s</xliff:g> kapag pinindot nang matagal ang parehong volume key nang ilang segundo. Posibleng mabago nito ang paggana ng iyong device.\n\nPuwede mong palitan ng ibang feature ang shortcut na ito sa Mga Setting > Pagiging Accessible."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"I-on"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Huwag i-on"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Bigyan ang <xliff:g id="SERVICE">%1$s</xliff:g> ng ganap na kontrol sa iyong device?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Kung io-on mo ang <xliff:g id="SERVICE">%1$s</xliff:g>, hindi gagamitin ng iyong device ang lock ng screen mo para pahusayin ang pag-encrypt ng data."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Naaangkop ang ganap na kontrol sa mga app na tumutulong sa mga pangangailangan mo sa accessibility, pero hindi sa karamihan ng mga app."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Payagan"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tanggihan"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"I-tap ang isang feature para simulan itong gamitin:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Pumili ng mga feature na gagana sa pamamagitan ng button ng accessibility"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Pumili ng mga feature na gagana sa pamamagitan ng shortcut ng volume key"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Na-off ang <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"I-edit ang mga shortcut"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Tapos na"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gamitin ang Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Pag-invert ng Kulay"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Pagwawasto ng Kulay"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Mga volume key na pinipindot nang matagal. Na-on ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Mga volume key na pinipindot nang matagal. Na-off ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Pindutin nang matagal ang parehong volume key sa loob ng tatlong segundo para magamit ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Pumili ng feature na gagana sa pamamagitan ng pag-tap mo sa button ng accessibility:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Pumili ng feature na gagana sa pamamagitan ng galaw ng pagiging accessible (pag-swipe pataas mula sa ibaba ng screen gamit ang dalawang daliri):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Pumili ng feature na gagana sa pamamagitan ng galaw ng pagiging accessible (pag-swipe pataas mula sa ibaba ng screen gamit ang tatlong daliri):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Para magpalipat-lipat sa mga feature, pindutin nang matagal ang button ng accessibility."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Para magpalipat-lipat sa mga feature, mag-swipe pataas gamit ang dalawang daliri at i-hold ito."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Para magpalipat-lipat sa mga feature, mag-swipe pataas gamit ang tatlong daliri at i-hold ito."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Pag-magnify"</string> <string name="user_switched" msgid="7249833311585228097">"Kasalukuyang user <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Lumilipat kay <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> file</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> na file</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Walang inirerekomendang taong mapagbabahagian"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Listahan ng mga app"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Hindi nabigyan ng pahintulot ang app na ito para mag-record pero nakakapag-capture ito ng audio sa pamamagitan ng USB device na ito."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Home"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Hindi mabubuksan ng mga app para sa trabaho ang content na ito"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Hindi masusuportahan ng mga personal na app ang content na ito"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Hindi mabubuksan ng mga personal na app ang content na ito"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Mag-record o mag-play ng audio sa mga tawag sa telephony"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Papayagan ang app na ito na mag-record o mag-play ng audio sa mga tawag sa telephony kapag naitalaga bilang default na dialer application."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN para sa pag-unlock ng network ng SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN para sa pag-unlock ng subset ng network ng SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN para sa pangkumpanyang pag-unlock ng SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN para sa pag-unlock ng service provider ng SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN para sa pag-unlock ng SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Ilagay ang PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Ilagay ang PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Ilagay ang PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Ilagay ang PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Ilagay ang PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN para sa pag-unlock ng network1 ng RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN para sa pag-unlock ng network2 ng RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN para sa pag-unlock ng hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN para sa pangkumpanyang pag-unlock ng RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN para sa pag-unlock ng service provider ng RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN para sa pag-unlock ng RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Ilagay ang PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Ilagay ang PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Ilagay ang PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Ilagay ang PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Ilagay ang PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Ilagay ang PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN para sa pag-unlock ng SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN para sa pag-unlock ng SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN para sa pag-unlock ng ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN para sa pag-unlock ng IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN para sa pag-unlock ng service provider ng subset ng Network"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Hinihiling na i-unlock ang network ng SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Hinihiling na i-unlock ang subset ng network ng SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Hinihiling na i-unlock ang service provider ng SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Hinihiling ang pangkumpanyang pag-unlock ng SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Hinihiling na i-unlock ang PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Hinihiling na i-unlock ang PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Hinihiling na i-unlock ang PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Hinihiling na i-unlock ang PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Hinihiling na i-unlock ang PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Hinihiling na i-unlock ang SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Hinihiling na i-unlock ang network1 ng RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Hinihiling na i-unlock ang network2 ng RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Hinihiling na i-unlock ang hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Hinihiling na i-unlock ang service provider ng RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Hinihiling ang pangkumpanyang pag-unlock ng RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Hinihiling na i-unlock ang SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Hinihiling na i-unlock ang SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Hinihiling na i-unlock ang ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Hinihiling na i-unlock ang IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Hinihiling na i-unlock ang service provider ng subset ng Network…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Hinihiling na i-unlock ang RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Hinihiling na i-unlock ang PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Hinihiling na i-unlock ang PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Hinihiling na i-unlock ang PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Hinihiling na i-unlock ang PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Hinihiling na i-unlock ang PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Hinihiling na i-unlock ang PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Hindi matagumpay ang kahilingan sa pag-unlock ng Network ng SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Hindi matagumpay ang kahilingan sa pag-unlock ng Subset ng Network ng SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Hindi matagumpay ang kahilingan sa pag-unlock ng Service Provider ng SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Hindi matagumpay ang kahilingan sa Pangkumpanyang pag-unlock ng SIM."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Hindi matagumpay ang kahilingan sa pag-unlock ng SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Hindi matagumpay ang kahilingan sa pag-unlock ng Network1 ng RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Hindi matagumpay ang kahilingan sa pag-unlock ng Network2 ng RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Hindi matagumpay ang kahilingan sa pag-unlock ng Hrpd."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Hindi matagumpay ang kahilingan sa pangkumpanyang pag-unlock ng RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Hindi matagumpay ang kahilingan sa pag-unlock ng Service Provider ng RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Hindi matagumpay ang kahilingan sa pag-unlock ng RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Hindi na-unlock ang PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Hindi na-unlock ang PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Hindi na-unlock ang PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Hindi na-unlock ang PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Hindi na-unlock ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Hindi na-unlock ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Hindi na-unlock ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Hindi na-unlock ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Hindi na-unlock ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Hindi na-unlock ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Hindi na-unlock ang PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Hindi matagumpay ang kahilingan sa pag-unlock ng SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Hindi matagumpay ang pag-unlock ng SP Equivalent Home PLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Hindi matagumpay ang kahilingan sa pag-unlock ng ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Hindi matagumpay ang kahilingan sa pag-unlock ng IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Hindi matagumpay ang kahilingan sa pag-unlock ng service provider ng subset ng Network."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Na-unlock na ang Network ng SIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Na-unlock na ang Subset ng Network ng SIM."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Na-unlock na ang Service Provider ng SIM."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Matagumpay ang Pangkumpanyang pag-unlock ng SIM."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Na-unlock na ang SIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Na-unlock na ang Network1 ng RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Na-unlock na ang Network2 ng RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Na-unlock na ang Hrpd."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Na-unlock na ang Service Provider ng RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Matagumpay ang Pangkumpanyang pag-unlock ng RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Na-unlock na ang RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Na-unlock na ang PUK."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Na-unlock na ang PUK."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Na-unlock na ang PUK."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Na-unlock na ang PUK."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Na-unlock na ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Na-unlock na ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Na-unlock na ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Na-unlock na ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Na-unlock na ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Na-unlock na ang PUK."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Na-unlock na ang PUK."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Na-unlock na ang SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Na-unlock na ang SP Equivalent Home PLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Na-unlock na ang ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Na-unlock na ang IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Na-unlock na ang service provider ng subset ng Network."</string> </resources> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 9fb136afd9c1..2433cb022025 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Yönetici, cihazı kişisel kullanım için serbest bıraktı"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Cihaz yönetiliyor"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Kuruluşunuz bu cihazı yönetmekte olup ağ trafiğini izleyebilir. Ayrıntılar için dokunun."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Konum ayarları, yöneticiniz tarafından değiştirildi"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Konum ayarlarınızı görmek için dokunun."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Uygulamalar konumunuza erişebilir"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Daha fazla bilgi edinmek için BT yöneticinizle iletişim kurun"</string> <string name="country_detector" msgid="7023275114706088854">"Ülke Algılayıcı"</string> <string name="location_service" msgid="2439187616018455546">"Konum Hizmeti"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensör Bildirim Hizmeti"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Cihazınız silinecek"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Yönetim uygulaması kullanılamıyor. Cihazınız şimdi silinecek.\n\nSorularınız varsa kuruluşunuzun yöneticisine başvurun."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Yazdırma işlemi <xliff:g id="OWNER_APP">%s</xliff:g> tarafından devre dışı bırakıldı."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Kişisel uygulamalarınızın engellemesini kaldırın"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Uygulamalar yarın engellenecek"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"BT yöneticiniz, iş profilinizin <xliff:g id="DAYS">%1$d</xliff:g> günden fazla duraklatılmasına izin vermiyor"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"İş profilini aç"</string> <string name="me" msgid="6207584824693813140">"Ben"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet seçenekleri"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV seçenekleri"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Telefon seçenekleri"</string> <string name="global_action_lock" msgid="6949357274257655383">"Ekran kilidi"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Kapat"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Güç"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Yeniden başlat"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Acil durum"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Hata raporu"</string> <string name="global_action_logout" msgid="6093581310002476511">"Oturumu sonlandır"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ek konum sağlayıcı komutlarına eriş"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Uygulamanın, ekstra konum sağlayıcı komutlarına erişmesine izin verir. Bu izin, uygulamanın GPS veya diğer konum kaynaklarının çalışmasını kesmesine olanak sağlayabilir."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"yalnızca ön planda kesin konuma erişme"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Bu uygulama yalnızca ön plandayken kesin konumunuzu alabilir. Uygulamanın bu hizmetleri kullanabilmesi için telefonunuzda bu konum hizmetleri açık ve kullanılabilir olmalıdır. Bu, pil tüketimini artırabilir."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Bu uygulama, uygulama kullanılırken konum hizmetlerinden kesin konum bilginizi alabilir. Uygulamanın konum bilginizi alabilmesi için cihazınızda konum hizmetlerinin açık olması gerekir. Bu durum, pil kullanımını artırabilir."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"yalnızca ön planda yaklaşık konuma erişme"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Bu uygulama, yalnızca ön planda çalışırken yaklaşık konum bilginizi alabilir. Uygulamanın kullanabilmesi için konum hizmetlerinin açılması ve cihazınızda kullanılabilir olması gerekir."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Bu uygulama, uygulama kullanılırken konum hizmetlerinden yaklaşık konum bilginizi alabilir. Uygulamanın konum bilginizi alabilmesi için cihazınızda konum hizmetlerinin açık olması gerekir."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"konum bilgisine arka planda eriş"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Bu uygulama ön plan konum erişimine ek olarak konum bilgisine arka planda çalışırken erişebilir."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Bu uygulama, uygulama kullanılmıyorken bile konum bilgisine her zaman erişebilir."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ses ayarlarınızı değiştirin"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Uygulamaya ses düzeyi ve ses çıkışı için kullanılan hoparlör gibi genel ses ayarlarını değiştirme izni verir."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ses kaydet"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"resim çekme ve görüntü kaydetme"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Bu uygulama, herhangi bir zamanda kamerayı kullanarak fotoğraf ve video çekebilir."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Bir uygulama veya hizmetin fotoğraf ve video çekmek için sistem kameralarına erişmesine izin verin"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ayrıcalık tanınmış bu veya sistem uygulaması herhangi bir zamanda sistem kamerası kullanarak fotoğraf çekebilir ve video kaydedebilir. Uygulamanın da bu ayrıcalığa sahip olması için android.permission.CAMERA izni gerektirir"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Bir uygulama veya hizmetin açılıp kapatılan kamera cihazları hakkında geri çağırmalar almasına izin verin."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Bu uygulama, herhangi bir kamera cihazı açıldığında (kamerayı açan uygulama tarafından) veya kapatıldığında geri çağırmalar alabilir."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"titreşimi denetleme"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Uygulamaya, titreşimi denetleme izni verir."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Uygulamanın titreşim durumuna erişimesine izni verir."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Geçerli içerik inceleniyor"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Yeni <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Ayarlamak için dokunun"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Fotoğraf ve medya aktarmak için"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> medyasında sorun oluştu"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Düzeltmek için dokunun"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> bozuk. Düzeltmek için seçin."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Desteklenmeyen <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Bu cihaz, bu <xliff:g id="NAME">%s</xliff:g> ortamını desteklemiyor. Desteklenen bir biçimde kurmak için dokunun."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Bu cihaz, bu <xliff:g id="NAME">%s</xliff:g> medyasını desteklemiyor. Desteklenen bir biçimde ayarlamak için seçin."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Bu <xliff:g id="NAME">%s</xliff:g>, bu cihaz tarafından desteklenmiyor."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> beklenmedik şekilde çıkarıldı"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"İçerik kaybı olmaması için medyayı çıkarmadan önce kaldırın"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> kaldırıldı"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ses seviyesi önerilen düzeyin üzerine yükseltilsin mi?\n\nUzun süre yüksek ses seviyesinde dinlemek işitme duyunuza zarar verebilir."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Erişilebilirlik Kısayolu Kullanılsın mı?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kısayol açıkken ses düğmelerinin ikisini birden 3 saniyeliğine basılı tutmanız bir erişilebilirlik özelliğini başlatır."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Erişilebilirlik özellikleri etkinleştirilsin mi?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Ses tuşlarının ikisini birden birkaç saniyeliğine basılı tutmak, erişilebilirlik özelliklerini açar. Bu, cihazınızın çalışma şeklini değiştirebilir.\n\nGeçerli özellikler:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nSeçilen özellikleri Ayarlar > Erişilebilirlik\'te değiştirebilirsiniz."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack etkinleştirilsin mi?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Ses tuşlarının ikisini birden birkaç saniyeliğine basılı tutmak TalkBack özelliğini açar. TalkBack, görme engelliler ve gözleri az gören kullanıcılar için yardımcı olan bir ekran okuyucudur. TalkBack, cihazınızın çalışma şeklini tamamen değiştirir.\n\nBu kısayolu, Ayarlar > Erişilebilirlik\'te başka bir özellikle değiştirebilirsiniz."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> etkinleştirilsin mi?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ses tuşlarının ikisini birden birkaç saniyeliğine basılı tutmak <xliff:g id="SERVICE">%1$s</xliff:g> erişilebilirlik özelliğini etkinleştirir. Bu, cihazınızın çalışma şeklini değiştirebilir.\n\nBu kısayolu, Ayarlar > Erişilebilirlik\'te başka bir özellikle değiştirebilirsiniz."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Etkinleştir"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Etkinleştirme"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> hizmetinin cihazınızı tamamen kontrol etmesine izin veriyor musunuz?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> hizmetini açarsanız cihazınız veri şifrelemeyi geliştirmek için ekran kilidinizi kullanmaz."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Erişebilirlik ihtiyaçlarınıza yardımcı olan uygulamalara tam kontrol verilmesi uygundur ancak diğer pek çok uygulama için uygun değildir."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"İzin ver"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Reddet"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Kullanmaya başlamak için bir özelliğe dokunun:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Erişilebilirlik düğmesiyle kullanılacak özellikleri seçin"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Ses tuşu kısayoluyla kullanılacak özellikleri seçin"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kapatıldı"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Kısayolları düzenle"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Bitti"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Kısayolu Kullan"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Rengi Ters Çevirme"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Renk Düzeltme"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ses tuşlarını basılı tutun. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> açıldı."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ses tuşlarını basılı tutun. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kapatıldı."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> hizmetini kullanmak için her iki ses tuşunu basılı tutun"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Erişilebilirlik düğmesine dokunduğunuzda kullanmak için bir özellik seçin:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Erişilebilirlik hareketiyle (iki parmakla ekranın altından yukarı kaydırma) kullanılacak bir özellik seçin:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Erişilebilirlik hareketiyle (üç parmakla ekranın altından yukarı kaydırma) kullanılacak bir özellik seçin:"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Özellikler arasında geçiş yapmak için erişilebilirlik düğmesine dokunup basılı tutun."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Özellikler arasında geçiş yapmak için iki parmakla yukarı kaydırıp basılı tutun."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Özellikler arasında geçiş yapmak için üç parmakla yukarı kaydırıp basılı tutun."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Büyütme"</string> <string name="user_switched" msgid="7249833311585228097">"Geçerli kullanıcı: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> adlı kullanıcıya geçiliyor…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> dosya</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> dosya</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Paylaşmak için önerilen kullanıcı yok"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Uygulama listesi"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Bu uygulamaya ses kaydetme izni verilmedi ancak bu USB cihazı üzerinden sesleri yakalayabilir."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Ana Ekran"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Hiçbir iş uygulaması bu içeriği açamaz"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Hiçbir kişisel uygulama bu içeriği destekleyemez"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Hiçbir kişisel uygulama bu içeriği açamaz"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Telefon aramalarında sesi kaydet veya çal"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Varsayılan çevirici uygulaması olarak atandığında bu uygulamanın telefon aramalarında sesi kaydetmesine veya çalmasına izin verir."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM ağ kilidi açma PIN kodu"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM ağ alt kümesi kilidini açma PIN kodu"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM kurumsal kilidi açma PIN kodu"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM servis sağlayıcı kilidini açma PIN kodu"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM kilit açma PIN kodu"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK girin"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK girin"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK girin"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK girin"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK girin"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM network1 kilit açma PIN kodu"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM network2 kilidini açma PIN kodu"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM hrpd kilidini açma PIN kodu"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM kurumsal kilidi açma PIN kodu"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM servis sağlayıcı kilidini açma PIN kodu"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM kilit açma PIN kodu"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK girin"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK girin"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK girin"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK girin"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK girin"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK girin"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN kilidini açma PIN kodu"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN kilidini açma PIN kodu"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID kilidini açma PIN kodu"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI kilidini açma PIN kodu"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Ağ alt kümesi servis sağlayıcı kilit açma PIN kodu"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM ağ kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM ağ alt kümesi kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM servis sağlayıcı kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"SIM kurumsal kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM network1 kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM network2 kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM hrpd kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM servis sağlayıcı kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM kurumsal kilidi açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"SP Equivalent Home PLMN kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Ağ alt kümesi servis sağlayıcı kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK kilidini açma isteği yapılıyor…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM Ağ kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM Ağ Alt Kümesi kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM Servis Sağlayıcı kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM Kurumsal kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM Network1 kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM Network2 kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM Kurumsal kilidi açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM Servis Sağlayıcı kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK kilidi açılamadı."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK kilidi açılamadı."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK kilidi açılamadı."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK kilidi açılamadı."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK kilidi açılamadı."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK kilidi açılamadı."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK kilidi açılamadı."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK kilidi açılamadı."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK kilidi açılamadı."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK kilidi açılamadı."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK kilidi açılamadı."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Ağ alt kümesi servis sağlayıcı kilidini açma isteği başarısız."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM Ağ kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM Ağ Alt Kümesi kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM Servis Sağlayıcı kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM Kurumsal kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM Network1 kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM Network2 kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM hrpd kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM Servis Sağlayıcı kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM Kurumsal kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK kilidi açıldı."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI kilidi açıldı."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Ağ alt kümesi servis sağlayıcı kilidi açıldı."</string> </resources> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 37ce4970f4dd..659d1acff465 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -195,8 +195,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Адміністратор не дозволив використовувати пристрій для особистих потреб"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Пристрій контролюється"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Адміністратор вашої організації контролює цей пристрій і відстежує мережевий трафік. Торкніться, щоб дізнатися більше."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Доступ до геоданих змінено адміністратором"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Натисніть, щоб переглянути доступ до геоданих."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Додаток має доступ до геоданих"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Зверніться до IT-адміністратора, щоб дізнатися більше"</string> <string name="country_detector" msgid="7023275114706088854">"Визначення країни"</string> <string name="location_service" msgid="2439187616018455546">"Служби локації"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Сервіс \"Сповіщення датчика\""</string> @@ -204,14 +204,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"З вашого пристрою буде стерто всі дані"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Не можна запускати додаток для адміністраторів. Буде відновлено заводські налаштування пристрою.\n\nЯкщо у вас є запитання, зв’яжіться з адміністратором своєї організації."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Додаток <xliff:g id="OWNER_APP">%s</xliff:g> вимкнув друк."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Розблокуйте особисті додатки"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Додатки буде заблоковано завтра"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Ваш ІТ-адміністратор не дозволяє призупиняти робочий профіль більше ніж на <xliff:g id="DAYS">%1$d</xliff:g> дн."</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Увімкнути робочий профіль"</string> <string name="me" msgid="6207584824693813140">"Я"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Парам. пристрою"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Опції Android TV"</string> @@ -245,10 +241,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Параметри телеф."</string> <string name="global_action_lock" msgid="6949357274257655383">"Блокування екрана"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Вимкнути"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Вимкнути"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Перезапустити"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Екстрений виклик"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Звіт про помилки"</string> <string name="global_action_logout" msgid="6093581310002476511">"Завершити сеанс"</string> @@ -434,11 +428,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"отр. дост. до додат. команд пров. місцезн."</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Додаток отримуватиме доступ до додаткових команд постачальника геоданих. Можливе втручання додатка в роботу GPS чи інших джерел геоданих."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"отримувати доступ до даних про точне місцезнаходження лише в активному режимі"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Цей додаток може отримувати дані про ваше точне місцезнаходження лише в активному режимі. Щоб додаток міг використовувати Служби локації, вони мають бути доступні й увімкнені на вашому пристрої. Це може пришвидшити розряджання акумулятора."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Цей додаток може отримувати дані про ваше точне місцезнаходження від Служб локації, коли ви його використовуєте. Для цього на вашому пристрої має бути ввімкнено Служби локації. Це може підвищити використання заряду акумулятора."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"отримувати доступ до даних про приблизне місцезнаходження лише в активному режимі"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Цей додаток може отримувати дані про ваше приблизне місцезнаходження лише в активному режимі. Щоб додаток міг використовувати Служби локації, вони мають бути доступні й увімкнені на вашому пристрої."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Цей додаток може отримувати дані про ваше приблизне місцезнаходження від Служб локації, коли ви його використовуєте. Для цього на вашому пристрої має бути ввімкнено Служби локації."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"доступ до геоданих у фоновому режимі"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Цей додаток може отримувати дані про місцезнаходження, коли його запущено не лише в активному, а й у фоновому режимі."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Цей додаток може будь-коли отримувати дані про ваше місцезнаходження, навіть якщо ви його не використовуєте."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"змінювати налаштув-ня звуку"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Дозволяє програмі змінювати загальні налаштування звуку, як-от гучність і динамік, який використовується для виводу сигналу."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"запис-ти аудіо"</string> @@ -450,11 +444,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"фотограф. та знімати відео"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Цей додаток може будь-коли робити фотографії та записувати відео за допомогою камери."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Дозволити додатку або сервісу отримувати доступ до системних камер, робити фото й записувати відео"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Цей пріоритетний системний додаток може будь-коли робити фото й записувати відео, використовуючи камеру системи. Додатку потрібен дозвіл android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Дозволити додатку або сервісу отримувати зворотні виклики щодо відкриття чи закриття камер."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Цей додаток може отримувати зворотні виклики, коли одна з камер вмикається (певним додатком) чи вимикається."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"контролювати вібросигнал"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Дозволяє програмі контролювати вібросигнал."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Надає додатку доступ до стану вібрації."</string> @@ -1390,13 +1382,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Перевірка поточного вмісту"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Новий пристрій пам’яті (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Торкніться, щоб налаштувати"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Для перенесення фотографій і медіафайлів"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Проблема з носієм (<xliff:g id="NAME">%s</xliff:g>)"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Торкніться, щоб виправити"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Пристрій <xliff:g id="NAME">%s</xliff:g> пошкоджено. Виберіть, щоб виправити."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> не підтримується"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"<xliff:g id="NAME">%s</xliff:g> не підтримується цим пристроєм. Торкніться, щоб налаштувати підтримуваний формат."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"<xliff:g id="NAME">%s</xliff:g> не підтримується на цьому пристрої. Виберіть, щоб налаштувати в підтримуваному форматі."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"<xliff:g id="NAME">%s</xliff:g> не підтримується на цьому пристрої."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> несподівано вийнято"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Перш ніж виймати носій, відключіть його, щоб не втратити вміст"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Пристрій пам’яті (<xliff:g id="NAME">%s</xliff:g>) вийнято"</string> @@ -1668,24 +1663,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Збільшити гучність понад рекомендований рівень?\n\nЯкщо слухати надто гучну музику тривалий час, можна пошкодити слух."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Використовувати швидке ввімкнення?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Якщо цей засіб увімкнено, ви можете активувати спеціальні можливості, утримуючи обидві кнопки гучності протягом трьох секунд."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Увімкнути спеціальні можливості?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Якщо втримувати обидві клавіші гучності впродовж кількох секунд, буде ввімкнено спеціальні можливості. Це може вплинути на роботу пристрою.\n\nПоточні функції:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nВибрані функції можна змінити в меню \"Налаштування > Спеціальні можливості\"."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Увімкнути TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Якщо втримувати обидві клавіші гучності впродовж кількох секунд, буде ввімкнено TalkBack – програму зчитування з екрана, яка допомагає сліпим і людям із поганим зором. TalkBack повністю змінює спосіб роботи пристрою.\n\nДля цієї комбінації клавіш можна вибрати іншу функцію в меню \"Налаштування > Спеціальні можливості\"."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Увімкнути <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Якщо втримувати обидві клавіші гучності впродовж кількох секунд, буде ввімкнено спеціальні можливості – <xliff:g id="SERVICE">%1$s</xliff:g>. Це може вплинути на роботу пристрою.\n\nДля цієї комбінації клавіш можна вибрати іншу функцію в меню \"Налаштування > Спеціальні можливості\"."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Увімкнути"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Не вмикати"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Надати сервісу <xliff:g id="SERVICE">%1$s</xliff:g> повний доступ до вашого пристрою?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Якщо ви ввімкнете сервіс <xliff:g id="SERVICE">%1$s</xliff:g>, дані на пристрої не захищатимуться екраном блокування."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Повний доступ доречний для додатків, які надають спеціальні можливості, але його не варто відкривати для більшості інших додатків."</string> @@ -1696,10 +1682,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дозволити"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Заборонити"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Натисніть функцію, щоб почати використовувати її:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Виберіть функції для кнопки спеціальних можливостей"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Виберіть функції для комбінації з клавішами гучності"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Сервіс <xliff:g id="SERVICE_NAME">%s</xliff:g> вимкнено"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Редагувати засоби"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string> @@ -1707,23 +1691,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Використовувати ярлик"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія кольорів"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Корекція кольорів"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Утримано клавіші гучності. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> увімкнено."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Утримано клавіші гучності. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> вимкнено."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Щоб скористатися службою <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, утримуйте обидві клавіші гучності впродовж трьох секунд"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Виберіть функцію для кнопки спеціальних можливостей:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Виберіть функцію для жесту спеціальних можливостей (проведення двома пальцями знизу вгору):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Виберіть функцію для жесту спеціальних можливостей (проведення трьома пальцями знизу вгору):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Щоб переключитися між функціями, натисніть і утримуйте кнопку спеціальних можливостей."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Щоб переключитися між функціями, проведіть двома пальцями вгору й утримуйте екран."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Щоб переключитися між функціями, проведіть трьома пальцями вгору й утримуйте екран."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Збільшення"</string> <string name="user_switched" msgid="7249833311585228097">"Поточний користувач: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Перехід в обліковий запис \"<xliff:g id="NAME">%1$s</xliff:g>\"…"</string> @@ -2118,8 +2094,7 @@ <item quantity="many"><xliff:g id="FILE_NAME_2">%s</xliff:g> і ще <xliff:g id="COUNT_3">%d</xliff:g> файлів</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> і ще <xliff:g id="COUNT_3">%d</xliff:g> файлу</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Немає рекомендацій щодо людей, з якими можна поділитися"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Список додатків"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Цей додаток не має дозволу на запис, але він може фіксувати звук через цей USB-пристрій."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"На головний екран"</string> @@ -2155,222 +2130,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Робочі додатки не можуть відкривати цей контент"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Особисті додатки не можуть підтримувати цей контент"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Особисті додатки не можуть відкривати цей контент"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Записувати й відтворювати звук під час викликів"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Дозволяє цьому додатку записувати й відтворювати звук під час викликів, коли його вибрано додатком для дзвінків за умовчанням."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN-код розблокування мережі SIM-карти"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN-код розблокування підгрупи мереж SIM-карти"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN-код розблокування корпоративної SIM-карти"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN-код розблокування постачальника послуг для SIM-карти"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN-код розблокування SIM-карти"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Введіть PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Введіть PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Введіть PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Введіть PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Введіть PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN-код розблокування мережі1 картки RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN-код розблокування мережі2 картки RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN-код розблокування HRPD картки RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN-код розблокування корпоративної картки RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN-код розблокування постачальника послуг для картки RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN-код розблокування картки RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Введіть PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Введіть PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Введіть PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Введіть PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Введіть PUK-код"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Введіть PUK-код"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN-код розблокування SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN-код розблокування SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN-код розблокування ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN-код розблокування IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN-код розблокування постачальника послуг для підгрупи мереж"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Надсилається запит на розблокування мережі SIM-карти…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Надсилається запит на розблокування підгрупи мереж SIM-карти…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Надсилається запит на розблокування постачальника послуг для SIM-карти…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Надсилається запит на розблокування корпоративної SIM-карти…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Надсилається запит на розблокування PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Надсилається запит на розблокування PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Надсилається запит на розблокування PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Надсилається запит на розблокування PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Надсилається запит на розблокування PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Надсилається запит на розблокування SIM-карти…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Надсилається запит на розблокування мережі1 картки RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Надсилається запит на розблокування мережі2 картки RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Надсилається запит на розблокування HRPD картки RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Надсилається запит на розблокування постачальника послуг для картки RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Надсилається запит на розблокування корпоративної картки RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Надсилається запит на розблокування SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Надсилається запит на розблокування SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Надсилається запит на розблокування ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Надсилається запит на розблокування IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Надсилається запит на розблокування постачальника послуг для підгрупи мереж…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Надсилається запит на розблокування картки RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Надсилається запит на розблокування PUK-кодом…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Надсилається запит на розблокування PUK-кодом…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Надсилається запит на розблокування PUK-кодом…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Надсилається запит на розблокування PUK-кодом…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Надсилається запит на розблокування PUK-кодом…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Надсилається запит на розблокування PUK-кодом…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Не вдалося розблокувати мережу SIM-карти."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Не вдалося розблокувати підгрупу мереж SIM-карти."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Не вдалося розблокувати постачальника послуг для SIM-карти."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Не вдалося розблокувати корпоративну SIM-карту."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Не вдалося розблокувати SIM-карту."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Не вдалося розблокувати мережу1 картки RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Не вдалося розблокувати мережу2 картки RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Не вдалося розблокувати HRPD картки RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Не вдалося розблокувати корпоративну картку RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Не вдалося розблокувати постачальника послуг для картки RUIM."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Не вдалося розблокувати картку RUIM."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Не вдалося розблокувати PUK-кодом."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Не вдалося розблокувати PUK-кодом."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Не вдалося розблокувати PUK-кодом."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Не вдалося розблокувати PUK-кодом."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Не вдалося розблокувати PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Не вдалося розблокувати PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Не вдалося розблокувати PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Не вдалося розблокувати PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Не вдалося розблокувати PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Не вдалося розблокувати PUK-кодом."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Не вдалося розблокувати PUK-кодом."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Не вдалося розблокувати SPN."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Не вдалося розблокувати SP Equivalent Home PLMN."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Не вдалося розблокувати ICCID."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Не вдалося розблокувати IMPI."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Не вдалося розблокувати постачальника послуг для підгрупи мереж."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Мережу SIM-карти розблоковано."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Підгрупу мереж SIM-карти розблоковано."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Постачальника послуг для SIM-карти розблоковано."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Корпоративну SIM-карту розблоковано."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM-карту розблоковано."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Мережу1 картки RUIM розблоковано."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Мережу2 картки RUIM розблоковано."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"HRPD картки RUIM розблоковано."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Постачальника послуг для картки RUIM розблоковано."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Корпоративну картку RUIM розблоковано."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Картку RUIM розблоковано."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Розблоковано за допомогою PUK-коду."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Розблоковано за допомогою PUK-коду."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Розблоковано за допомогою PUK-коду."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Розблоковано за допомогою PUK-коду."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Розблоковано за допомогою PUK-коду."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Розблоковано за допомогою PUK-коду."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Розблоковано за допомогою PUK-коду."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Розблоковано за допомогою PUK-коду."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Розблоковано за допомогою PUK-коду."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Розблоковано за допомогою PUK-коду."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Розблоковано за допомогою PUK-коду."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN розблоковано."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN розблоковано."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID розблоковано."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI розблоковано."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Постачальника послуг для підгрупи мереж розблоковано."</string> </resources> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index 51a0d79c09ac..66074310c3d9 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"منتظم نے ذاتی استعمال کے لیے آلہ کو دستبردار کیا ہے"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"آلہ زیر انتظام ہے"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"آپ کی تنظیم اس آلے کا نظم کرتی ہے اور وہ نیٹ ورک ٹریفک کی نگرانی کر سکتی ہے۔ تفاصیل کیلئے تھپتھپائیں۔"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"آپ کے منتظم نے مقام کی ترتیبات تبدیل کر دیں"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"اپنے مقام کی ترتیبات دیکھنے کے لیے تھپتھپائیں۔"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"ایپس آپ کے مقام تک رسائی حاصل کر سکتی ہے"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"مزید جاننے کے لیے اپنے IT منتظم سے رابطہ کریں"</string> <string name="country_detector" msgid="7023275114706088854">"ملک کا ڈیٹیکٹر"</string> <string name="location_service" msgid="2439187616018455546">"مقام کی سروس"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"سینسر نوٹیفکیشن سروس"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"آپ کا آلہ صاف کر دیا جائے گا"</string> <string name="factory_reset_message" msgid="2657049595153992213">"منتظم کی ایپ استعمال نہیں کی جا سکتی۔ آپ کا آلہ اب مٹا دیا جائے گا۔\n\nاگر آپ کے سوالات ہیں تو اپنی تنظیم کے منتظم سے رابطہ کریں۔"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> نے پرنٹنگ کو غیر فعال کر دیا ہے۔"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"اپنے ذاتی ایپس غیر مسدود کریں"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"آئندہ کل ایپس کو مسدود کر دیا جائے گا"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"آپ کا IT منتظم آپ کی دفتری پروفائل کو <xliff:g id="DAYS">%1$d</xliff:g> دن سے زیادہ موقوف ہونے کی اجازت نہیں دیتا ہے"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"دفتری پروفائل آن کریں"</string> <string name="me" msgid="6207584824693813140">"میں"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ٹیبلیٹ کے اختیارات"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV اختیارات"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"فون کے اختیارات"</string> <string name="global_action_lock" msgid="6949357274257655383">"اسکرین لاک"</string> <string name="global_action_power_off" msgid="4404936470711393203">"پاور آف"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"پاور"</string> + <string name="global_action_restart" msgid="4678451019561687074">"ری سٹارٹ کریں"</string> <string name="global_action_emergency" msgid="1387617624177105088">"ایمرجنسی"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"بگ کی اطلاع"</string> <string name="global_action_logout" msgid="6093581310002476511">"سیشن ختم کریں"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"اضافی مقام فراہم کنندہ کی کمانڈز تک رسائی حاصل کریں"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ایپ کو اضافی مقام فراہم کنندہ کی کمانڈز تک رسائی حاصل کرنے کی اجازت دیتی ہے۔ یہ ایپ کو GPS یا دوسرے مقام کے مآخذ کے عمل کے ساتھ مداخلت کرنے کی اجازت دے سکتی ہے۔"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"صرف پیش منظر میں درست مقام تک رسائی حاصل کریں"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"یہ ایپ جب پس منظر میں ہوتی ہے تبھی یہ آپ کا صحیح مقام حاصل کر سکتی ہے۔ ایپ کو مقام کی سروسز کو استعمال کرنے کیلئے اِن کا آپ کے آلہ پر دستیاب ہونا اور آن ہونا ضروری ہے۔ اس سے بیٹری کی کھپت میں اضافہ ہو سکتا ہے۔"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"یہ ایپ جب استعمال میں ہوتی ہے تو مقام کی سروسز سے آپ کا درست مقام حاصل کر سکتی ہے۔ ایپ کی مدد سے مقام تک پہنچنے کے لیے آپ کے آلے میں مقام سروسز کا آن ہونا ضروری ہے۔ اس سے بیٹری کے استعمال میں اضافہ ہو سکتا ہے۔"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"صرف پیش منظر میں تخمینی مقام تک رسائی"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"یہ ایپ جب پس منظر میں ہوتی ہے تبھی یہ آپ کا تخمینی مقام حاصل کر سکتی ہے۔ ایپ کو مقام کی سروسز کو استعمال کرنے کیلئے ان کا آپ کے آلہ پر دستیاب ہونا اور آن ہونا ضروری ہے۔"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"یہ ایپ جب استعمال میں ہوتی ہے تو مقام کی سروسز سے آپ کا تخمینی مقام حاصل کر سکتی ہے۔ ایپ کی مدد سے مقام تک پہنچنے کے لیے آپ کے آلے میں مقام سروسز کا آن ہونا ضروری ہے۔"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"پس منظر میں مقام کی رسائی حاصل کریں"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"یہ ایپ پیش منظر کے مقام تک رسائی کے ساتھ ساتھ، پس منظر میں چلتے ہوئے مقام تک رسائی حاصل کر سکتی ہے۔"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"یہ ایپ استعمال میں نہ ہونے کے با وجود کسی بھی وقت مقام تک رسائی حاصل کر سکتی ہے۔"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"اپنے آڈیو کی ترتیبات کو تبدیل کریں"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ایپ کو مجموعی آڈیو ترتیبات جیسے والیوم اور آؤٹ پٹ کیلئے جو اسپیکر استعمال ہوتا ہے اس میں ترمیم کرنے کی اجازت دیتا ہے۔"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"آڈیو ریکارڈ کریں"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"تصاویر لیں اور ویڈیوز بنائیں"</string> <string name="permdesc_camera" msgid="1354600178048761499">"یہ ایپ کسی بھی وقت کیمرا استعمال کرتے ہوئے تصاویر لے سکتی ہے اور ویڈیوز ریکارڈ کر سکتی ہے۔"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"ایپلیکیشن یا سروس کو سسٹم کے کیمرے تک رسائی حاصل کرنے کی اجازت دیتا ہے تاکہ وہ تصاویر لیں اور ویڈیوز ریکارڈ کریں۔"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"یہ مراعات یافتہ یا سسٹم ایپ کسی بھی وقت ایک سسٹم کیمرا استعمال کرتے ہوئے تصاویر اور ویڈیوز ریکارڈ کر سکتی ہے۔ ایپ کے پاس android.permission.CAMERA کے ليے بھی اجازت ہونا ضروری ہے۔"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"ایپلیکیشن یا سروس کو کیمرا کے آلات کے کُھلنے یا بند ہونے سے متعلق کال بیکس موصول کرنے کی اجازت دیں۔"</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"یہ ایپ کال بیکس موصول کر سکتی ہے جب کوئی بھی کیمرا کا آلہ (کسی ایپلیکیشن سے) کھولا جا رہا ہو یا بند کیا جا رہا ہو۔"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"ارتعاش کو کنٹرول کریں"</string> @@ -1349,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"موجودہ مواد کا جائزہ لیا جا رہا ہے"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"نیا <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"سیٹ اپ کرنے کیلئے تھپتھپائیں"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"تصاویر اور میڈیا منتقل کرنے کیلئے"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> کے ساتھ مسئلہ"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"درست کرنے کیلئے تھپتھپائیں"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> خراب ہے۔ اسے ٹھیک کرنے کیلئے منتخب کریں۔"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"غیر تعاون یافتہ <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"یہ آلہ <xliff:g id="NAME">%s</xliff:g> کو سپورٹ نہیں کرتا۔ ایک سپورٹ یافتہ فارمیٹ میں سیٹ اپ کرنے کیلئے تھپتھپائیں۔"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"یہ آلہ اس <xliff:g id="NAME">%s</xliff:g> کو سپورٹ نہیں کرتا ہے۔ ایک سپورٹ یافتہ فارمیٹ میں سیٹ اپ کرنے کیلئے منتخب کریں۔"</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> غیر متوقع طور پر ہٹا دیا گیا"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"مواد کھونے سے بچنے کے لئے ہٹانے سے پہلے میڈیا خارج کریں"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> کو ہٹا دیا گیا"</string> @@ -1623,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"والیوم کو تجویز کردہ سطح سے زیادہ کریں؟\n\nزیادہ وقت تک اونچی آواز میں سننے سے آپ کی سماعت کو نقصان پہنچ سکتا ہے۔"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ایکسیسبیلٹی شارٹ کٹ استعمال کریں؟"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"شارٹ کٹ آن ہونے پر، 3 سیکنڈ تک دونوں والیوم بٹنز کو دبانے سے ایک ایکسیسبیلٹی خصوصیت شروع ہو جائے گی۔"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"ایکسیسبیلٹی خصوصیات آن کریں؟َ"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"دونوں والیوم کی کلیدوں کو کچھ سیکنڈز تک دبائیں رکھنے سے ایکسیسبیلٹی خصوصیات آن ہو جاتی ہیں۔ اس سے آپ کے آلے کے کام کرنے کا طریقہ تبدیل ہو سکتا ہے۔\n\nموجودہ خصوصیات:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nآپ ترتیبات اور ایکسیسبیلٹی میں منتخب کردہ خصوصیات کو تبدیل کر سکتے ہیں۔"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack آن کریں؟"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"والیوم کی دونوں کلیدوں کو کچھ سیکنڈ تک دبائے رکھنے سے TalkBack اسکرین ریڈر آن ہو جاتا ہے جو اندھے اور کم نظر والے لوگوں کے لیے مددگار ہے۔ TalkBack مکمل طور پر آپ کے آلے کے کام کرنے کے طریقہ کو تبدیل کر دیتا ہے۔\n\nآپ اس شارٹ کٹ کو ترتیبات اور ایکسیسبیلٹی میں دوسری خصوصیت کے لیے بدل سکتے ہیں۔"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> آن کریں؟"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"والیوم کی دونوں کلیدوں کو کچھ سیکنڈز تک دبائے رکھنے سے <xliff:g id="SERVICE">%1$s</xliff:g> ایکسیسبیلٹی خصوصیت آن ہو جاتی ہے۔ اس سے آپ کے آلے کے کام کرنے کا طریقہ تبدیل ہو سکتا ہے۔\n\nآپ ترتیبات اور ایکسیسبیلٹی میں دیگر خصوصیت کے لیے اس شارٹ کٹ کو تبدیل کر سکتے ہیں۔"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"آن کریں"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"آن نہ کریں"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> کو آپ کے آلے کا مکمل کنٹرول حاصل کرنے کی اجازت دیں؟"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"اگر آپ <xliff:g id="SERVICE">%1$s</xliff:g> کو آن کرتے ہیں تو آپ کا آلہ ڈیٹا کی مرموزکاری کو بڑھانے کیلئے آپ کی اسکرین کا قفل استعمال نہیں کرے گا۔"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"مکمل کنٹرول ان ایپس کے لیے مناسب ہے جو ایکسیسبیلٹی کی ضروریات میں آپ کی مدد کرتی ہیں، لیکن زیادہ تر ایپس کیلئے مناسب نہیں۔"</string> @@ -1651,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"اجازت دیں"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"مسترد کریں"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ایک خصوصیت کا استعمال شروع کرنے کیلئے اسے تھپتھپائیں:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ایکسیسبیلٹی بٹن کے ساتھ استعمال کرنے کیلئے خصوصیات منتخب کریں"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"والیوم کلید کے شارٹ کٹ کے ساتھ استعمال کرنے کیلئے خصوصیات منتخب کریں"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> کو آف کر دیا گیا ہے"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"شارٹ کٹس میں ترمیم کریں"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ہو گیا"</string> @@ -1662,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"شارٹ کٹ استعمال کریں"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"رنگوں کی تقلیب"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"رنگ کی تصحیح"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"والیوم کی کلیدوں کو دبائے رکھا گیا۔ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> آن ہے۔"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"والیوم کی کلیدوں کو دبائے رکھا گیا۔ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> آف ہے۔"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> کا استعمال کرنے کے لیے 3 سیکنڈ تک والیوم کی دونوں کلیدوں کو چھوئیں اور دبائے رکھیں"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"ایکسیسبیلٹی بٹن پر تھپتھپانے وقت استعمال کرنے کیلئے ایک خصوصیت منتخب کریں:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"ایکسیسبیلٹی اشارہ کے ساتھ استعمال کرنے کے لیے ایک خصوصیت چنیں (دو انگلیوں سے اسکرین کے نیچے سے اوپر کی طرف سوائپ کریں):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"ایکسیسبیلٹی اشارہ کے ساتھ استعمال کرنے کے لیے ایک خصوصیت چنیں (تین انگلیوں سے اسکرین کے نیچے سے اوپر کی طرف سوائپ کریں):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"خصوصیات کے مابین سوئچ کرنے کے لیے، ایکسیسبیلٹی بٹن کو ٹچ کریں اور دبائے رکھیں۔"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"خصوصیات کے مابین سوئچ کرنے کے لیے، دو انگلیوں سے اوپر سوائپ کریں اور دبائیں رکھیں۔"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"خصوصیات کے مابین سوئچ کرنے کے لیے، تین انگلیوں سے اوپر سوائپ کریں اور دبائیں رکھیں۔"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"میگنیفکیشن"</string> <string name="user_switched" msgid="7249833311585228097">"موجودہ صارف <xliff:g id="NAME">%1$s</xliff:g>۔"</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> پر سوئچ کیا جا رہا ہے…"</string> @@ -2049,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> فائلز</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> فائل</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"اس کے ساتھ اشتراک کرنے کے لیے کوئی تجویز کردہ لوگ نہیں"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"ایپس کی فہرست"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"اس ایپ کو ریکارڈ کرنے کی اجازت عطا نہیں کی گئی ہے مگر اس USB آلہ کے ذریعے آڈیو کیپچر کر سکتی ہے۔"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"گھر"</string> @@ -2072,249 +2049,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"دفتر"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ذاتی ملاحظہ"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"دفتری ملاحظہ"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"ورک ایپس کے ساتھ اس کا اشتراک نہیں کر سکتے"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"آپ کا IT منتظم آپ کو اپنے دفتری پروفائل میں ایپس کے ساتھ اس مواد کا اشتراک کرنے کی اجازت نہیں دیتا ہے"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"اس کو ورک ایپس کے ساتھ نہیں کھول سکتے"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"آپ کا IT منتظم آپ کو اپنے دفتری پروفائل میں ایپس کے ساتھ اس مواد کو کھولنے کی اجازت نہیں دیتا ہے"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"ذاتی ایپس کے ساتھ اس کا اشتراک نہیں کر سکتے"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"آپ کا IT منتظم آپ کو اپنے ذاتی پروفائل میں ایپس کے ساتھ اس مواد کا اشتراک کرنے کی اجازت نہیں دیتا ہے"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"اس کو ذاتی ایپس کے ساتھ نہیں کھول سکتے"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"آپ کا IT منتظم آپ کو اپنے ذاتی پروفائل میں ایپس کے ساتھ اس مواد کو کھولنے کی اجازت نہیں دیتا ہے"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"دفتری پروفائل روک دی گئی ہے"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"آن کریں"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ٹیلیفون کالز میں آڈیو ریکارڈ کریں یا چلائیں"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"اس ایپ کو، جب ڈیفالٹ ڈائلر ایپلیکیشن کے بطور تفویض کیا جاتا ہے، تو ٹیلیفون کالز میں آڈیو ریکارڈ کرنے یا چلانے کی اجازت دیتا ہے۔"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"کوئی ورک ایپس اس مواد کا سپورٹ نہیں کر سکتی ہیں"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"کوئی ورک ایپس اس مواد کو نہیں کھول سکتی ہیں"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"کوئی ذاتی ایپس اس مواد کا سپورٹ نہیں کر سکتی ہیں"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"کوئی ذاتی ایپس اس مواد کو نہیں کھول سکتی ہیں"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM نیٹ ورک غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM نیٹ ورک سب سیٹ کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM کارپوریٹ کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM کے خدمت کے فراہم کنندہ کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK درج کریں"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK درج کریں"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK درج کریں"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK درج کریں"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK درج کریں"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM network1 کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM network2 کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM hrpd کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM کارپوریٹ کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM خدمت کے فراہم کنندہ کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK درج کریں"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK درج کریں"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK درج کریں"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK درج کریں"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK درج کریں"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK درج کریں"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"نیٹ ورک سب سیٹ خدمت کے فراہم کنندہ کو غیر مقفل کرنے کا PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM نیٹ ورک کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM نیٹ ورک سب سیٹ کو غیر مقفل کرنے کی درخواست کی جا رہی ہے …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM کے خدمت کے فراہم کنندہ کو غیر مقفل کرنے کی درخواست کی جار ہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"SIM کارپوریٹ کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM network1 کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM network2 کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM hrpd کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM خدمت کے فراہم کنندہ کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"RUIM کارپوریٹ کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Requesting SP Equivalent Home کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"نیٹ ورک سب سیٹ کے خدمت کے فراہم کنندہ کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK کو غیر مقفل کرنے کی درخواست کی جا رہی ہے…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM نیٹ ورک کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM نیٹ ورک سب سیٹ کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM کے خدمت کے فراہم کنندہ کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM کارپوریٹ کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM Network1 کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM Network2 غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM کارپوریٹ کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM خدمت کے فراہم کنندہ کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK غیر مقفل نہیں ہو سکا۔"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK غیر مقفل نہیں ہو سکا۔"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK غیر مقفل نہیں ہو سکا۔"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK غیر مقفل نہیں ہو سکا۔"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK غیر مقفل نہیں ہو سکا۔"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK غیر مقفل نہیں ہو سکا۔"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK غیر مقفل نہیں ہو سکا۔"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK غیر مقفل نہیں ہو سکا۔"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK غیر مقفل نہیں ہو سکا۔"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK غیر مقفل نہیں ہو سکا۔"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK غیر مقفل نہیں ہو سکا۔"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"نیٹ ورک سب سیٹ خدمت کے فراہم کنندہ کو غیر مقفل کرنے کی درخواست ناکام ہو گئی۔"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM نیٹ ورک غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM نیٹ ورک سب سیٹ غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM کے خدمت کا فراہم کنندہ غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM کارپوریٹ غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM Network1 غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM Network2 غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM خدمت کا فراہم کنندہ غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM کارپوریٹ غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI غیر مقفل ہو گیا۔"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"نیٹ ورک سب سیٹ کے خدمت کا فراہم کنندہ غیر مقفل ہو گیا۔"</string> </resources> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index 7b90111d0513..442686f2546f 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrator shaxsiy foydalanishga qoldirilgan qurilmani rad etdi"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Bu – boshqariladigan qurilma"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Tashkilotingiz bu qurilmani boshqaradi va tarmoq trafigini nazorat qilishi mumkin. Tafsilotlar uchun bosing."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Joylashuv sozlamalari administratoringiz tomonidan oʻzgartirildi"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Joylashuv sozlamalarini koʻrish uchun bosing."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Ilovalar joylashuv axborotidan foydalana oladi"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Batafsil axborot olish uchun AT administratoringizga murojaat qiling"</string> <string name="country_detector" msgid="7023275114706088854">"Mamlakatni aniqlash"</string> <string name="location_service" msgid="2439187616018455546">"Joylashuvni aniqlash xizmati"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Sensorli bildirishnoma xizmati"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Qurilmangizdagi ma’lumotlar o‘chirib tashlanadi"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Administrator ilovasini ishlatib bo‘lmaydi. Qurilmada barcha ma’lumotlar o‘chirib tashlanadi.\n\nSavollaringiz bo‘lsa, administrator bilan bog‘laning."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Chop etish funksiyasi <xliff:g id="OWNER_APP">%s</xliff:g> tomonidan faolsizlantirilgan."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Shaxsiy ilovalarni blokdan chiqaring"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Ilovalar ertaga bloklanadi"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"AT administratoringiz ish profili <xliff:g id="DAYS">%1$d</xliff:g> kundan ortiq pauza qilinishini taqiqlagan"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Ish profilini yoqish"</string> <string name="me" msgid="6207584824693813140">"Men"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Planshet sozlamalari"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV parametrlari"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Telefon sozlamalari"</string> <string name="global_action_lock" msgid="6949357274257655383">"Ekran qulfi"</string> <string name="global_action_power_off" msgid="4404936470711393203">"O‘chirish"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Quvvat"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Qayta ishga tushirish"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Favqulodda chaqiruv"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Nosozlik haqida ma’lumot berish"</string> <string name="global_action_logout" msgid="6093581310002476511">"Seansni yakunlash"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"qo‘shimcha manzillarga kirish buyruqlari"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ilovaga qo‘shimcha joylashuv xizmati buyruqlaridan foydalanishga ruxsat beradi. Uning yordamida ilova GPS yoki boshqa joylashuv ma’lumoti manbalarining ishlashiga xalaqit qilishi mumkin."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"aniq joylashuv axborotini olishga faqat old fonda ruxsat"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Bu ilova faqat fon rejimida aniq joylashuv axborotingizdan foydalanishi mumkin. Ilova joylashuv xizmatlaridan foydalana olishi uchun ular qurilmangizda yoniq turishi va ishlashi kerak. Bunda batareya sarfi oshishi mumkin."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Bu ilova ishlayotganida u joylashuvni aniqlash xizmatidan aniq joylashuv axborotini olishi mumkin. Ilova joylashuv axborotidan foydalana olishi uchun qurilmangizda joylashuvni aniqlash xizmati yoqilishi kerak. Bunda batareya quvvati tezroq sarflanishi mumkin."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"taxminiy joylashuv axborotini olishga faqat old fonda ruxsat"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Bu ilova faqat fon rejimida taxminiy joylashuv axborotingizdan foydalanishi mumkin. Ilova joylashuv xizmatlaridan foydalana olishi uchun ular avtomobilingizda yoniq boʻlishi va ishlashi kerak."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Bu ilova ishlayotganida u joylashuvni aniqlash xizmatidan taxminiy joylashuv axborotini olishi mumkin. Ilova joylashuv axborotidan foydalana olishi uchun qurilmangizda joylashuvni aniqlash xizmati yoqilishi kerak."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"fonda joylashuv axborotidan foydalanish"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Bu ilova joylashuv axborotidan orqa fonda ham, old fonda ham foydalanishi mumkin."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Bu ilova ishlamayotganida ham istalgan vaqt joylashuv axborotidan foydalanishi mumkin."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"audio sozlamalaringizni o‘zgartirish"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Ilovalarga tovush va ovoz chiqarish uchun foydalaniladigan karnay kabi global audio sozlamalarini o‘zgartirish uchun ruxsat beradi."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ovoz yozib olish"</string> @@ -444,8 +438,7 @@ <string name="permlab_camera" msgid="6320282492904119413">"rasm va videoga olish"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Bu ilova xohlagan vaqtda kamera orqali suratga olishi va video yozib olishi mumkin."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Ilova yoki xizmatga tizim kamerasi orqali surat va videolar olishga ruxsat berish"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Bu imtiyozli yoki tizim ilovasi istalgan vaqtda tizim kamerasi orqali surat va videolar olishi mumkin. Ilovada android.permission.CAMERA ruxsati ham yoqilgan boʻlishi talab qilinadi"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Ilova yoki xizmatga kamera qurilmalari ochilayotgani yoki yopilayotgani haqida qayta chaqiruvlar qabul qilishi uchun ruxsat berish."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Bu ilova har qanday kamera qurilmasi ochilayotganda (istalgan ilova tarafidan) yoki yopilayotganda qayta chaqiruvlar qabul qilishi mumkin."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"tebranishni boshqarish"</string> @@ -1349,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Joriy kontent tekshirilmoqda"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Yangi <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Sozlash uchun bosing"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Rasm va boshqa fayllarni o‘tkazish"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> bilan muammo"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Tuzatish uchun bosing"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g>: buzilgan. Tuzatish uchun uni tanlang."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> qo‘llab-quvvatlanmaydi"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Bu xotira qurilmasi (<xliff:g id="NAME">%s</xliff:g>) qo‘llab-quvvatlanmaydi. Uni mos keladigan formatda sozlash uchun bu yerga bosing."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Bu xotira qurilmasi (<xliff:g id="NAME">%s</xliff:g>) qo‘llab-quvvatlanmaydi. Mos formatda sozlash uchun uni tanlang."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"<xliff:g id="NAME">%s</xliff:g> bu qurilmada ishlamaydi."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> kutilmaganda chiqarib olindi"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Xotira qurilmasini olib tashlashdan oldin, uni o‘chiring, shuda ma’lumotlar o‘chib ketmaydi."</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> olib tashlandi"</string> @@ -1623,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Tovush balandligi tavsiya etilgan darajadan ham yuqori qilinsinmi?\n\nUzoq vaqt davomida baland ovozda tinglash eshitish qobiliyatingizga salbiy ta’sir ko‘rsatishi mumkin."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Tezkor ishga tushirishdan foydalanilsinmi?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Maxsus imkoniyatlar funksiyasidan foydalanish uchun u yoniqligida ikkala tovush tugmasini 3 soniya bosib turing."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Maxsus imkoniyatlar yoqilsinmi?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Maxsus imkoniyatlarni yoqish uchun ikkala tovush tugmalarini bir necha soniya bosib turing. Qurilmangiz ishlashida oʻzgarish yuz berishi mumkin.\n\nJoriy funksiyalar:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nTanlangan funksiyalarni Sozlamalar ichidagi Maxsus imkoniyatlar ustiga bosib oʻzgartirishingiz mumkin."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"TalkBack yoqilsinmi?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"TalkBack funksiyasini yoqish uchun ikkala tovush tugmalarini bir necha soniya bosib turing. U ekrandan oʻqish dasturi hisoblanib, koʻzi xira koʻradigan va koʻzi ojiz insonlar uchun juda foydali. TalkBack funksiyasi qulringizning ishlashini butunlay oʻzgartirib yuborishi mumkin.\n\nBu tezkor tugmalarni boshqa funksiyaga Sozlamalar ichidagi Maxsus imkoniyatlar orqali tayinlash mumkin."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"<xliff:g id="SERVICE">%1$s</xliff:g> yoqilsinmi?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"<xliff:g id="SERVICE">%1$s</xliff:g> funksiyasini yoqish uchun ikkala tovush tugmalarini bir necha soniya bosib turing. Qurilmangiz ishlashida oʻzgarish yuz berishi mumkin.\n\nBu tezkor tugmalarni boshqa funksiyaga Sozlamalar ichidagi Maxsus imkoniyatlar orqali tayinlash mumkin."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Yoqilsin"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Yoqilmasin"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> xizmatiga qurilmangizni boshqarish uchun toʻliq ruxsat berilsinmi?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Agar <xliff:g id="SERVICE">%1$s</xliff:g> xizmatini yoqsangiz, qurilmangiz maʼlumotlarni shifrlashni kuchaytirish uchun ekran qulfidan foydalanmaydi."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Toʻliq nazorat maxsus imkoniyatlar bilan ishlovchi ilovalar uchun mos, lekin barcha ilovalar uchun emas."</string> @@ -1651,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Ruxsat"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Rad etish"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Funksiyadan foydalanish uchun ustiga bosing:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Maxsus imkoniyatlar tugmasi bilan foydalanish uchun funksiyalarni tanlang"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Tovush balandligi tugmasi bilan foydalanish uchun funksiyalarni tanlang"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> faolsizlantirildi"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Tezkor tugmalarni tahrirlash"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"OK"</string> @@ -1662,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Tezkor ishga tushirishdan foydalanish"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ranglarni akslantirish"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Rangni tuzatish"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tovush tugmalari bosib turildi. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> yoqildi."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tovush tugmalari bosib turildi. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> faolsizlantirildi."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> xizmatidan foydalanish uchun ikkala ovoz balandligi tugmalarini uzoq bosib turing"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Maxsus imkoniyatlar tugmasi bosilganda ishga tushadigan funksiyani tanlang:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Maxsus imkoniyatlar ishorasi bilan ishga tushadigan funksiyani tanlang (ikkita barmoq bilan ekranning pastidan tepaga surib tortilganda):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Maxsus imkoniyatlar ishorasi bilan ishga tushadigan funksiyani tanlang (uchta barmoq bilan ekranning pastidan tepaga surib tortilganda):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Funksiyalarni almashtirihs uchun maxsus imkoniyatlar tugmasini bosib turing."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Funksiyalarni almashtirish uchun ikkita barmoq bilan tepaga suring va bosib turing."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Funksiyalarni almashtirish uchun uchta barmoq bilan tepaga suring va bosib turing."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Kattalashtirish"</string> <string name="user_switched" msgid="7249833311585228097">"Joriy foydalanuvchi <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Quyidagi foydalanuvchiga o‘tilmoqda: <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2049,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> ta fayl</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> ta fayl</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Ulashish uchun hech qanday odam tavsiya qilinmagan"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Ilovalar roʻyxati"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Bu ilovaga yozib olish ruxsati berilmagan, lekin shu USB orqali ovozlarni yozib olishi mumkin."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Bosh sahifa"</string> @@ -2086,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Bu kontentni ocha oladigan ishga oid ilovalar topilmadi"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Bu kontent bilan ishlay oladigan shaxsiy ilovalar topilmadi"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Bu kontentni ocha oladigan shaxsiy ilovalar topilmadi"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Telefondagi suhbatlarni yozib olish va ularni ijro qilish"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Bu ilova chaqiruvlar uchun asosiy ilova sifatida tayinlanganda u telefon chaqiruvlarida suhbatlarni yozib olish va shu audiolarni ijro etish imkonini beradi."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM kartaning tarmoqdagi qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM karta tarmoq qismini qulfdan chiqarish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Korporativ SIM kartalar qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM karta tegishli aloqa operatori qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM karta qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"PUK kodni kiriting"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"PUK kodni kiriting"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"PUK kodni kiriting"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"PUK kodni kiriting"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"PUK kodni kiriting"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM kartalaridagi tarmoq1 qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM kartalaridagi tarmoq2 qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM HRPD kartalari qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Korporativ RUIM kartalar qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM kartalari aloqa operatori qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM kartalari qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"PUK kodni kiriting"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"PUK kodni kiriting"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"PUK kodni kiriting"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"PUK kodni kiriting"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"PUK kodni kiriting"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"PUK kodni kiriting"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PLMN operatorining muqobil uy tarmoqlarini qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI qulfini ochish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"SIM karta tarmoq qismi aloqa operatorini qulfdan chiqarish uchun PIN kod"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"SIM kartaning tarmoqdagi qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"SIM karta tarmoq qismini qulfdan chiqarish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"SIM karta tegishli aloqa operatori qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Korporativ SIM kartalar qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"PUK kod bilan qulfni ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"PUK kod bilan qulfni ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"PUK kod bilan qulfni ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"PUK kod bilan qulfni ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"PUK kod bilan qulfni ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"SIM karta qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"RUIM kartalaridagi tarmoq1 qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"RUIM kartalaridagi tarmoq2 qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"RUIM HRPD kartalari qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"RUIM kartalari aloqa operatori qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Korporativ RUIM kartalari qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"SPN qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"PLMN operatorining muqobil uy tarmoqlarini qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"ICCID qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"IMPI qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Aloqa operatori tarmoq qismini qulfdan chiqarish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"RUIM kartalari qulfini ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"PUK kod bilan qulfni ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"PUK kod bilan qulfni ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"PUK kod bilan qulfni ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"PUK kod bilan qulfni ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"PUK kod bilan qulfni ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"PUK kod bilan qulfni ochish soʻralmoqda…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM kartaning tarmoqdagi qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM karta tarmoq qismi qulfdan chiqarilmadi."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM karta tegishli aloqa operatori qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Korporativ SIM kartalar qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM karta qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM kartalaridagi tarmoq1 qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM kartalaridagi tarmoq2 qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM HRPD kartalari qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Korporativ RUIM kartalar qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM kartalari aloqa operatori qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM kartalari qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK kod bilan qulf ochilmadi."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK kod bilan qulf ochilmadi."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK kod bilan qulf ochilmadi."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK kod bilan qulf ochilmadi."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK kod bilan qulf ochilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK kod bilan qulf ochilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK kod bilan qulf ochilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK kod bilan qulf ochilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK kod bilan qulf ochilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK kod bilan qulf ochilmadi."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK kod bilan qulf ochilmadi."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"PLMN operatorining muqobil uy tarmoqlarini qulfi ochilmadi."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Aloqa operatori tarmoq qismini qulfdan chiqarish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM karta tarmoqdagi qulfidan chiqarildi"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM karta tarmoq qismi qulfdan chiqarildi."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM karta tegishli aloqa operatori qulfi ochildi"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Korporativ SIM kartalar qulfi ochildi."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM karta qulfi ochildi."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM kartalaridagi tarmoq1 qulfi ochildi."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM kartalaridagi tarmoq2 qulfi ochildi."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM HRPD kartalari qulfi ochilmadi"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM kartalari aloqa operatori qulfi ochildi."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Korporativ RUIM kartasi qulfi ochildi."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM kartalari qulfi ochilmadi."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK kod bilan qulf ochildi."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK kod bilan qulf ochildi."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK kod bilan qulf ochildi."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK kod bilan qulf ochildi."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK kod bilan qulf ochildi."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK kod bilan qulf ochildi."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK kod bilan qulf ochildi."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK kod bilan qulf ochildi."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK kod bilan qulf ochildi."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK kod bilan qulf ochildi."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK kod bilan qulf ochildi."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN qulfini ochish soʻrovi yuborilmadi."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"PLMN operatorining muqobil uy tarmoqlari qulfi ochildi."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID qulfi ochildi."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI qulfi ochildi."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Aloqa operatori tarmoq qismi qulfdan chiqarilmadi."</string> </resources> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index c87296d2c452..1ddc27d899be 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Quản trị viên đã từ bỏ quyền sở hữu thiết bị để cho phép dùng vào mục đích cá nhân"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Thiết bị được quản lý"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Tổ chức của bạn sẽ quản lý thiết bị này và có thể theo dõi lưu lượng truy cập mạng. Nhấn để biết chi tiết."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Quản trị viên của bạn đã thay đổi các tùy chọn cài đặt vị trí"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Nhấn để xem các tùy chọn cài đặt vị trí của bạn."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Ứng dụng có thể truy cập vào thông tin vị trí của bạn"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Hãy liên hệ với quản trị viên CNTT để tìm hiểu thêm"</string> <string name="country_detector" msgid="7023275114706088854">"Trình phát hiện quốc gia"</string> <string name="location_service" msgid="2439187616018455546">"Dịch vụ vị trí"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Dịch vụ Thông báo của cảm biến"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Thiết bị của bạn sẽ bị xóa"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Không thể sử dụng ứng dụng quản trị. Thiết bị của bạn sẽ bị xóa ngay bây giờ.\n\nHãy liên hệ với quản trị viên của tổ chức nếu bạn có thắc mắc."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> đã tắt tính năng in."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Bỏ chặn ứng dụng cá nhân của bạn"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Các ứng dụng sẽ bị chặn vào ngày mai"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Quản trị viên CNTT không cho phép bạn tạm dừng hồ sơ công việc quá <xliff:g id="DAYS">%1$d</xliff:g> ngày"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Bật hồ sơ công việc"</string> <string name="me" msgid="6207584824693813140">"Tôi"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tùy chọn máy tính bảng"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Tùy chọn dành cho Android TV"</string> @@ -239,12 +235,10 @@ <string name="global_actions" product="tablet" msgid="4412132498517933867">"Tùy chọn máy tính bảng"</string> <string name="global_actions" product="tv" msgid="3871763739487450369">"Tùy chọn dành cho Android TV"</string> <string name="global_actions" product="default" msgid="6410072189971495460">"Tùy chọn điện thoại"</string> - <string name="global_action_lock" msgid="6949357274257655383">"Phương thức khoá màn hình"</string> + <string name="global_action_lock" msgid="6949357274257655383">"Cách khóa màn hình"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Tắt nguồn"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Nguồn"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Khởi động lại"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Khẩn cấp"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Báo cáo lỗi"</string> <string name="global_action_logout" msgid="6093581310002476511">"Kết thúc phiên"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"truy cập vào các lệnh của nhà cung cấp vị trí bổ sung"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Cho phép ứng dụng truy cập vào các lệnh của nhà cung cấp vị trí bổ sung. Điều này có thể cho phép ứng dụng can thiệp vào hoạt động của Hệ thống định vị toàn cầu (GPS) hoặc các nguồn vị trí khác."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"chỉ truy cập vị trí chính xác trong nền trước"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ứng dụng này chỉ có thể nhận thông tin vị trí chính xác của bạn khi mở trên màn hình. Để ứng dụng có thể sử các dụng dịch vụ vị trí, thiết bị của bạn phải có các dịch vụ này và dịch vụ ở trạng thái bật. Hoạt động này có thể tăng mức tiêu thụ pin."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Khi bạn dùng ứng dụng này, ứng dụng có thể nhận được thông tin vị trí chính xác của bạn từ dịch vụ vị trí. Bạn phải bật dịch vụ vị trí trên thiết bị của mình thì ứng dụng mới nhận được thông tin vị trí. Việc này có thể làm tăng mức sử dụng pin."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"chỉ truy cập thông tin vị trí gần đúng khi ứng dụng mở trên màn hình"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ứng dụng này chỉ có thể nhận được thông tin vị trí gần đúng của bạn khi mở trên màn hình. Để ứng dụng có thể dùng các dịch vụ vị trí này, thiết bị của bạn phải có các dịch vụ này và dịch vụ ở trạng thái bật."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Khi bạn dùng ứng dụng này, ứng dụng có thể nhận được thông tin vị trí gần đúng của bạn từ dịch vụ vị trí. Bạn phải bật dịch vụ vị trí trên thiết bị của mình thì ứng dụng mới nhận được thông tin vị trí."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"truy cập vào vị trí trong nền"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ngoài quyền truy cập vào thông tin vị trí khi mở trên màn hình, ứng dụng này còn có thể truy cập vào thông tin vị trí khi đang chạy trong nền."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ứng dụng này có thể truy cập vào thông tin vị trí bất cứ lúc nào, ngay cả khi bạn không dùng ứng dụng đó."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"thay đổi cài đặt âm thanh của bạn"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Cho phép ứng dụng sửa đổi cài đặt âm thanh chung chẳng hạn như âm lượng và loa nào được sử dụng cho thiết bị ra."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ghi âm"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"chụp ảnh và quay video"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Ứng dụng này có thể chụp ảnh và quay video bằng máy ảnh bất cứ lúc nào."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Cho phép một ứng dụng hoặc dịch vụ truy cập vào máy ảnh hệ thống để chụp ảnh và quay video"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ứng dụng hệ thống có đặc quyền này có thể dùng máy ảnh hệ thống để chụp ảnh và quay video bất cứ lúc nào. Ngoài ra, ứng dụng này cũng cần có quyền android.permission.CAMERA"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Cho phép một ứng dụng hoặc dịch vụ nhận lệnh gọi lại khi các thiết bị máy ảnh đang được mở/đóng."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ứng dụng này có thể nhận các lệnh gọi lại khi có bất kỳ thiết bị camera nào đang được mở (bằng ứng dụng) hoặc đóng."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kiểm soát rung"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Cho phép ứng dụng kiểm soát bộ rung."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Cho phép ứng dụng truy cập vào trạng thái bộ rung."</string> @@ -1350,13 +1342,17 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Đang xem lại nội dung hiện tại"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> mới"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Hãy nhấn để thiết lập"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Để chuyển ảnh và phương tiện"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Vấn đề với <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Hãy nhấn để sửa"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> bị lỗi. Chọn để sửa."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g> không được hỗ trợ"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Thiết bị này không hỗ trợ <xliff:g id="NAME">%s</xliff:g> này. Nhấn để thiết lập ở định dạng được hỗ trợ."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Thiết bị này không hỗ trợ <xliff:g id="NAME">%s</xliff:g> này. Chọn để thiết lập ở định dạng được hỗ trợ."</string> + <!-- no translation found for ext_media_unsupported_notification_message (7657357085538772913) --> + <skip /> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Đã tháo đột ngột <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Hãy ngắt kết nối phương tiện trước khi tháo để tránh mất nội dung"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"Đã xóa <xliff:g id="NAME">%s</xliff:g>"</string> @@ -1624,24 +1620,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Bạn tăng âm lượng lên quá mức khuyên dùng?\n\nViệc nghe ở mức âm lượng cao trong thời gian dài có thể gây tổn thương thính giác của bạn."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Sử dụng phím tắt Hỗ trợ tiếp cận?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Khi phím tắt này đang bật, thao tác nhấn cả hai nút âm lượng trong 3 giây sẽ mở tính năng hỗ trợ tiếp cận."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Bật các tính năng hỗ trợ tiếp cận?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Thao tác nhấn và giữ cả hai phím âm lượng trong vài giây sẽ bật các tính năng hỗ trợ tiếp cận. Việc bật các tính năng này có thể thay đổi cách thiết bị của bạn hoạt động.\n\nCác tính năng hiện tại:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nBạn có thể thay đổi những tính năng đã chọn trong phần Cài đặt > Hỗ trợ tiếp cận."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Bật TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Thao tác nhấn và giữ cả hai phím âm lượng trong vài giây sẽ bật TalkBack, một trình đọc màn hình rất hữu ích cho những người bị khiếm thị hoặc có thị lực kém. TalkBack thay đổi hoàn toàn cách thiết bị của bạn hoạt động.\n\nBạn có thể chuyển phím tắt này thành một tính năng khác trong phần Cài đặt > Hỗ trợ tiếp cận."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Bật <xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Thao tác nhấn và giữ cả hai phím âm lượng trong vài giây sẽ bật <xliff:g id="SERVICE">%1$s</xliff:g>, một tính năng hỗ trợ tiếp cận. Việc bật tính năng này có thể thay đổi cách thiết bị của bạn hoạt động.\n\nBạn có thể chuyển phím tắt này thành một tính năng khác trong phần Cài đặt > Hỗ trợ tiếp cận."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Bật"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Không bật"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Cho phép <xliff:g id="SERVICE">%1$s</xliff:g> toàn quyền kiểm soát thiết bị của bạn?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Nếu bạn bật <xliff:g id="SERVICE">%1$s</xliff:g>, thiết bị của bạn sẽ không dùng phương thức khóa màn hình để tăng cường mã hóa dữ liệu."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Bạn chỉ nên cấp toàn quyền kiểm soát cho những ứng dụng trợ giúp mình khi cần hỗ trợ tiếp cận, chứ không nên cấp cho hầu hết các ứng dụng."</string> @@ -1652,10 +1639,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Cho phép"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Từ chối"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Nhấn vào một tính năng để bắt đầu sử dụng:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Chọn các tính năng để dùng với nút hỗ trợ tiếp cận"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Chọn các tính năng để dùng với phím tắt là phím âm lượng"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> đã bị tắt"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Chỉnh sửa phím tắt"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Xong"</string> @@ -1663,23 +1648,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sử dụng phím tắt"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Đảo màu"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Sửa màu"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Bạn đã giữ các phím âm lượng. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> đã bật."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Bạn đã giữ các phím âm lượng. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> đã tắt."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Nhấn và giữ đồng thời cả hai phím âm lượng trong 3 giây để sử dụng <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Chọn một tính năng để dùng khi bạn nhấn nút hỗ trợ tiếp cận:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Chọn một tính năng để dùng với cử chỉ hỗ trợ tiếp cận (dùng 2 ngón tay vuốt lên từ cuối màn hình):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Chọn một tính năng để dùng với cử chỉ hỗ trợ tiếp cận (dùng 3 ngón tay vuốt lên từ cuối màn hình):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Để chuyển đổi giữa các tính năng, hãy chạm và giữ nút hỗ trợ tiếp cận."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Để chuyển đổi giữa các tính năng, hãy dùng 2 ngón tay vuốt lên và giữ."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Để chuyển đổi giữa các tính năng, hãy dùng 3 ngón tay vuốt lên và giữ."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Phóng to"</string> <string name="user_switched" msgid="7249833311585228097">"Người dùng hiện tại <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Đang chuyển sang <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2027,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> tệp</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> tệp</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Không có người nào được đề xuất để chia sẻ"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Danh sách ứng dụng"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Ứng dụng này chưa được cấp quyền ghi âm nhưng vẫn có thể ghi âm thông qua thiết bị USB này."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Màn hình chính"</string> @@ -2087,222 +2063,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Các ứng dụng công việc không thể mở nội dung này"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Các ứng dụng cá nhân không hỗ trợ nội dung này"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Các ứng dụng cá nhân không thể mở nội dung này"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Ghi âm hoặc phát âm thanh trong cuộc gọi điện thoại"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Cho phép ứng dụng này ghi âm hoặc phát âm thanh trong cuộc gọi điện thoại khi được chỉ định làm ứng dụng trình quay số mặc định."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Mã PIN mở khóa mạng SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Mã PIN mở khóa tập con của mạng SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Mã PIN mở khóa SIM corporate"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Mã PIN mở khóa nhà cung cấp dịch vụ SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Mã PIN mở khóa SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Nhập mã PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Nhập mã PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Nhập mã PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Nhập mã PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Nhập mã PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Mã PIN mở khóa RUIM network1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Mã PIN mở khóa RUIM network2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Mã PIN mở khóa RUIM hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Mã PIN mở khóa RUIM corporate"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Mã PIN mở khóa nhà cung cấp dịch vụ RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Mã PIN mở khóa RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Nhập mã PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Nhập mã PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Nhập mã PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Nhập mã PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Nhập mã PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Nhập mã PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Mã PIN mở khóa SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Mã PIN mở khóa SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Mã PIN mở khóa ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Mã PIN mở khóa IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Mã PIN mở khóa nhà cung cấp dịch vụ tập con của mạng"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Đang yêu cầu mở khóa mạng SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Đang yêu cầu mở khóa tập con của mạng SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Đang yêu cầu mở khóa nhà cung cấp dịch vụ SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Đang yêu cầu mở khóa SIM corporate…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Đang yêu cầu mở khóa mã PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Đang yêu cầu mở khóa mã PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Đang yêu cầu mở khóa mã PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Đang yêu cầu mở khóa mã PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Đang yêu cầu mở khóa mã PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Đang yêu cầu mở khóa SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Đang yêu cầu mở khóa RUIM network1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Đang yêu cầu mở khóa RUIM network2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Đang yêu cầu mở khóa RUIM hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Đang yêu cầu mở khóa nhà cung cấp dịch vụ RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Đang yêu cầu mở khóa RUIM corporate…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Đang yêu cầu mở khóa SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Đang yêu cầu mở khóa SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Đang yêu cầu mở khóa ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Đang yêu cầu mở khóa IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Đang yêu cầu mở khóa nhà cung cấp dịch vụ tập con của Mạng…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Đang yêu cầu mở khóa RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Đang yêu cầu mở khóa mã PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Đang yêu cầu mở khóa mã PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Đang yêu cầu mở khóa mã PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Đang yêu cầu mở khóa mã PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Đang yêu cầu mở khóa mã PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Đang yêu cầu mở khóa mã PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Yêu cầu mở khóa Mạng SIM không thành công."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Yêu cầu mở khóa Tập con của mạng SIM không thành công."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Yêu cầu mở khóa Nhà cung cấp dịch vụ SIM không thành công."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Yêu cầu mở khóa SIM Corporate không thành công."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Yêu cầu mở khóa SIM không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Yêu cầu mở khóa RUIM Network1 không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Yêu cầu mở khóa RUIM Network2 không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Yêu cầu mở khóa RUIM Hrpd không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Yêu cầu mở khóa RUIM Corporate không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Yêu cầu mở khóa Nhà cung cấp dịch vụ RUIM không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Yêu cầu mở khóa RUIM không thành công."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Mở khóa mã PUK không thành công."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Mở khóa mã PUK không thành công."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Mở khóa mã PUK không thành công."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Mở khóa mã PUK không thành công."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Mở khóa mã PUK không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Mở khóa mã PUK không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Mở khóa mã PUK không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Mở khóa mã PUK không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Mở khóa mã PUK không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Mở khóa mã PUK không thành công."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Mở khóa mã PUK không thành công."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Yêu cầu mở khóa SPN không thành công."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Yêu cầu mở khóa SP Equivalent Home PLMN không thành công."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Yêu cầu mở khóa ICCID không thành công."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Yêu cầu mở khóa IMPI không thành công."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Yêu cầu mở khóa nhà cung cấp dịch vụ tập con của mạng không thành công."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Mở khóa Mạng SIM thành công."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Mở khóa Tập con của mạng SIM thành công."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Mở khóa Nhà cung cấp dịch vụ SIM thành công."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Mở khóa SIM Corporate thành công."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Mở khóa SIM thành công."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Mở khóa RUIM Network1 thành công."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Mở khóa RUIM Network2 thành công."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Mở khóa RUIM Hrpd thành công."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Mở khóa Nhà cung cấp dịch vụ RUIM thành công."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Mở khóa RUIM Corporate thành công."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Mở khóa RUIM thành công."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Mở khóa mã PUK thành công."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Mở khóa mã PUK thành công."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Mở khóa mã PUK thành công."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Mở khóa mã PUK thành công."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Mở khóa mã PUK thành công."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Mở khóa mã PUK thành công."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Mở khóa mã PUK thành công."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Mở khóa mã PUK thành công."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Mở khóa mã PUK thành công."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Mở khóa mã PUK thành công."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Mở khóa mã PUK thành công."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Mở khóa SPN thành công."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Mở khóa SP Equivalent Home PLMN thành công."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Mở khóa ICCID thành công."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Mở khóa IMPI thành công."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Mở khóa nhà cung cấp dịch vụ tập con của mạng thành công."</string> </resources> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 39b40c3b21ff..71005464b0f5 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"管理员已将该设备开放给个人使用"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"设备为受管理设备"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"贵单位会管理该设备,且可能会监控网络流量。点按即可了解详情。"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"您的管理员已更改位置信息设置"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"点按即可查看您的位置信息设置。"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"应用可以访问您的位置信息"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"与您的 IT 管理员联系即可了解详情"</string> <string name="country_detector" msgid="7023275114706088854">"国家/地区检测器"</string> <string name="location_service" msgid="2439187616018455546">"位置信息服务"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"传感器通知服务"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"系统将清空您的设备"</string> <string name="factory_reset_message" msgid="2657049595153992213">"无法使用管理应用,系统现在将清空您的设备。\n\n如有疑问,请与您所在单位的管理员联系。"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"“<xliff:g id="OWNER_APP">%s</xliff:g>”已停用打印功能。"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"取消屏蔽个人应用"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"应用将于明日被屏蔽"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"您的 IT 管理员不允许工作资料的暂停时间超过 <xliff:g id="DAYS">%1$d</xliff:g> 天"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"开启工作资料"</string> <string name="me" msgid="6207584824693813140">"我"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"平板电脑选项"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV 选项"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"手机选项"</string> <string name="global_action_lock" msgid="6949357274257655383">"屏幕锁定"</string> <string name="global_action_power_off" msgid="4404936470711393203">"关机"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"电源"</string> + <string name="global_action_restart" msgid="4678451019561687074">"重启"</string> <string name="global_action_emergency" msgid="1387617624177105088">"紧急呼救"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"错误报告"</string> <string name="global_action_logout" msgid="6093581310002476511">"结束会话"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"获取额外的位置信息提供程序命令"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"允许该应用使用其他的位置信息提供程序命令。此权限使该应用可以干扰GPS或其他位置信息源的运作。"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"只能在前台获取精确的位置信息"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"此应用只有在前台运行时才能获取您的精确位置信息。您的设备必须支持并开启位置信息服务,此应用才能使用这些服务。这可能会增加耗电量。"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"当您使用此应用时,此应用可以通过位置信息服务获取您的确切位置信息。您必须开启设备的位置信息服务,此应用才能获取位置信息。这可能会增加耗电量。"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"只有在前台运行时才能获取大致位置信息"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"此应用只有在前台运行时才能获取您的大致位置信息。您的设备必须支持并开启位置信息服务,此应用才能使用这些服务。"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"当您使用此应用时,此应用可以通过位置信息服务获取您的大致位置信息。您必须开启设备的位置信息服务,此应用才能获取位置信息。"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"在后台使用位置信息"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"此应用不仅在前台运行时可以获取位置信息,在后台运行时也能获取位置信息。"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"即使您并未使用此应用,此应用也可以随时访问位置信息。"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"更改您的音频设置"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"允许该应用修改全局音频设置,例如音量和用于输出的扬声器。"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"录音"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"拍摄照片和视频"</string> <string name="permdesc_camera" msgid="1354600178048761499">"此应用可随时使用相机拍摄照片和录制视频。"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"要拍照或录制视频,请允许应用或服务访问系统相机"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"这个具有特权的系统应用随时可以使用系统相机拍照及录制视频。另外,应用还需要获取 android.permission.CAMERA 权限"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"允许应用或服务接收与打开或关闭摄像头设备有关的回调。"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"此应用可在任何摄像头设备(被某些应用)打开或关闭时收到相应回调。"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"控制振动"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"允许应用控制振动器。"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"允许该应用访问振动器状态。"</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"正在检查当前内容"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"新的<xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"点按即可进行设置"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"可用于传输照片和媒体文件"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g>出现问题"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"点按即可修正问题"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g>已损坏。选择即可进行修正。"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"<xliff:g id="NAME">%s</xliff:g>不受支持"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"该设备不支持此<xliff:g id="NAME">%s</xliff:g>。点按即可使用支持的格式进行设置。"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"此设备不支持该<xliff:g id="NAME">%s</xliff:g>。选择即可使用支持的格式进行设置。"</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"本设备不支持此<xliff:g id="NAME">%s</xliff:g>。"</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g>已意外移除"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"请先弹出媒体,再将其移除,以防内容丢失"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g>已被移除"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要将音量调高到建议的音量以上吗?\n\n长时间保持高音量可能会损伤听力。"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用无障碍快捷方式吗?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"启用这项快捷方式后,同时按下两个音量按钮 3 秒钟即可启动无障碍功能。"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"要开启无障碍功能吗?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"同时按住两个音量键几秒钟,即可开启无障碍功能。这样做可能会改变您设备的工作方式。\n\n当前功能:\n<xliff:g id="SERVICE">%1$s</xliff:g>\n您可以在“设置”>“无障碍”中更改所选功能。"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"要开启 TalkBack 吗?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"同时按住两个音量键几秒钟,即可开启 TalkBack 屏幕阅读器。对盲人和视力不佳者而言,这项功能非常实用。TalkBack 会完全改变您设备的工作方式。\n\n您可以在“设置”>“无障碍”中将此快捷方式更改为开启另一项功能。"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"要开启<xliff:g id="SERVICE">%1$s</xliff:g>吗?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"同时按住两个音量键几秒钟,即可开启<xliff:g id="SERVICE">%1$s</xliff:g>无障碍功能。这样做可能会改变您设备的工作方式。\n\n您可以在“设置”>“无障碍”中将此快捷方式更改为开启另一项功能。"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"开启"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"不开启"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"要允许<xliff:g id="SERVICE">%1$s</xliff:g>完全控制您的设备吗?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"如果您开启<xliff:g id="SERVICE">%1$s</xliff:g>,您的设备将无法使用屏幕锁定功能来增强数据加密效果。"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"对于能满足您的无障碍功能需求的应用,可授予其完全控制权限;但对大部分应用来说,都不适合授予此权限。"</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"允许"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"拒绝"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"点按相应功能即可开始使用:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"选择可通过“无障碍”按钮使用的功能"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"选择可通过音量键快捷方式使用的功能"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"已关闭<xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"修改快捷方式"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"完成"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用快捷方式"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"颜色反转"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色彩校正"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"按住音量键。<xliff:g id="SERVICE_NAME">%1$s</xliff:g>已开启。"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"按住音量键。<xliff:g id="SERVICE_NAME">%1$s</xliff:g>已关闭。"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"同时按住两个音量键 3 秒钟即可使用 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"选择点按“无障碍”按钮后要使用的功能:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"选择要搭配无障碍手势(用两根手指从屏幕底部向上滑动)使用的功能:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"选择要搭配无障碍手势(用三根手指从屏幕底部向上滑动)使用的功能:"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"轻触并按住“无障碍”按钮,即可在多项功能之间切换。"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"用两根手指向上滑动并按住,即可在多项功能之间切换。"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"用三根手指向上滑动并按住,即可在多项功能之间切换。"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"放大功能"</string> <string name="user_switched" msgid="7249833311585228097">"当前用户是<xliff:g id="NAME">%1$s</xliff:g>。"</string> <string name="user_switching_message" msgid="1912993630661332336">"正在切换为<xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> 个文件</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> 个文件</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"没有任何推荐的分享对象"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"应用列表"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"此应用未获得录音权限,但能通过此 USB 设备录制音频。"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"主屏幕"</string> @@ -2073,249 +2048,126 @@ <string name="resolver_work_tab" msgid="2690019516263167035">"工作"</string> <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"个人视图"</string> <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"工作视图"</string> - <!-- no translation found for resolver_cant_share_with_work_apps (637686613606502219) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_work_apps_explanation (3332302070341130545) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps (2455757966397563223) --> - <skip /> - <!-- no translation found for resolver_cant_access_work_apps_explanation (3626983885525445790) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps (3079139799233316203) --> - <skip /> - <!-- no translation found for resolver_cant_share_with_personal_apps_explanation (2959282422751315171) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps (648291604475669395) --> - <skip /> - <!-- no translation found for resolver_cant_access_personal_apps_explanation (2298773629302296519) --> - <skip /> - <!-- no translation found for resolver_turn_on_work_apps (884910835250037247) --> - <skip /> + <string name="resolver_cant_share_with_work_apps" msgid="637686613606502219">"无法通过工作应用分享此内容"</string> + <string name="resolver_cant_share_with_work_apps_explanation" msgid="3332302070341130545">"您的 IT 管理员不允许您通过工作资料中的应用分享此内容"</string> + <string name="resolver_cant_access_work_apps" msgid="2455757966397563223">"无法通过工作应用打开此内容"</string> + <string name="resolver_cant_access_work_apps_explanation" msgid="3626983885525445790">"您的 IT 管理员不允许您通过工作资料中的应用打开此内容"</string> + <string name="resolver_cant_share_with_personal_apps" msgid="3079139799233316203">"无法通过个人应用分享此内容"</string> + <string name="resolver_cant_share_with_personal_apps_explanation" msgid="2959282422751315171">"您的 IT 管理员不允许您通过个人资料中的应用分享此内容"</string> + <string name="resolver_cant_access_personal_apps" msgid="648291604475669395">"无法通过个人应用打开此内容"</string> + <string name="resolver_cant_access_personal_apps_explanation" msgid="2298773629302296519">"您的 IT 管理员不允许您通过个人资料中的应用打开此内容"</string> + <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"工作资料已暂停使用"</string> <string name="resolver_switch_on_work" msgid="2873009160846966379">"开启"</string> - <!-- no translation found for resolver_no_work_apps_available_share (7933949011797699505) --> - <skip /> - <!-- no translation found for resolver_no_work_apps_available_resolve (1244844292366099399) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_share (5639102815174748732) --> - <skip /> - <!-- no translation found for resolver_no_personal_apps_available_resolve (5120671970531446978) --> - <skip /> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"录制或播放电话通话音频"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"允许此应用在被指定为默认拨号器应用时录制或播放电话通话音频。"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="resolver_no_work_apps_available_share" msgid="7933949011797699505">"任何工作应用都不支持此内容"</string> + <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"任何工作应用都无法打开此内容"</string> + <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"任何个人应用都不支持此内容"</string> + <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"任何个人应用都无法打开此内容"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM 网络解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM 网络子集解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM 企业解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM 服务提供商解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM 解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"输入 PUK 码"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"输入 PUK 码"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"输入 PUK 码"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"输入 PUK 码"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"输入 PUK 码"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM 网络 1 解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM 网络 2 解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM hrpd 解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM 企业解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM 服务提供商解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM 解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"输入 PUK 码"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"输入 PUK 码"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"输入 PUK 码"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"输入 PUK 码"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"输入 PUK 码"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"输入 PUK 码"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN 解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN 解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID 解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI 解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"网络子集服务提供商解锁 PIN 码"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"正在请求 SIM 网络解锁…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"正在请求 SIM 网络子集解锁…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"正在请求 SIM 服务提供商解锁…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"正在请求 SIM 企业解锁…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"正在请求 PUK 码解锁…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"正在请求 PUK 码解锁…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"正在请求 PUK 码解锁…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"正在请求 PUK 码解锁…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"正在请求 PUK 码解锁…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"正在请求 SIM 解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"正在请求 RUIM 网络 1 解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"正在请求 RUIM 网络 2 解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"正在请求 RUIM hrpd 解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"正在请求 RUIM 服务提供商解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"正在请求 RUIM 企业解锁…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"正在请求 SPN 解锁…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"正在请求 SP Equivalent Home PLMN 解锁…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"正在请求 ICCID 解锁…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"正在请求 IMPI 解锁…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"正在请求网络子集服务提供商解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"正在请求 RUIM 解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"正在请求 PUK 码解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"正在请求 PUK 码解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"正在请求 PUK 码解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"正在请求 PUK 码解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"正在请求 PUK 码解锁…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"正在请求 PUK 码解锁…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM 网络解锁请求失败。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM 网络子集解锁请求失败。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM 服务提供商解锁请求失败。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM 企业解锁请求失败。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM 解锁请求失败。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM 网络 1 解锁请求失败。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM 网络 2 解锁请求失败。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd 解锁请求失败。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM 企业解锁请求失败。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM 服务提供商解锁请求失败。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM 解锁请求失败。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK 码解锁失败。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK 码解锁失败。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK 码解锁失败。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK 码解锁失败。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK 码解锁失败。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK 码解锁失败。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK 码解锁失败。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK 码解锁失败。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK 码解锁失败。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK 码解锁失败。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK 码解锁失败。"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN 解锁请求失败。"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN 解锁请求失败。"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID 解锁请求失败。"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI 解锁请求失败。"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"网络子集服务提供商解锁请求失败。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM 网络解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM 网络子集解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM 服务提供商解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM 企业解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM 解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM 网络 1 解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM 网络 2 解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd 解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM 服务提供商解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM 企业解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM 解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK 码解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK 码解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK 码解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK 码解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK 码解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK 码解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK 码解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK 码解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK 码解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK 码解锁成功。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK 码解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN 解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN 解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID 解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI 解锁成功。"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"网络子集服务提供商解锁成功。"</string> </resources> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index a698d260f20f..3ccadf10206a 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"管理員已開放裝置供個人使用"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"裝置已受管理"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"您的機構會管理此裝置,並可能會監控網絡流量。輕按即可瞭解詳情。"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"您的管理員變更了位置設定"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"輕按即可查看位置設定。"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"應用程式可存取您的位置"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"請聯絡您的 IT 管理員以瞭解詳情"</string> <string name="country_detector" msgid="7023275114706088854">"國家/地區偵測器"</string> <string name="location_service" msgid="2439187616018455546">"定位服務"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"感應器通知服務"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"您的裝置將被清除"</string> <string name="factory_reset_message" msgid="2657049595153992213">"無法使用管理員應用程式。系統會現在清除您的裝置。\n\n如有任何疑問,請聯絡您的機構管理員。"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"「<xliff:g id="OWNER_APP">%s</xliff:g>」暫停了列印。"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"解除封鎖您的個人應用程式"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"應用程式將於明天封鎖"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT 管理員不允許您的工作設定檔暫停使用超過 <xliff:g id="DAYS">%1$d</xliff:g> 天"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"啟用工作設定檔"</string> <string name="me" msgid="6207584824693813140">"我本人"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"平板電腦選項"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV 選項"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"手機選項"</string> <string name="global_action_lock" msgid="6949357274257655383">"螢幕鎖定"</string> <string name="global_action_power_off" msgid="4404936470711393203">"關機"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"電源"</string> + <string name="global_action_restart" msgid="4678451019561687074">"重新開機"</string> <string name="global_action_emergency" msgid="1387617624177105088">"緊急"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"錯誤報告"</string> <string name="global_action_logout" msgid="6093581310002476511">"結束工作階段"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"接收額外的位置提供者指令"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"允許應用程式存取額外的位置提供者指令。這項設定可能會使應用程式干擾 GPS 或其他位置來源的運作。"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"只在前景存取精確位置"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"此應用程式只可在前景執行時獲取您的確實位置資訊。您的裝置必須支援並已啟用定位服務,應用程式才能使用此功能。不過,這樣做可能會增加耗電量。"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"使用此應用程式時,應用程式可透過定位服務獲取您的精確位置。您的裝置必須開啟定位服務,才能讓應用程式獲取位置。這可能會增加電池用量。"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"只在前景存取大概位置"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"此應用程式只可在前景執行時獲取您的大概位置資訊。您的裝置必須支援並已啟用定位服務,應用程式才能使用此功能。"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"使用此應用程式時,應用程式可透過定位服務獲取您的大概位置。您的裝置必須開啟定位服務,才能讓應用程式獲取位置。"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"在背景存取位置資訊"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"此應用程式除了可在前景存取位置資訊外,亦可在背景中存取位置。"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"即使您不使用此應用程式,它仍可隨時存取位置。"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"更改音效設定"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"允許應用程式修改全域音頻設定,例如音量和用於輸出的喇叭。"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"錄製音效"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"拍照和拍攝影片"</string> <string name="permdesc_camera" msgid="1354600178048761499">"此應用程式可以隨時使用相機拍照和攝錄。"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"允許應用程式或服務存取系統相機來拍照和攝錄"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"這個獲特別權限的系統應用程式可以在任何時候使用系統相機來拍照和攝錄。此外,應用程式亦需要 android.permission.CAMERA 權限"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"允許應用程式或服務接收相機裝置開啟或關閉的相關回電。"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"當任何相機裝置在開啟 (由應用程式) 或關閉時,此應用程式就能接收回電。"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"控制震動"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"允許應用程式控制震動。"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"允許應用程式存取震動狀態。"</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"正在檢查目前的內容"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"新 <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"輕按即可設定"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"用於轉移相片和媒體"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g>發生問題"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"輕按即可修正問題"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g>已損毀。選取即可修正。"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"不支援的 <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"此裝置並不支援此 <xliff:g id="NAME">%s</xliff:g>。輕按即可在支援的格式設定。"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"這部裝置不支援此 <xliff:g id="NAME">%s</xliff:g>。選取即可使用支援的格式設定。"</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"這部裝置不支援此 <xliff:g id="NAME">%s</xliff:g>。"</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g>被意外移除"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"請先退出媒體,再將其移除,以免內容遺失。"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"已移除 <xliff:g id="NAME">%s</xliff:g>"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要調高音量 (比建議的音量更大聲) 嗎?\n\n長時間聆聽高分貝音量可能會導致您的聽力受損。"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用無障礙功能快速鍵嗎?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"啟用快速鍵後,同時按住音量按鈕 3 秒便可啟用無障礙功能。"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"要啟用無障礙功能嗎?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"同時按下兩個音量鍵幾秒,以開啟無障礙功能。這可能會變更裝置的運作。\n\n目前功能:\n<xliff:g id="SERVICE">%1$s</xliff:g>\n您可在「設定」>「無障礙功能」中變更所選功能。"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"要開啟 TalkBack 嗎?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"同時按下兩個音量鍵幾秒以開啟 TalkBack。此螢幕閱讀器對盲人或低視力人士非常實用。TalkBack 會完全變更裝置的運作。\n\n您可在「設定」>「無障礙功能」中變更此快速鍵。"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"要啟用 <xliff:g id="SERVICE">%1$s</xliff:g> 嗎?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"同時按下兩個音量鍵幾秒,以開啟 <xliff:g id="SERVICE">%1$s</xliff:g> 無障礙功能。這可能會變更裝置的運作。\n\n您可在「設定」>「無障礙功能」中變更此快速鍵。"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"開啟"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"不要開啟"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"要允許 <xliff:g id="SERVICE">%1$s</xliff:g> 完全控制您的裝置嗎?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"如果您開啟 <xliff:g id="SERVICE">%1$s</xliff:g>,裝置將無法使用螢幕鎖定功能加強資料加密。"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"為您提供所需無障礙功能的應用程式有權完全控制您的裝置,但大部分應用程式均沒有此權限。"</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"允許"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"拒絕"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"輕按即可開始使用所需功能:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"選擇要配搭無障礙功能按鈕使用的功能"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"選擇要配搭音量快速鍵使用的功能"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> 已關閉"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"編輯捷徑"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"完成"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用快速鍵"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"色彩反轉"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色彩校正"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 已開啟。"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量鍵。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 已關閉。"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"㩒住兩個音量鍵 3 秒就可以用 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"請選擇輕按「無障礙功能」按鈕時使用的功能:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"請選擇要配搭無障礙手勢 (使用兩隻手指從螢幕底部向上滑動) 使用的功能:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"請選擇要配搭無障礙手勢 (使用三隻手指從螢幕底部向上滑動) 使用的功能:"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"如要在功能之間切換,請按住無障礙功能按鈕。"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"如要在功能之間切換,請使用兩隻手指向上滑動並按住。"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"如要在功能之間切換,請使用三隻手指向上滑動並按住。"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"放大"</string> <string name="user_switched" msgid="7249833311585228097">"目前的使用者是<xliff:g id="NAME">%1$s</xliff:g>。"</string> <string name="user_switching_message" msgid="1912993630661332336">"正在切換至<xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> 個檔案</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> 個檔案</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"沒有任何建議的使用者可分享"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"應用程式清單"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"此應用程式尚未獲授予錄音權限,但可透過此 USB 裝置記錄音訊。"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"主頁"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"沒有可開啟此內容的工作應用程式"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"沒有可支援此內容的個人應用程式"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"沒有可開啟此內容的個人應用程式"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"在電話通話中錄音或播放音訊"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"如將此應用程式指定為預設撥號器應用程式,則允許應用程式在電話通話中錄音或播放音訊。"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM 網絡解鎖 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM 網絡子集解鎖 PIN"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM 公司解鎖 PIN"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM 服務供應商解鎖 PIN"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM 解鎖 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM Network1 解鎖 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM Network2 解鎖 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM Hrpd 解鎖 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM 公司解鎖 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM 服務供應商解鎖 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM 解鎖 PIN"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN 解鎖 PIN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN 解鎖 PIN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID 解鎖 PIN"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI 解鎖 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"網絡子集服務供應商解鎖 PIN"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"正在要求解鎖 SIM 網絡…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"正在要求解鎖 SIM 網絡子集…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"正在要求解鎖 SIM 服務供應商…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"正在要求解鎖 SIM 公司…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"正在要求解鎖 PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"正在要求解鎖 PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"正在要求解鎖 PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"正在要求解鎖 PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"正在要求解鎖 PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"正在要求解鎖 SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"正在要求解鎖 RUIM Network1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"正在要求解鎖 RUIM Network2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"正在要求解鎖 RUIM Hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"正在要求解鎖 RUIM 服務供應商…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"正在要求解鎖 RUIM 公司…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"正在要求解鎖 SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"正在要求解鎖 SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"正在要求解鎖 ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"正在要求解鎖 IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"正在要求解鎖網絡子集服務供應商…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"正在要求解鎖 RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"正在要求解鎖 PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"正在要求解鎖 PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"正在要求解鎖 PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"正在要求解鎖 PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"正在要求解鎖 PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"正在要求解鎖 PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM 網絡解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM 網絡子集解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM 服務供應商解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM 公司解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM Network1 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM Network2 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM 公司解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM 服務供應商解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"網絡子集服務供應商解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM 網絡解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM 網絡子集解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM 服務供應商解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM 公司解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM Network1 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM Network2 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM 服務供應商解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM 公司解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"網絡子集服務供應商解鎖成功。"</string> </resources> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index ad0d23966938..02aa9640c3ca 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"管理員將這部裝置開放給個人使用"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"裝置受到管理"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"貴機構會管理這個裝置,且可能監控網路流量。輕觸即可瞭解詳情。"</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"你的管理員變更了位置資訊設定"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"輕觸即可查看位置資訊設定。"</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"應用程式可存取你的位置資訊"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"如要瞭解詳情,請與你的 IT 管理員聯絡"</string> <string name="country_detector" msgid="7023275114706088854">"國家/地區偵測器"</string> <string name="location_service" msgid="2439187616018455546">"定位服務"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"感應器通知服務"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"你的裝置資料將遭到清除"</string> <string name="factory_reset_message" msgid="2657049595153992213">"無法使用管理應用程式,系統現在將清除你裝置中的資料。\n\n如有任何問題,請與貴機構的管理員聯絡。"</string> <string name="printing_disabled_by" msgid="3517499806528864633">"「<xliff:g id="OWNER_APP">%s</xliff:g>」已停用列印功能。"</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"解除封鎖個人應用程式"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"系統將於明天封鎖應用程式"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"IT 管理員不允許你暫停工作資料夾超過 <xliff:g id="DAYS">%1$d</xliff:g> 天"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"開啟工作資料夾"</string> <string name="me" msgid="6207584824693813140">"我"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"平板電腦選項"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV 選項"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"電話選項"</string> <string name="global_action_lock" msgid="6949357274257655383">"螢幕鎖定"</string> <string name="global_action_power_off" msgid="4404936470711393203">"關機"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"電源"</string> + <string name="global_action_restart" msgid="4678451019561687074">"重新啟動"</string> <string name="global_action_emergency" msgid="1387617624177105088">"緊急電話"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"錯誤報告"</string> <string name="global_action_logout" msgid="6093581310002476511">"結束"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"接收額外的位置提供者指令"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"允許應用程式存取額外位置資訊提供者指令。這項設定可能會造成應用程式干擾 GPS 或其他位置資訊來源的運作。"</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"僅可在前景中取得精確位置"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"這個應用程式只能在前景執行時取得你的確切位置。你必須在裝置上開啟定位服務,這個應用程式才能取得定位資訊。請注意,這麼做可能會增加耗電量。"</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"只有在你使用時,這個應用程式才能透過定位服務取得你的精確位置。你必須在裝置上開啟定位服務,這個應用程式才能取得位置資訊。這麼做可能會增加電池用量。"</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"僅可在前景中取得概略位置"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"這個應用程式只能在前景執行時取得你的概略位置。你必須在裝置上開啟定位服務,這個應用程式才能取得定位資訊。"</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"只有在你使用時,這個應用程式才能透過定位服務取得你的概略位置。你必須在裝置上開啟定位服務,這個應用程式才能取得位置資訊。"</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"在背景存取位置資訊"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"這個應用程式在前景和背景執行時,皆可取得位置資訊。"</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"這個應用程式隨時都能取得位置資訊 (包括未使用應用程式時)。"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"變更音訊設定"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"允許應用程式修改全域音訊設定,例如音量和用來輸出的喇叭。"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"錄製音訊"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"拍攝相片和影片"</string> <string name="permdesc_camera" msgid="1354600178048761499">"這個應用程式隨時可使用相機拍照及錄影。"</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"如要拍照或錄影,請允許應用程式或服務存取系統攝影機"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"這個具有特殊權限的系統應用程式隨時可以使用系統攝影機拍照及錄影。此外,你也必須將 android.permission.CAMERA 權限授予這個應用程式"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"允許應用程式或服務接收相機裝置開啟或關閉的相關回呼。"</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"當任何相機裝置在開啟 (由應用程式) 或關閉時,這個應用程式就能接收回呼。"</string> <string name="permlab_vibrate" msgid="8596800035791962017">"控制震動"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"允許應用程式控制震動。"</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"允許應用程式存取震動功能狀態。"</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"正在檢查目前的內容"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"新的 <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"輕觸即可進行設定"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"可用於傳輸相片和媒體"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g>發生問題"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"輕觸即可修正問題"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g>已損毀。選取即可進行修正。"</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"不支援的「<xliff:g id="NAME">%s</xliff:g>」"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"此裝置不支援這個 <xliff:g id="NAME">%s</xliff:g>。輕觸即可使用支援的格式進行設定。"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"此裝置不支援這個 <xliff:g id="NAME">%s</xliff:g>。選取即可使用支援的格式進行設定。"</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"這部裝置不支援這個「<xliff:g id="NAME">%s</xliff:g>」。"</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"意外移除「<xliff:g id="NAME">%s</xliff:g>」"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"請先退出媒體,再將其移除,以免內容遺失"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"已移除 <xliff:g id="NAME">%s</xliff:g>"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要調高音量,比建議的音量更大聲嗎?\n\n長時間聆聽高分貝音量可能會使你的聽力受損。"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用無障礙捷徑嗎?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"啟用捷徑功能,只要同時按下兩個音量按鈕 3 秒,就能啟動無障礙功能。"</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"要開啟無障礙功能嗎?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"同時按住音量調高鍵和調低鍵數秒,即可開啟無障礙功能。這麼做可能會改變裝置的運作方式。\n\n目前的功能:\n<xliff:g id="SERVICE">%1$s</xliff:g>\n你可以在 [設定] > [無障礙設定] 中變更所選功能。"</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"要開啟 TalkBack 嗎?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"同時按住音量調高鍵和調低鍵數秒,即可開啟 TalkBack 螢幕閱讀器。對失明和低視能人士而言,這項功能相當實用。TalkBack 會完全改變裝置的運作方式。\n\n你可以在 [設定] > [無障礙設定] 中變更這個快速鍵觸發的功能。"</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"要開啟「<xliff:g id="SERVICE">%1$s</xliff:g>」嗎?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"同時按住音量調高鍵和調低鍵數秒,即可開啟「<xliff:g id="SERVICE">%1$s</xliff:g>」無障礙功能。這麼做可能會改變裝置的運作方式。\n\n你可以在 [設定] > [無障礙設定] 中變更這個快速鍵觸發的功能。"</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"開啟"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"不要開啟"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"要將裝置的完整控制權授予「<xliff:g id="SERVICE">%1$s</xliff:g>」嗎?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"如果你開啟「<xliff:g id="SERVICE">%1$s</xliff:g>」,裝置將無法使用螢幕鎖定功能強化資料加密。"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"如果你有無障礙服務需求,可以將完整控制權授予具有相關功能的應用程式,但請勿將完整控制權授予大多數的應用程式。"</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"允許"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"拒絕"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"輕觸即可開始使用所需功能:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"選擇要搭配無障礙工具按鈕使用的功能"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"選擇要搭配音量快速鍵使用的功能"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"「<xliff:g id="SERVICE_NAME">%s</xliff:g>」已關閉"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"編輯捷徑"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"完成"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用捷徑"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"色彩反轉"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色彩校正"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」已開啟。"</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量鍵。「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」已關閉。"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"同時按住調低及調高音量鍵三秒即可使用「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"輕觸無障礙工具按鈕後,選擇你想使用的功能:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"選擇要搭配無障礙手勢 (用兩指從螢幕底部向上滑動) 使用的功能:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"選擇要搭配無障礙手勢 (用三指從螢幕底部向上滑動) 使用的功能:"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"如要切換不同的功能,請輕觸並按住無障礙工具按鈕。"</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"如要切換不同的功能,請用兩指向上滑動並按住。"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"如要切換不同的功能,請用三指向上滑動並按住。"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"放大"</string> <string name="user_switched" msgid="7249833311585228097">"目前的使用者是 <xliff:g id="NAME">%1$s</xliff:g>。"</string> <string name="user_switching_message" msgid="1912993630661332336">"正在切換至<xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="other">「<xliff:g id="FILE_NAME_2">%s</xliff:g>」及另外 <xliff:g id="COUNT_3">%d</xliff:g> 個檔案</item> <item quantity="one">「<xliff:g id="FILE_NAME_0">%s</xliff:g>」及另外 <xliff:g id="COUNT_1">%d</xliff:g> 個檔案</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"沒有建議的分享對象"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"應用程式清單"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"這個應用程式未取得錄製內容的權限,但可以透過這部 USB 裝置錄製音訊。"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"主螢幕"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"沒有可開啟這項內容的工作應用程式"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"沒有可支援這項內容的個人應用程式"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"沒有可開啟這項內容的個人應用程式"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"在通話期間錄製或播放音訊"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"將這個應用程式指派為預設撥號應用程式時,允許應用程式在通話期間錄製或播放音訊。"</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM 卡網路解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM 卡網路子集解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM 卡企業解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"SIM 卡服務供應商解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"SIM 卡解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"RUIM 網路 1 解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"RUIM 網路 2 解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"RUIM Hrpd 解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"RUIM 企業解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"RUIM 服務供應商解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"RUIM 解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"輸入 PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"SPN 解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"SP Equivalent Home PLMN 解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"ICCID 解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"IMPI 解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"網路子集服務供應商解鎖 PIN 碼"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"正在要求 SIM 卡網路解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"正在要求 SIM 卡網路子集解鎖 …"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"正在要求 SIM 卡服務供應商解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"正在要求 SIM 卡企業解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"正在要求 PUK 解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"正在要求 PUK 解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"正在要求 PUK 解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"正在要求 PUK 解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"正在要求 PUK 解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"正在要求 SIM 卡解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"正在要求 RUIM 網路 1 解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"正在要求 RUIM 網路 2 解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"正在要求 RUIM Hrpd 解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"正在要求 RUIM 服務供應商解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"正在要求 RUIM 企業解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"正在要求 SPN 解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"正在要求 SP Equivalent Home PLMN 解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"正在要求 ICCID 解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"正在要求 IMPI 解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"正在要求網路子集服務供應商解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"正在要求 RUIM 解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"正在要求 PUK 解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"正在要求 PUK 解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"正在要求 PUK 解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"正在要求 PUK 解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"正在要求 PUK 解鎖…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"正在要求 PUK 解鎖…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"SIM 卡網路解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"SIM 卡網路子集解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"SIM 卡服務供應商解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"SIM 卡企業解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"SIM 卡解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"RUIM 網路 1 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"RUIM 網路 2 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"RUIM Hrpd 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"RUIM 企業解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"RUIM 服務供應商解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"RUIM 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"PUK 解鎖失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"SPN 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"SP Equivalent Home PLMN 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"ICCID 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"IMPI 解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"網路子集服務供應商解鎖要求失敗。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"SIM 卡網路解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"SIM 卡網路子集解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"SIM 卡服務供應商解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"SIM 卡企業解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"SIM 卡解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"RUIM 網路 1 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"RUIM 網路 2 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"RUIM Hrpd 解鎖成功,"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"RUIM 服務供應商解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"RUIM 企業解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"RUIM 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"PUK 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"SPN 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"SP Equivalent Home PLMN 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"ICCID 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"IMPI 解鎖成功。"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"網路子集服務供應商解鎖成功。"</string> </resources> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 7c90a4fa20bb..c8e68392f16c 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -191,8 +191,8 @@ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Umphathi udedela idivayisi ngokusetshenziswa komuntu siqu"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Idivayisi iphethwe"</string> <string name="network_logging_notification_text" msgid="1327373071132562512">"Inhlangano yakho iphethe le divayisi futhi kungenzeka ingaqaphi ithrafikhi yenethiwekhi. Thephela imininingwane."</string> - <string name="location_changed_notification_title" msgid="4119726617105166830">"Izilungiselelo zendawo zishintshwe umphathi wakho"</string> - <string name="location_changed_notification_text" msgid="198907268219396399">"Thepha ukuze ubone izilungiselelo zakho zendawo."</string> + <string name="location_changed_notification_title" msgid="3620158742816699316">"Izinhlelo zokusebenza zingakwazi ukufinyelela endaweni yakho"</string> + <string name="location_changed_notification_text" msgid="7158423339982706912">"Xhumana nomphathi wakho we-IT ukuze ufunde kabanzi"</string> <string name="country_detector" msgid="7023275114706088854">"Isitholi Sezwe"</string> <string name="location_service" msgid="2439187616018455546">"Isevisi Yendawo"</string> <string name="sensor_notification_service" msgid="7474531979178682676">"Isevisi Yesaziso Senzwa"</string> @@ -200,14 +200,10 @@ <string name="factory_reset_warning" msgid="6858705527798047809">"Idivayisi yakho izosulwa"</string> <string name="factory_reset_message" msgid="2657049595153992213">"Uhlelo lokusebenza lomlawuli alikwazi ukusetshenziswa. Idivayisi yakho manje izosuswa.\n\nUma unemibuzo, xhumana nomlawuli wezinhlangano zakho."</string> <string name="printing_disabled_by" msgid="3517499806528864633">"Ukuphrinta kukhutshazwe nge-<xliff:g id="OWNER_APP">%s</xliff:g>."</string> - <!-- no translation found for personal_apps_suspended_title (4543693107104417750) --> - <skip /> - <!-- no translation found for personal_apps_suspended_tomorrow_title (6414440257969874914) --> - <skip /> - <!-- no translation found for personal_apps_suspended_text (8954038765131038226) --> - <skip /> - <!-- no translation found for personal_apps_suspended_turn_profile_on (4278188538997940785) --> - <skip /> + <string name="personal_apps_suspended_title" msgid="4543693107104417750">"Vula izinhlelo zakho zokusebenza zomuntu siqu"</string> + <string name="personal_apps_suspended_tomorrow_title" msgid="6414440257969874914">"Izinhlelo zokusebenza zizovinjelwa kusasa"</string> + <string name="personal_apps_suspended_text" msgid="8954038765131038226">"Umphathi wakho we-IT akavumeli ukuthi iphrofayela yakho yasemsebenzini imiswe okwesikhana izinsuku ezingaphezu kwezingu-<xliff:g id="DAYS">%1$d</xliff:g>"</string> + <string name="personal_apps_suspended_turn_profile_on" msgid="4278188538997940785">"Vula iphrofayela yomsebenzi"</string> <string name="me" msgid="6207584824693813140">"Mina"</string> <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Okukhethwa kukho kwethebhulethi"</string> <string name="power_dialog" product="tv" msgid="7792839006640933763">"Izinketho ze-Android TV"</string> @@ -241,10 +237,8 @@ <string name="global_actions" product="default" msgid="6410072189971495460">"Okukhethwa kukho kwefoni"</string> <string name="global_action_lock" msgid="6949357274257655383">"Ukuvala isikrini"</string> <string name="global_action_power_off" msgid="4404936470711393203">"Vala amandla"</string> - <!-- no translation found for global_action_power_options (1185286119330160073) --> - <skip /> - <!-- no translation found for global_action_restart (4678451019561687074) --> - <skip /> + <string name="global_action_power_options" msgid="1185286119330160073">"Amandla"</string> + <string name="global_action_restart" msgid="4678451019561687074">"Qala kabusha"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Isimo esiphuthumayo"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Umbiko wephutha"</string> <string name="global_action_logout" msgid="6093581310002476511">"Phothula isikhathi"</string> @@ -428,11 +422,11 @@ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"finyelela kweminye imiyalo yokunikeza indawo"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ivumela uhlelo lokusebenza ukufinyelela imiyalo eyengeziwe yabahlinzeki bendawo. Lokhu kungase kuvumele uhlelo lokusebenza ukuthi liphazamisane nomsebenzi we-GPS noma eminye imithombo yendawo."</string> <string name="permlab_accessFineLocation" msgid="6426318438195622966">"finyelela indawo eqondile kuphela phambili"</string> - <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Lolu hlelo lokusebenza lungakutholela indawo eqondile kuphela uma liphambili. Amasevisi endawo kufanele avulwe futhi atholakale kudivayisi yakho ukuze uhlelo lokusebenza lukwazi ukuwasebenzisa. Lokhu kungakhulisa ukusebenza kwebhethri."</string> + <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Lolu hlelo lokusebenza lungakwazi ukuthola indawo yakho yangempela kusuka kumasevisi wendawo ngenkathi uhlelo lokusebenza lusebenza. Amasevisi wendawo wedivayisi yakho kufanele avulwe ukuze uhlelo lokusebenza luthole indawo. Lokhu kungase kukhulise ukusetshenziswa kwebhethri."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"finyelela indawo enembile kuphela engaphambili"</string> - <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Lolu hlelo lokusebenza lungakutholela indawo enembile kuphela uma ingaphambili. Amasevisi endawo kumele avulwe futhi atholakale kudivayisi yakho ukuze uhlelo lokusebenza lukwazi ukuwasebenzisa."</string> + <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Lolu hlelo lokusebenza lungakwazi ukuthola cishe indawo yakho yangempela kusuka kumasevisi wendawo ngenkathi uhlelo lokusebenza lusebenza. Amasevisi wendawo wedivayisi yakho kufanele avulwe ukuze uhlelo lokusebenza luthole indawo."</string> <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"finyelela kundawo ngemuva"</string> - <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Lolu hlelo lokusebenza lungafinyelela indawo ngenkathi isebenza ngasemuva, ngokungeziwe ekufinyeleleni kwendawo yangaphambili."</string> + <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Lolu hlelo lokusebenza lungakwazi ukufinyelela indawo noma nini, ngisho noma uhlelo lokusebenza lungasebenzi."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"shintsha izilungiselelo zakho zomsindo"</string> <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Ivumela uhlelo lokusebenza ukushintsha izilungiselelo zomsindo we-global njengevolomu nokuthi isiphi isipika esisetshenziselwa okukhiphayo."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"qopha umsindo"</string> @@ -444,11 +438,9 @@ <string name="permlab_camera" msgid="6320282492904119413">"thatha izithombe namavidiyo"</string> <string name="permdesc_camera" msgid="1354600178048761499">"Lolu hlelo lokusebenza lungathatha izithombe futhi lirekhode amavidiyo lusebenzisa ikhamera noma kunini."</string> <string name="permlab_systemCamera" msgid="3642917457796210580">"Vumela uhlelo lokusebenza noma isevisi ukufinyelela kumakhamera wesistimu ukuze uthathe izithombe namavidiyo"</string> - <!-- no translation found for permdesc_systemCamera (5938360914419175986) --> - <skip /> + <string name="permdesc_systemCamera" msgid="5938360914419175986">"Lolu hlelo lokusebenza oluhle noma lwesistimu lingathatha izithombe futhi lirekhode amavidiyo lisebenzisa ikhamera yesistimu noma kunini. Idinga imvume ye-android.permission.CAMERA ukuthi iphathwe nawuhlelo lokusebenza"</string> <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Vumela uhlelo lokusebenza noma isevisi ukwamukela ukuphinda ufonelwe mayelana namadivayisi wekhamera avuliwe noma avaliwe."</string> - <!-- no translation found for permdesc_cameraOpenCloseListener (2002636131008772908) --> - <skip /> + <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Lolu hlelo lokusebenza lungakwazi ukuthola ukuphinda ufonelwe uma noma iyiphi idivayisi yekhamera ivulwa (ngephakheji yohlelo lokusebenza) noma ivalwa."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"lawula ukudlidliza"</string> <string name="permdesc_vibrate" msgid="8733343234582083721">"Ivumela uhlelo lokusebenza ukulawula isidlidlizi."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Ivumela uhlelo lokusebenza ukuthi lufinyelele kusimo sesidlidlizeli."</string> @@ -1350,13 +1342,16 @@ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Ukubuyekeza okuqukethwe kwamanje"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Okusha <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Thepha ukuze usethe"</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="8488046026389025694"></string> <string name="ext_media_ready_notification_message" msgid="777258143284919261">"Ukuze kudluliselwe izithombe nemidiya"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Inkinga ngo-<xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Thepha ukuze ulungise"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> yonakele. Khetha ukulungisa."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="5622514265490819212"></string> <string name="ext_media_unsupported_notification_title" msgid="4358280700537030333">"Akusekelwe <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_message" msgid="917738524888367560">"Le divayisi ayisekeli le <xliff:g id="NAME">%s</xliff:g>. Thepha ukuze usethe ngefomethi esekelwayo."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="7744945987775645685">"Le divayisi ayisekeli le <xliff:g id="NAME">%s</xliff:g>. Khetha ukuze usethe ngefomethi esekelwayo."</string> + <string name="ext_media_unsupported_notification_message" product="automotive" msgid="7657357085538772913">"Le divayisi ayisekeli le <xliff:g id="NAME">%s</xliff:g>."</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"I-<xliff:g id="NAME">%s</xliff:g> isuswe ngokungalindelekile"</string> <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Khipha imidiya ngaphambi kokususa ukuze ugweme ukulahlekelwa okuqukethwe"</string> <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> ususiwe"</string> @@ -1624,24 +1619,15 @@ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Khuphukisa ivolumu ngaphezu kweleveli enconyiwe?\n\nUkulalela ngevolumu ephezulu izikhathi ezide kungahle kulimaze ukuzwa kwakho."</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Sebenzisa isinqamuleli sokufinyelela?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Uma isinqamuleli sivuliwe, ukucindezela zombili izinkinobho zevolumu amasekhondi angu-3 kuzoqalisa isici sokufinyelela."</string> - <!-- no translation found for accessibility_shortcut_multiple_service_warning_title (8417489297036013065) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_warning (3740723309483706911) --> - <skip /> - <!-- no translation found for accessibility_shortcut_multiple_service_list (6935581470716541531) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning_title (3410100187167382427) --> - <skip /> - <!-- no translation found for accessibility_shortcut_talkback_warning (8412954203626349109) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning_title (2819109500943271385) --> - <skip /> - <!-- no translation found for accessibility_shortcut_single_service_warning (6363127705112844257) --> - <skip /> - <!-- no translation found for accessibility_shortcut_on (5463618449556111344) --> - <skip /> - <!-- no translation found for accessibility_shortcut_off (3651336255403648739) --> - <skip /> + <string name="accessibility_shortcut_multiple_service_warning_title" msgid="8417489297036013065">"Uvula izici zokufinyelela?"</string> + <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Ukubambela phansi bobabili okhiye bevolumu amasekhondi ambalwa kuvula izici zokufinyelela. Lokhu kungashintsha indlela idivayisi yakho esebenza ngayo.\n\nIzici zamanje:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nUngashintsha izici ezikhethiwe Kuzilungiselelo > Ukufinyeleleka."</string> + <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> + <string name="accessibility_shortcut_talkback_warning_title" msgid="3410100187167382427">"Uvula i-TalkBack?"</string> + <string name="accessibility_shortcut_talkback_warning" msgid="8412954203626349109">"Ukubambela phansi bobabili okhiye bevolumu amasekhondi ambalwa kuvula i-TalkBack, isifundi sesikrini esiwusizo kubantu abayizimpumputhe noma abanamehlo aluvindi. I-TalkBack ikushintsha ngokuphelele ukusebenza kwedivayisi yakho.\n\nUngashintshela lesi sinqamuleli kwesinye isici Kuzilungiselelo > Ukufinyeleleka."</string> + <string name="accessibility_shortcut_single_service_warning_title" msgid="2819109500943271385">"Vula i-<xliff:g id="SERVICE">%1$s</xliff:g>?"</string> + <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ukubambela phansi bobabili okhiye bevolumu amasekhondi ambalwa kuvula i-<xliff:g id="SERVICE">%1$s</xliff:g>, eyisici sokufinyelela Lokhu kungashintsha indlela idivayisi yakho esebenza ngayo.\n\nUngashintshela lesi sinqamuleli kwesinye isici Kuzilungiselelo > Ukufinyeleleka."</string> + <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Vula"</string> + <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ungavuli"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vumela i-<xliff:g id="SERVICE">%1$s</xliff:g> ukuthola ukulawula okuphelele kwedivayisi yakho?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Uma uvula i-<xliff:g id="SERVICE">%1$s</xliff:g>, idivayisi yakho ngeke isebenzise ukukhiya kwakho kwesikrini sakho ukuthuthukisa ukubethelwa kwedatha."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Ukulawula okugcwele kulungele izinhlelo zokusebenza ezikusiza ngezidingo zokufinyelela, kodwa hhayi izinhlelo zokusebenza eziningi."</string> @@ -1652,10 +1638,8 @@ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Vumela"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Phika"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Thepha isici ukuqala ukusisebenzisa:"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_button_title (239446795930436325) --> - <skip /> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (1077294237378645981) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Khetha izici ongazisebenzisa nenkinobho yokufinyeleleka"</string> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Khetha izici ongazisebenzisa nesinqamuleli sokhiye wevolumu"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"I-<xliff:g id="SERVICE_NAME">%s</xliff:g> ivaliwe"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Hlela izinqamuleli"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Kwenziwe"</string> @@ -1663,23 +1647,15 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sebenzisa isinqamuleli"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ukuguqulwa kombala"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Ukulungiswa kombala"</string> - <!-- no translation found for accessibility_shortcut_enabling_service (5473495203759847687) --> - <skip /> - <!-- no translation found for accessibility_shortcut_disabling_service (8675244165062700619) --> - <skip /> + <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ubambe okhiye bevolumu. I-<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ivuliwe."</string> + <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ubambe okhiye bevolumu. I-<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ivaliwe."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Cindezela uphinde ubambe bobabili okhiye bevolumu ngamasekhondi amathathu ukuze usebenzise i-<xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (8343213623338605305) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8742535972130563952) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (5211827854510660203) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (8853928358872550500) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (9196230728837090497) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (3425123684990193765) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Khetha isici ozosisebenzisa uma uthepha inkinobho yokufinyelela:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Khetha isici ozosisebenzisa ngokuthinta kokufinyeleleka (swayiphela phezulu kusukela ngaphansi kwesikrini ngeminwe emibili):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Khetha isici ozosisebenzisa ngokuthinta kokufinyeleleka (swayiphela phezulu kusukela phansi esikrinini ngeminwe emithathu):"</string> + <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Ukuze ushintshe phakathi kwezici, thinta uphinde ubambe inkinobho yokufinyeleleka."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Ukuze ushintshe phakathi kwezici, swayiphela phezulu ngeminwe emibili uphinde ubambe."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Ukuze ushintshe phakathi kwezici, swayiphela phezulu ngeminwe emithathu uphinde ubambe."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ukukhuliswa"</string> <string name="user_switched" msgid="7249833311585228097">"Umsebenzisi wamanje <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Ishintshela ku-<xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2050,8 +2026,7 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> amafayela</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> amafayela</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (1511722103987329028) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Ayinconyelwa ukuba abantu bayabelane"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Uhlu lwezinhlelo zokusebenza"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Lolu hlelo lokusebenza alunikeziwe imvume yokurekhoda kodwa lungathwebula umsindo ngale divayisi ye-USB."</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Ikhaya"</string> @@ -2087,222 +2062,112 @@ <string name="resolver_no_work_apps_available_resolve" msgid="1244844292366099399">"Azikho izinhlelo zokusebenza ezingavula lokhu okuqukethwe"</string> <string name="resolver_no_personal_apps_available_share" msgid="5639102815174748732">"Azikho izinhlelo zokusebenza ezingasekela lokhu okuqukethwe"</string> <string name="resolver_no_personal_apps_available_resolve" msgid="5120671970531446978">"Azikho izinhlelo zokusebenza zomuntu siqu ezingavula lokhu okuqukethwe"</string> - <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Rekhoda noma dlala umsindo kumakholi ocingo"</string> - <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Ivumela lolu hlelo lokusebenza, uma lunikezwe njengohlelo lokusebenza oluzenzakalelayo lokudayela, ukuze kurekhodwe noma kudlalwe umsindo kumakholi ocingo."</string> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ENTRY (8050953231914637819) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY (7164399703751688214) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ENTRY (4447629474818217364) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY (973059024670737358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ENTRY (4487435301206073787) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY (768060297218652809) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY (7129527319490548930) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY (2876126640607573252) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY (8952595089930109282) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ENTRY (3013902515773728996) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ENTRY (2974411408893410289) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ENTRY (687618528751880721) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ENTRY (6810596579655575381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ENTRY (2715929642540980259) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY (8557791623303951590) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ENTRY (7382468767274580323) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY (6730880791104286987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY (6432126539782267026) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY (1730510161529488920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY (3369885925003346830) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY (9129139686191167829) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY (2869929685874615358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ENTRY (1238663472392741771) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY (3988705848553894358) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ENTRY (6186770686690993200) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ENTRY (7043865376145617024) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ENTRY (6144227308185112176) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS (4233355366318061180) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS (6742563947637715645) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS (2033399698172403560) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS (4795977251920732254) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS (1090425878157254446) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS (6476898876518094438) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS (6006806734293747731) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (6546680489620881893) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS (3506845511000727015) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_IN_PROGRESS (6709169861932992750) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS (4013870911606478520) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS (9032651188219523434) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS (6584576506344491207) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS (830981927724888114) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS (7851790973098894802) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_IN_PROGRESS (1149560739586960121) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS (5708964693522116025) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS (7288103122966483455) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS (4036752174056147753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS (5089536274515338566) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS (6737197986936251958) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS (5658767775619998623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS (665978313257653727) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS (3857142652251836850) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS (2695664012344346788) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS (2695678959963807782) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS (1230605365926493599) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_ERROR (1924844017037151535) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR (3372797822292089708) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR (1878443146720411381) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_ERROR (7664778312218023192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_ERROR (2472944311643350302) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_ERROR (828089694480999120) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_ERROR (17619001007092511) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_ERROR (807214229604353614) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_ERROR (8644184447744175747) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR (3801002648649640407) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_ERROR (707397021218680753) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR (894358680773257820) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR (352466878146726991) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR (7353389721907138671) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR (2655263155490857920) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_ERROR (6903740900892931310) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR (5165901670447518687) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR (2856763216589267623) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR (817542684437829139) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR (5178635064113393143) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR (5391587926974531008) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR (4895494864493315868) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_ERROR (9017576601595353649) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR (1116993930995545742) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_ERROR (7559167306794441462) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_ERROR (2782926139511136588) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_ERROR (1890493954453456758) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUCCESS (4886243367747126325) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS (4053809277733513987) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS (8249342930499801740) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_SUCCESS (2339794542560381270) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_SUCCESS (6975608174152828954) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS (2846699261330463192) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS (5335414726057102801) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_SUCCESS (8868100318474971969) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS (6020936629725666932) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS (6944873647584595489) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_SUCCESS (2526483514124121988) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS (7662200333621664621) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS (2861223407953766632) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS (5345648571175243272) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS (3725278343103422466) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS (6998502547560297983) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS (8555433771162560361) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS (3555767296933606232) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS (6778051818199974237) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS (4080108758498911429) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS (7873675303000794343) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS (1763198215069819523) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SPN_SUCCESS (2053891977727320532) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS (8146602361895007345) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_ICCID_SUCCESS (8058678548991999545) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_IMPI_SUCCESS (2545608067978550571) --> - <skip /> - <!-- no translation found for PERSOSUBSTATE_SIM_NS_SP_SUCCESS (4352382949744625007) --> - <skip /> + <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Iphinikhodi yokuvula inethiwekhi ye-SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"Iphinikhodi yokuvula yesethi engaphansi yenethiwekhi ye-SIM"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"Iphinikhodi yokuvula yenkampani ye-SIM"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"Iphinikhodi yokuvula yomhlinzeki wesevisi ye-SIM"</string> + <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"Iphinikhodi yokuvula i-SIM"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Faka i-PUK"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Faka i-PUK"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Faka i-PUK"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Faka i-PUK"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Faka i-PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"Iphinikhodi yokuvula i-RUIM network1"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"Iphinikhodi yokuvula i-RUIM network2"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"Iphinikhodi yokuvula i-RUIM hrpd"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"Iphinikhodi yokuvula yenkampani ye-RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"Iphinikhodi yokuvula yomhlinzeki wesevisi ye-RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"Iphinikhodi yokuvula i-RUIM"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Faka i-PUK"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Faka i-PUK"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Faka i-PUK"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Faka i-PUK"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Faka i-PUK"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Faka i-PUK"</string> + <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"Iphinikhodi yokuvula i-SPN"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"Iphinikhodi yokuvula ye-SP Equivalent Home PLMN"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"Iphinikhodi yokuvula i-ICCID"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"Iphinikhodi yokuvula i-IMPI"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"Iphinikhodi yokuvula i-subset yenethiwekhi yomhlinzeki wesevisi"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Icela ukuvula inethiwekhi ye-SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Icela ukuvula i-subset yenethiwekhi ye-SIM…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Icela ukuvula ngomhlinzeki wesevisi ye-SIM…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Icela ukuvula ngenkampani ye-SIM…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Icela ukuvula nge-PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Icela ukuvula nge-PUK…"</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Icela ukuvula nge-PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Icela ukuvula nge-PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Icela ukuvula nge-PUK…"</string> + <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Icela ukuvula i-SIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Icela ukuvula i-RUIM network1…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Icela ukuvula i-RUIM network2…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Icela ukuvula i-RUIM hrpd…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Icela ukuvula ngomhlinzeki wesevisi ye-RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Icela ukuvula inkampani ye-RUIM…"</string> + <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Icela ukuvula i-SPN…"</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Icela ukuvula nge-SP Equivalent Home PLMN…"</string> + <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Icela ukuvula i-ICCID…"</string> + <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Icela ukuvula i-IMPI…"</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Icela ukuvula I-subset yenethiwekhi yomhlinzeki wesevisi…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Icela ukuvula i-RUIM…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Icela ukuvula nge-PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Icela ukuvula nge-PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Icela ukuvula nge-PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Icela ukuvula nge-PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Icela ukuvula nge-PUK…"</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Icela ukuvula nge-PUK…"</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Isicelo sokuvula Inethiwekhi ye-SIM asiphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Isicelo sokuvula I-Subset yenethiwekhi ye-SIM asiphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Isicelo sokuvula Somhlinzeki Wesevisi ye-SIM asiphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Isicelo sokuvula ngenkampani ye-SIM asiphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Isicelo sokuvula i-SIM asiphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Isicelo sokuvula i-RUIM Network1 asiphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Isicelo sokuvula i-RUIM Network2 asiphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Isicelo sokuvula i-RUIM Hrpd asiphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Isicelo sokuvula Senkampani ye-RUIM asiphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Isicelo sokuvula Somhlinzeki Wesevisi ye-RUIM asiphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Isicelo sokuvula i-RUIM asiphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Ukuvula nge-PUK akuphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Ukuvula nge-PUK akuphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Ukuvula nge-PUK akuphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Ukuvula nge-PUK akuphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Ukuvula nge-PUK akuphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Ukuvula nge-PUK akuphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Ukuvula nge-PUK akuphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Ukuvula nge-PUK akuphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Ukuvula nge-PUK akuphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Ukuvula nge-PUK akuphumelelanga."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Ukuvula nge-PUK akuphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Isicelo sokuvula i-SPN asiphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Isicelo sokuvula se-SP Equivalent Home PLMN asiphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Isicelo sokuvula i-ICCID asiphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Isicelo sokuvula i-IMPI asiphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Isicelo sokuvula i-subset yenethiwekhi yomhlinzeki wesevisi asiphumelelanga."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Ukuvula Inethiwekhi ye-SIM kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Ukuvula I-subset yenethiwekhi ye-SIM kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Ukuvula Ngomhlinzeki Wesevisi ye-SIM kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Ukuvula Ngenkampani ye-SIM kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Ukuvula i-SIM kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Ukuvula i-RUIM Network1 kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Ukuvula i-RUIM Network2 kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Ukuvula i-RUIM Hrpd kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Ukuvula Ngomhlinzeki Wesevisi ye-RUIM kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Ukuvula Inkampani ye-RUIM kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Ukuvula i-RUIM kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Ukuvula nge-PUK kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Ukuvula nge-PUK kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Ukuvula nge-PUK kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Ukuvula nge-PUK kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Ukuvula nge-PUK kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Ukuvula nge-PUK kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Ukuvula nge-PUK kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Ukuvula nge-PUK kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Ukuvula nge-PUK kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Ukuvula nge-PUK kuphumelele."</string> + <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Ukuvula nge-PUK kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Ukuvula i-SPN kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Ukuvula nge-SP Equivalent Home PLMN kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Ukuvula i-ICCID kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Ukuvula i-IMPI kuphumelele."</string> + <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Ukuvula I-subset yethiwekhi subset yomhlinzeki wesevisi kuphumelele."</string> </resources> diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 28eb98b07690..2a2da6a45857 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -1827,6 +1827,9 @@ <attr name="gwpAsanMode" /> + <!-- @hide no longer used, kept to preserve padding --> + <attr name="allowAutoRevokePermissionsExemption" format="boolean" /> + <attr name="autoRevokePermissions"> <enum name="allowed" value="0" /> <enum name="discouraged" value="1" /> @@ -2113,35 +2116,6 @@ <declare-styleable name="AndroidManifestQueriesProvider" parent="AndroidManifestQueries" > <attr name="authorities" /> </declare-styleable> - <!-- - Matches an overlayable, its overlays, its actor, and/or its containing target. - A target or actor must always be specified, but can be combined for more specificity. - Valid combinations and what they match are: - - targetPackage: - - All overlays targeting any overlayables inside 'targetPackage' - - targetPackage + targetName: - - All overlays targeting the overlayable 'targetName' inside 'targetPackage' - - targetPackage + targetName + actor: - - All overlays targeting the overlayable 'targetName' inside 'targetPackage' if the - overlayable specifies 'actor' - - targetPackage + actor: - - All overlays targeting overlayables inside 'targetPackage' that specify `actor` - - The actor itself if the above matches - - actor: - - All overlays targeting overlayables that specify `actor` - - All targets that contain an overlayable that specifies `actor` - - The actor itself - --> - <declare-styleable name="AndroidManifestQueriesOverlayable"> - <attr name="targetPackage" /> - <attr name="targetName"/> - <attr name="actor" format="string" /> - </declare-styleable> <!-- The <code>static-library</code> tag declares that this apk is providing itself diff --git a/core/res/res/values/bools.xml b/core/res/res/values/bools.xml index c5127dccdae7..fe296c704095 100644 --- a/core/res/res/values/bools.xml +++ b/core/res/res/values/bools.xml @@ -29,5 +29,5 @@ <p>The main purpose is for OEMs to customize the rendering of the lockscreen, setting this to true should come with customized drawables. --> <bool name="use_lock_pattern_drawable">false</bool> - <bool name="sharesheet_show_content_preview">false</bool> + <bool name="resolver_landscape_phone">true</bool> </resources> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index e3a73377e365..4c4b7e6202f9 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2406,8 +2406,7 @@ - to henceforth disable feature and try to undo its previous effects: 0 Note: This list must be kept current with PACKAGE_WHITELIST_MODE_PROP in frameworks/base/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java --> - <integer name="config_userTypePackageWhitelistMode">29</integer> <!-- 1+4+8+16 --> - <!-- TODO(b/143200798): Change to value 13, i.e. 1+4+8, when b/143200798 is resolved. --> + <integer name="config_userTypePackageWhitelistMode">13</integer> <!-- 1+4+8 --> <!-- Whether UI for multi user should be shown --> <bool name="config_enableMultiUserUI">false</bool> @@ -2779,6 +2778,10 @@ <string name="config_systemUIServiceComponent" translatable="false" >com.android.systemui/com.android.systemui.SystemUIService</string> + <!-- Package handling Quick controls --> + <string name="config_controlsPackage" translatable="false" + >com.android.systemui</string> + <!-- Keyguard component --> <string name="config_keyguardComponent" translatable="false" >com.android.systemui/com.android.systemui.keyguard.KeyguardService</string> @@ -4424,4 +4427,7 @@ <!-- Set to true to enable the user switcher on the keyguard. --> <bool name="config_keyguardUserSwitcher">false</bool> + <!-- Set to true to make assistant show in front of the dream/screensaver. --> + <bool name="config_assistantOnTopOfDream">false</bool> + </resources> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index e694e160009e..67d20da03925 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -3014,11 +3014,12 @@ <!-- @hide @SystemApi --> <public name="minExtensionVersion" /> <public name="allowNativeHeapPointerTagging" /> + <!-- @hide no longer used, kept to preserve padding --> + <public name="allowAutoRevokePermissionsExemption"/> <public name="autoRevokePermissions" /> <public name="preserveLegacyExternalStorage" /> <public name="mimeGroup" /> <public name="gwpAsanMode" /> - <public name="actor" /> </public-group> <public-group type="drawable" first-id="0x010800b5"> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 06f776013233..e2e65dd465ae 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1138,17 +1138,17 @@ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permlab_accessFineLocation">access precise location only in the foreground</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permdesc_accessFineLocation">This app can get your exact location only when it is in the foreground. Location services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption.</string> + <string name="permdesc_accessFineLocation">This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permlab_accessCoarseLocation">access approximate location only in the foreground</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permdesc_accessCoarseLocation">This app can get your approximate location only when it is in the foreground. Location services must be turned on and available on your device for the app to be able to use them.</string> + <string name="permdesc_accessCoarseLocation">This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permlab_accessBackgroundLocation">access location in the background</string> <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> - <string name="permdesc_accessBackgroundLocation">This app can access location while running in the background, in addition to foreground location access.</string> + <string name="permdesc_accessBackgroundLocation">This app can access location at any time, even while the app is not in use.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permlab_modifyAudioSettings">change your audio settings</string> @@ -3597,6 +3597,8 @@ <string name="ext_media_new_notification_title">New <xliff:g id="name" example="SD card">%s</xliff:g></string> <!-- Notification body when new external media is detected [CHAR LIMIT=NONE] --> <string name="ext_media_new_notification_message">Tap to set up</string> + <!-- Automotive specific notification body when new external media is detected. Empty because there is no fix action (b/151671685) [CHAR LIMIT=NONE] --> + <string name="ext_media_new_notification_message" product="automotive"></string> <!-- Notification body when external media is ready for use [CHAR LIMIT=NONE] --> <string name="ext_media_ready_notification_message">For transferring photos and media</string> @@ -3605,8 +3607,10 @@ <string name="ext_media_unmountable_notification_title">Issue with <xliff:g id="name" example="SD card">%s</xliff:g></string> <!-- Notification body when external media is unmountable (corrupt) [CHAR LIMIT=NONE] --> <string name="ext_media_unmountable_notification_message">Tap to fix</string> - <!-- TV-specifiv notification body when external media is unmountable (corrupt) [CHAR LIMIT=NONE] --> + <!-- TV-specific notification body when external media is unmountable (corrupt) [CHAR LIMIT=NONE] --> <string name="ext_media_unmountable_notification_message" product="tv"><xliff:g id="name" example="SD card">%s</xliff:g> is corrupt. Select to fix.</string> + <!-- Automotive specific notification body when external media is unmountable (corrupt). Empty because there is no fix action (b/151671685) [CHAR LIMIT=NONE] --> + <string name="ext_media_unmountable_notification_message" product="automotive"></string> <!-- Notification title when external media is unsupported [CHAR LIMIT=30] --> <string name="ext_media_unsupported_notification_title">Unsupported <xliff:g id="name" example="SD card">%s</xliff:g></string> @@ -3614,6 +3618,8 @@ <string name="ext_media_unsupported_notification_message">This device doesn\u2019t support this <xliff:g id="name" example="SD card">%s</xliff:g>. Tap to set up in a supported format.</string> <!-- TV-specific notification body when external media is unsupported [CHAR LIMIT=NONE] --> <string name="ext_media_unsupported_notification_message" product="tv">This device doesn\u2019t support this <xliff:g id="name" example="SD card">%s</xliff:g>. Select to set up in a supported format.</string> + <!-- Automotive specific notification body when external media is unsupported. No action is specified to fix (b/151671685) [CHAR LIMIT=NONE] --> + <string name="ext_media_unsupported_notification_message" product="automotive">This device doesn\u2019t support this <xliff:g id="name" example="SD card">%s</xliff:g>.</string> <!-- Notification title when external media is unsafely removed [CHAR LIMIT=30] --> <string name="ext_media_badremoval_notification_title"><xliff:g id="name" example="SD card">%s</xliff:g> unexpectedly removed</string> @@ -5482,11 +5488,6 @@ <!-- Error message. This text lets the user know that their current personal apps can't open this specific content. [CHAR LIMIT=NONE] --> <string name="resolver_no_personal_apps_available_resolve">No personal apps can open this content</string> - <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=NONE] --> - <string name="permlab_accessCallAudio">Record or play audio in telephony calls</string> - <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=NONE] --> - <string name="permdesc_accessCallAudio">Allows this app, when assigned as default dialer application, to record or play audio in telephony calls.</string> - <!-- Icc depersonalization related strings --> <!-- Label text for PIN entry widget on SIM Network Depersonalization panel [CHAR LIMIT=none] --> <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY">SIM network unlock PIN</string> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 835be9305a5c..0fea372ea580 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -365,6 +365,7 @@ <java-symbol type="bool" name="config_hasRecents" /> <java-symbol type="string" name="config_recentsComponentName" /> <java-symbol type="string" name="config_systemUIServiceComponent" /> + <java-symbol type="string" name="config_controlsPackage" /> <java-symbol type="string" name="config_screenRecorderComponent" /> <java-symbol type="string" name="config_somnambulatorComponent" /> <java-symbol type="string" name="config_screenshotServiceComponent" /> @@ -3931,7 +3932,7 @@ <java-symbol type="dimen" name="resolver_empty_state_height" /> <java-symbol type="dimen" name="resolver_empty_state_height_with_tabs" /> <java-symbol type="dimen" name="resolver_max_collapsed_height_with_tabs" /> - <java-symbol type="bool" name="sharesheet_show_content_preview" /> + <java-symbol type="bool" name="resolver_landscape_phone" /> <java-symbol type="dimen" name="resolver_tab_text_size" /> <!-- Toast message for background started foreground service while-in-use permission restriction feature --> @@ -3955,4 +3956,7 @@ <!-- Set to true to enable the user switcher on the keyguard. --> <java-symbol type="bool" name="config_keyguardUserSwitcher" /> + + <!-- Set to true to make assistant show in front of the dream/screensaver. --> + <java-symbol type="bool" name="config_assistantOnTopOfDream"/> </resources> diff --git a/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java b/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java index 79b803a0cda6..0cd0643ee8c0 100644 --- a/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java +++ b/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java @@ -25,13 +25,13 @@ import android.app.Service; import android.content.Context; import android.content.Intent; import android.graphics.Color; +import android.graphics.Rect; import android.hardware.display.DisplayManager; import android.os.Handler; import android.os.IBinder; import android.os.Process; import android.os.RemoteException; import android.util.Log; -import android.util.Size; import android.view.Display; import android.view.Gravity; import android.view.View; @@ -119,15 +119,15 @@ public class TestService extends Service { @Override public void showApplicationOverlay() throws RemoteException { final WindowManager wm = mOverlayContext.getSystemService(WindowManager.class); - final Size size = wm.getCurrentWindowMetrics().getSize(); + final Rect bounds = wm.getCurrentWindowMetrics().getBounds(); final WindowManager.LayoutParams wmlp = new WindowManager.LayoutParams( TYPE_APPLICATION_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); - wmlp.width = size.getWidth() / 2; - wmlp.height = size.getHeight() / 2; + wmlp.width = bounds.width() / 2; + wmlp.height = bounds.height() / 2; wmlp.gravity = Gravity.CENTER | Gravity.LEFT; wmlp.setTitle(TAG); diff --git a/core/tests/coretests/src/android/app/timezonedetector/TelephonyTimeZoneSuggestionTest.java b/core/tests/coretests/src/android/app/timezonedetector/TelephonyTimeZoneSuggestionTest.java index c4ff9beec0c5..28009d4168ad 100644 --- a/core/tests/coretests/src/android/app/timezonedetector/TelephonyTimeZoneSuggestionTest.java +++ b/core/tests/coretests/src/android/app/timezonedetector/TelephonyTimeZoneSuggestionTest.java @@ -129,7 +129,7 @@ public class TelephonyTimeZoneSuggestionTest { } @Test(expected = RuntimeException.class) - public void testBuilderValidates_emptyZone_badMatchType() { + public void testBuilderValidates_nullZone_badMatchType() { TelephonyTimeZoneSuggestion.Builder builder = new TelephonyTimeZoneSuggestion.Builder(SLOT_INDEX); // No zone ID, so match type should be left unset. diff --git a/core/tests/coretests/src/android/content/ContentResolverTest.java b/core/tests/coretests/src/android/content/ContentResolverTest.java index 57e5dd8f8f20..f48e66681cc7 100644 --- a/core/tests/coretests/src/android/content/ContentResolverTest.java +++ b/core/tests/coretests/src/android/content/ContentResolverTest.java @@ -238,12 +238,9 @@ public class ContentResolverTest { @Test public void testGetType_providerException() { - try { - mResolver.getType(Uri.parse("content://android.content.FakeProviderRemote/error")); - fail("Expected IllegalArgumentException"); - } catch (IllegalArgumentException e) { - // Expected - } + String type = + mResolver.getType(Uri.parse("content://android.content.FakeProviderRemote/error")); + assertThat(type).isNull(); } @Test @@ -253,4 +250,15 @@ public class ContentResolverTest { assertThat(canonical).isEqualTo( Uri.parse("content://android.content.FakeProviderRemote/canonical")); } + + @Test + public void testCanonicalize_providerException() { + try { + mResolver.canonicalize( + Uri.parse("content://android.content.FakeProviderRemote/error")); + fail("Expected IllegalArgumentException"); + } catch (IllegalArgumentException e) { + // Expected + } + } } diff --git a/core/tests/coretests/src/android/content/FakeProviderRemote.java b/core/tests/coretests/src/android/content/FakeProviderRemote.java index a32009493094..8bc56607f555 100644 --- a/core/tests/coretests/src/android/content/FakeProviderRemote.java +++ b/core/tests/coretests/src/android/content/FakeProviderRemote.java @@ -60,6 +60,9 @@ public class FakeProviderRemote extends ContentProvider { @Override public Uri canonicalize(Uri uri) { + if (uri.getPath() != null && uri.getPath().contains("error")) { + throw new IllegalArgumentException("Expected exception"); + } return new Uri.Builder().scheme(uri.getScheme()).authority(uri.getAuthority()) .appendPath("canonical").build(); } diff --git a/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java b/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java index df5c9d2df90b..4114b28a7252 100644 --- a/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java +++ b/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java @@ -184,7 +184,7 @@ public class ResourcesManagerTest extends TestCase { @SmallTest public void testThemesGetUpdatedWithNewImpl() { Binder activity1 = new Binder(); - Resources resources1 = mResourcesManager.createBaseActivityResources( + Resources resources1 = mResourcesManager.createBaseTokenResources( activity1, APP_ONE_RES_DIR, null, null, null, Display.DEFAULT_DISPLAY, null, CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO, null, null); assertNotNull(resources1); @@ -217,7 +217,7 @@ public class ResourcesManagerTest extends TestCase { // Create a Resources for the Activity. Configuration config1 = new Configuration(); config1.densityDpi = 280; - Resources resources1 = mResourcesManager.createBaseActivityResources( + Resources resources1 = mResourcesManager.createBaseTokenResources( activity1, APP_ONE_RES_DIR, null, null, null, Display.DEFAULT_DISPLAY, config1, CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO, null, null); assertNotNull(resources1); diff --git a/core/tests/coretests/src/android/service/controls/ControlProviderServiceTest.java b/core/tests/coretests/src/android/service/controls/ControlProviderServiceTest.java index 13000e943141..f4ebe2f9a755 100644 --- a/core/tests/coretests/src/android/service/controls/ControlProviderServiceTest.java +++ b/core/tests/coretests/src/android/service/controls/ControlProviderServiceTest.java @@ -64,8 +64,7 @@ import java.util.function.Consumer; @RunWith(AndroidJUnit4.class) public class ControlProviderServiceTest { - private static final ComponentName TEST_SYSUI_COMPONENT = - ComponentName.unflattenFromString("sysui/.test.cls"); + private static final String TEST_CONTROLS_PACKAGE = "sysui"; private static final ComponentName TEST_COMPONENT = ComponentName.unflattenFromString("test.pkg/.test.cls"); @@ -97,8 +96,8 @@ public class ControlProviderServiceTest { when(mSubscriber.asBinder()).thenCallRealMethod(); when(mSubscriber.queryLocalInterface(any())).thenReturn(mSubscriber); - when(mResources.getString(com.android.internal.R.string.config_systemUIServiceComponent)) - .thenReturn(TEST_SYSUI_COMPONENT.flattenToString()); + when(mResources.getString(com.android.internal.R.string.config_controlsPackage)) + .thenReturn(TEST_CONTROLS_PACKAGE); when(mContext.getResources()).thenReturn(mResources); Bundle b = new Bundle(); @@ -252,7 +251,7 @@ public class ControlProviderServiceTest { eq(Manifest.permission.BIND_CONTROLS)); Intent intent = mIntentArgumentCaptor.getValue(); assertEquals(ControlsProviderService.ACTION_ADD_CONTROL, intent.getAction()); - assertEquals(TEST_SYSUI_COMPONENT.getPackageName(), intent.getPackage()); + assertEquals(TEST_CONTROLS_PACKAGE, intent.getPackage()); assertEquals(TEST_COMPONENT, intent.getParcelableExtra(Intent.EXTRA_COMPONENT_NAME)); assertTrue(equals(control, intent.getParcelableExtra(ControlsProviderService.EXTRA_CONTROL))); diff --git a/core/tests/coretests/src/android/util/GridScenario.java b/core/tests/coretests/src/android/util/GridScenario.java index 4809a213ab48..e7ee1cd59c7c 100644 --- a/core/tests/coretests/src/android/util/GridScenario.java +++ b/core/tests/coretests/src/android/util/GridScenario.java @@ -233,7 +233,7 @@ public abstract class GridScenario extends Activity { // turn off title bar requestWindowFeature(Window.FEATURE_NO_TITLE); - mScreenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight(); + mScreenHeight = getWindowManager().getCurrentWindowMetrics().getBounds().height(); final Params params = new Params(); init(params); diff --git a/core/tests/coretests/src/android/util/ListScenario.java b/core/tests/coretests/src/android/util/ListScenario.java index d4e5a438d855..74dc4b4b34a1 100644 --- a/core/tests/coretests/src/android/util/ListScenario.java +++ b/core/tests/coretests/src/android/util/ListScenario.java @@ -306,7 +306,7 @@ public abstract class ListScenario extends Activity { requestWindowFeature(Window.FEATURE_NO_TITLE); - mScreenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight(); + mScreenHeight = getWindowManager().getCurrentWindowMetrics().getBounds().height(); final Params params = createParams(); init(params); diff --git a/core/tests/coretests/src/android/util/ScrollViewScenario.java b/core/tests/coretests/src/android/util/ScrollViewScenario.java index 2c0aa7362dfa..ab1a642a9327 100644 --- a/core/tests/coretests/src/android/util/ScrollViewScenario.java +++ b/core/tests/coretests/src/android/util/ScrollViewScenario.java @@ -239,7 +239,7 @@ public abstract class ScrollViewScenario extends Activity { // for test stability, turn off title bar requestWindowFeature(Window.FEATURE_NO_TITLE); - int screenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight() + int screenHeight = getWindowManager().getCurrentWindowMetrics().getBounds().height() - 25; mLinearLayout = new LinearLayout(this); mLinearLayout.setOrientation(LinearLayout.VERTICAL); diff --git a/core/tests/coretests/src/android/view/BigCache.java b/core/tests/coretests/src/android/view/BigCache.java index e465a859218a..3038e79abd72 100644 --- a/core/tests/coretests/src/android/view/BigCache.java +++ b/core/tests/coretests/src/android/view/BigCache.java @@ -17,8 +17,8 @@ package android.view; import android.app.Activity; +import android.graphics.Rect; import android.os.Bundle; -import android.util.Size; import android.widget.LinearLayout; import android.widget.ScrollView; @@ -39,9 +39,9 @@ public class BigCache extends Activity { ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); final int cacheSize = ViewConfiguration.getMaximumDrawingCacheSize(); - final Size windowSize = getWindowManager().getCurrentWindowMetrics().getSize(); - final int screenWidth = windowSize.getWidth(); - final int screenHeight = windowSize.getHeight(); + final Rect windowBounds = getWindowManager().getCurrentWindowMetrics().getBounds(); + final int screenWidth = windowBounds.width(); + final int screenHeight = windowBounds.height(); final View tiny = new View(this); tiny.setId(R.id.a); diff --git a/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java b/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java index d78746918e65..6c01181c48c9 100644 --- a/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java +++ b/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java @@ -20,14 +20,17 @@ import static android.view.InsetsState.ITYPE_NAVIGATION_BAR; import static android.view.InsetsState.ITYPE_STATUS_BAR; import static android.view.ViewRootImpl.NEW_INSETS_MODE_FULL; import static android.view.WindowInsets.Type.systemBars; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -43,6 +46,8 @@ import android.view.SyncRtSurfaceTransactionApplier.SurfaceParams; import android.view.animation.LinearInterpolator; import android.view.test.InsetsModeSession; +import androidx.test.runner.AndroidJUnit4; + import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; @@ -54,8 +59,6 @@ import org.mockito.MockitoAnnotations; import java.util.List; -import androidx.test.runner.AndroidJUnit4; - /** * Tests for {@link InsetsAnimationControlImpl}. * @@ -124,6 +127,7 @@ public class InsetsAnimationControlImplTest { new Rect(0, 0, 500, 500), mInsetsState, mMockListener, systemBars(), mMockController, 10 /* durationMs */, new LinearInterpolator(), 0 /* animationType */); + mController.mReadyDispatched = true; } @Test @@ -204,6 +208,18 @@ public class InsetsAnimationControlImplTest { assertTrue(mController.isCancelled()); verify(mMockListener).onCancelled(mController); mController.finish(true /* shown */); + verify(mMockListener, never()).onFinished(any()); + } + + @Test + public void testCancelled_beforeReadyDispatched() { + mController.mReadyDispatched = false; + mController.cancel(); + assertFalse(mController.isReady()); + assertFalse(mController.isFinished()); + assertTrue(mController.isCancelled()); + verify(mMockListener).onCancelled(null); + verify(mMockListener, never()).onFinished(any()); } private void assertPosition(Matrix m, Rect original, Rect transformed) { diff --git a/core/tests/coretests/src/android/view/InsetsControllerTest.java b/core/tests/coretests/src/android/view/InsetsControllerTest.java index efdb51dcdfa9..b9c71a2a207c 100644 --- a/core/tests/coretests/src/android/view/InsetsControllerTest.java +++ b/core/tests/coretests/src/android/view/InsetsControllerTest.java @@ -21,6 +21,7 @@ import static android.view.InsetsController.ANIMATION_TYPE_NONE; import static android.view.InsetsController.ANIMATION_TYPE_SHOW; import static android.view.InsetsSourceConsumer.ShowResult.IME_SHOW_DELAYED; import static android.view.InsetsSourceConsumer.ShowResult.SHOW_IMMEDIATELY; +import static android.view.InsetsState.ITYPE_CAPTION_BAR; import static android.view.InsetsState.ITYPE_IME; import static android.view.InsetsState.ITYPE_NAVIGATION_BAR; import static android.view.InsetsState.ITYPE_STATUS_BAR; @@ -31,7 +32,6 @@ import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; @@ -88,7 +88,6 @@ import java.util.concurrent.CountDownLatch; @Presubmit @RunWith(AndroidJUnit4.class) public class InsetsControllerTest { - private InsetsController mController; private SurfaceSession mSession = new SurfaceSession(); private SurfaceControl mLeash; @@ -639,30 +638,26 @@ public class InsetsControllerTest { }); } - @Test - public void testFrameUpdateDuringAnimation() { - InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { - mController.onControlsChanged(createSingletonControl(ITYPE_IME)); - - // Pretend IME is calling - mController.show(ime(), true /* fromIme */); - InsetsState copy = new InsetsState(mController.getState(), true /* copySources */); - copy.getSource(ITYPE_IME).setFrame(0, 1, 2, 3); - copy.getSource(ITYPE_IME).setVisibleFrame(new Rect(4, 5, 6, 7)); - mController.onStateChanged(copy); - assertNotEquals(new Rect(0, 1, 2, 3), - mController.getState().getSource(ITYPE_IME).getFrame()); - assertNotEquals(new Rect(4, 5, 6, 7), - mController.getState().getSource(ITYPE_IME).getVisibleFrame()); - mController.cancelExistingAnimation(); - assertEquals(new Rect(0, 1, 2, 3), - mController.getState().getSource(ITYPE_IME).getFrame()); - assertEquals(new Rect(4, 5, 6, 7), - mController.getState().getSource(ITYPE_IME).getVisibleFrame()); + @Test + public void testCaptionInsetsStateAssemble() { + InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { + mController.onFrameChanged(new Rect(0, 0, 100, 300)); + final InsetsState state = new InsetsState(mController.getState(), true); + final Rect captionFrame = new Rect(0, 0, 100, 100); + mController.setCaptionInsetsHeight(100); + mController.onStateChanged(state); + final InsetsState currentState = new InsetsState(mController.getState()); + // The caption bar source should be synced with the info in mAttachInfo. + assertEquals(captionFrame, currentState.peekSource(ITYPE_CAPTION_BAR).getFrame()); + assertTrue(currentState.equals(state, true /* excludingCaptionInsets*/)); + mController.setCaptionInsetsHeight(0); + mController.onStateChanged(state); + // The caption bar source should not be there at all, because we don't add empty + // caption to the state from the server. + assertNull(mController.getState().peekSource(ITYPE_CAPTION_BAR)); }); - InstrumentationRegistry.getInstrumentation().waitForIdleSync(); } private void waitUntilNextFrame() throws Exception { diff --git a/core/tests/coretests/src/android/view/InsetsStateTest.java b/core/tests/coretests/src/android/view/InsetsStateTest.java index 721dc98ff4d1..2884777fc997 100644 --- a/core/tests/coretests/src/android/view/InsetsStateTest.java +++ b/core/tests/coretests/src/android/view/InsetsStateTest.java @@ -153,6 +153,35 @@ public class InsetsStateTest { } } + + @Test + public void testCalculateInsets_captionStatusBarOverlap() throws Exception { + try (InsetsModeSession session = + new InsetsModeSession(ViewRootImpl.NEW_INSETS_MODE_FULL)) { + mState.getSource(ITYPE_STATUS_BAR).setFrame(new Rect(0, 0, 100, 100)); + mState.getSource(ITYPE_STATUS_BAR).setVisible(true); + mState.getSource(ITYPE_CAPTION_BAR).setFrame(new Rect(0, 0, 100, 300)); + mState.getSource(ITYPE_CAPTION_BAR).setVisible(true); + + Rect visibleInsets = mState.calculateVisibleInsets( + new Rect(0, 0, 100, 400), SOFT_INPUT_ADJUST_NOTHING); + assertEquals(new Rect(0, 300, 0, 0), visibleInsets); + } + } + + @Test + public void testCalculateInsets_captionBarOffset() throws Exception { + try (InsetsModeSession session = + new InsetsModeSession(ViewRootImpl.NEW_INSETS_MODE_FULL)) { + mState.getSource(ITYPE_CAPTION_BAR).setFrame(new Rect(0, 0, 100, 300)); + mState.getSource(ITYPE_CAPTION_BAR).setVisible(true); + + Rect visibleInsets = mState.calculateVisibleInsets( + new Rect(0, 0, 150, 400), SOFT_INPUT_ADJUST_NOTHING); + assertEquals(new Rect(0, 300, 0, 0), visibleInsets); + } + } + @Test public void testStripForDispatch() { mState.getSource(ITYPE_STATUS_BAR).setFrame(new Rect(0, 0, 100, 100)); diff --git a/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java b/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java index 039387c85b11..46e55faae8b6 100644 --- a/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java +++ b/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java @@ -22,7 +22,7 @@ import static androidx.test.espresso.matcher.ViewMatchers.withId; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import android.util.Size; +import android.graphics.Rect; import android.widget.TextView; import androidx.test.filters.LargeTest; @@ -55,9 +55,9 @@ public class ScaleGestureDetectorTest { // Specify start and end coordinates with respect to the window size. final WindowManager wm = mScaleGestureActivity.getSystemService(WindowManager.class); - final Size windowSize = wm.getCurrentWindowMetrics().getSize(); - final int windowWidth = windowSize.getWidth(); - final int windowHeight = windowSize.getHeight(); + final Rect windowBounds = wm.getCurrentWindowMetrics().getBounds(); + final int windowWidth = windowBounds.width(); + final int windowHeight = windowBounds.height(); // Obtain coordinates to perform pinch and zoom from the center, to 75% of the display. final int centerX = windowWidth / 2; diff --git a/core/tests/coretests/src/android/view/WindowInsetsTest.java b/core/tests/coretests/src/android/view/WindowInsetsTest.java index fce2ebd08888..8e4e73597eaf 100644 --- a/core/tests/coretests/src/android/view/WindowInsetsTest.java +++ b/core/tests/coretests/src/android/view/WindowInsetsTest.java @@ -17,20 +17,14 @@ package android.view; import static android.view.WindowInsets.Type.SIZE; -import static android.view.WindowInsets.Type.ime; -import static android.view.WindowInsets.Type.navigationBars; -import static android.view.WindowInsets.Type.statusBars; - import static android.view.WindowInsets.Type.systemBars; + import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import android.graphics.Insets; import android.graphics.Rect; import android.platform.test.annotations.Presubmit; -import android.view.WindowInsets.Builder; -import android.view.WindowInsets.Type; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; @@ -70,50 +64,4 @@ public class WindowInsetsTest { systemBars(), true /* compatIgnoreVisibility */); assertEquals(Insets.of(0, 10, 0, 0), windowInsets.getSystemWindowInsets()); } - - // TODO: Move this to CTS once API made public - @Test - public void typeMap() { - Builder b = new WindowInsets.Builder(); - b.setInsets(navigationBars(), Insets.of(0, 0, 0, 100)); - b.setInsets(ime(), Insets.of(0, 0, 0, 300)); - WindowInsets insets = b.build(); - assertEquals(100, insets.getSystemWindowInsets().bottom); - assertEquals(300, insets.getInsets(ime()).bottom); - } - - // TODO: Move this to CTS once API made public - @Test - public void compatInsets() { - Builder b = new WindowInsets.Builder(); - b.setSystemWindowInsets(Insets.of(0, 50, 30, 10)); - WindowInsets insets = b.build(); - assertEquals(Insets.of(0, 50, 0, 0), insets.getInsets(statusBars())); - assertEquals(Insets.of(0, 0, 30, 10), insets.getInsets(navigationBars())); - } - - // TODO: Move this to CTS once API made public - @Test - public void visibility() { - Builder b = new WindowInsets.Builder(); - b.setInsets(navigationBars(), Insets.of(0, 0, 0, 100)); - b.setInsets(ime(), Insets.of(0, 0, 0, 300)); - b.setVisible(navigationBars(), true); - b.setVisible(ime(), true); - WindowInsets insets = b.build(); - assertTrue(insets.isVisible(navigationBars())); - assertTrue(insets.isVisible(navigationBars() | ime())); - assertFalse(insets.isVisible(navigationBars() | statusBars())); - } - - // TODO: Move this to CTS once API made public - @Test - public void consume_doesntChangeVisibility() { - Builder b = new WindowInsets.Builder(); - b.setInsets(ime(), Insets.of(0, 0, 0, 300)); - b.setVisible(ime(), true); - WindowInsets insets = b.build(); - insets = insets.consumeSystemWindowInsets(); - assertTrue(insets.isVisible(ime())); - } } diff --git a/core/tests/coretests/src/android/view/WindowMetricsTest.java b/core/tests/coretests/src/android/view/WindowMetricsTest.java index fa6886075bfd..74524bf6d76f 100644 --- a/core/tests/coretests/src/android/view/WindowMetricsTest.java +++ b/core/tests/coretests/src/android/view/WindowMetricsTest.java @@ -22,10 +22,10 @@ import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; import static org.junit.Assert.assertTrue; import android.content.Context; +import android.graphics.Rect; import android.hardware.display.DisplayManager; import android.os.Handler; import android.platform.test.annotations.Presubmit; -import android.util.Size; import androidx.test.filters.FlakyTest; import androidx.test.filters.SmallTest; @@ -87,10 +87,12 @@ public class WindowMetricsTest { private static void verifyMetricsSanity(WindowMetrics currentMetrics, WindowMetrics maxMetrics) { - Size currentSize = currentMetrics.getSize(); - Size maxSize = maxMetrics.getSize(); + Rect currentBounds = currentMetrics.getBounds(); + Rect maxBounds = maxMetrics.getBounds(); - assertTrue(maxSize.getWidth() >= currentSize.getWidth()); - assertTrue(maxSize.getHeight() >= currentSize.getHeight()); + assertTrue(maxBounds.width() >= currentBounds.width()); + assertTrue(maxBounds.height() >= currentBounds.height()); + assertTrue(maxBounds.left >= 0); + assertTrue(maxBounds.top >= 0); } } diff --git a/core/tests/coretests/src/android/view/menu/ContextMenuTest.java b/core/tests/coretests/src/android/view/menu/ContextMenuTest.java index d5825e20163c..4bd9ccd8d4d3 100644 --- a/core/tests/coretests/src/android/view/menu/ContextMenuTest.java +++ b/core/tests/coretests/src/android/view/menu/ContextMenuTest.java @@ -16,9 +16,9 @@ package android.view.menu; +import android.graphics.Rect; import android.test.ActivityInstrumentationTestCase; import android.util.PollingCheck; -import android.util.Size; import android.view.View; import android.view.WindowManager; import android.widget.espresso.ContextMenuUtils; @@ -81,8 +81,8 @@ public class ContextMenuTest extends ActivityInstrumentationTestCase<ContextMenu */ private int getMinScreenDimension() { final WindowManager windowManager = getActivity().getSystemService(WindowManager.class); - final Size maxWindowSize = windowManager.getMaximumWindowMetrics().getSize(); - return Math.min(maxWindowSize.getWidth(), maxWindowSize.getHeight()); + final Rect maxWindowBounds = windowManager.getMaximumWindowMetrics().getBounds(); + return Math.min(maxWindowBounds.width(), maxWindowBounds.height()); } /** diff --git a/core/tests/coretests/src/android/widget/EditorCursorDragTest.java b/core/tests/coretests/src/android/widget/EditorCursorDragTest.java index 1b5ce8fd4ce5..4bfffd72d835 100644 --- a/core/tests/coretests/src/android/widget/EditorCursorDragTest.java +++ b/core/tests/coretests/src/android/widget/EditorCursorDragTest.java @@ -37,6 +37,7 @@ import static org.junit.Assert.assertTrue; import android.app.Activity; import android.app.Instrumentation; import android.graphics.Rect; +import android.platform.test.annotations.Presubmit; import android.text.Layout; import android.text.Spannable; import android.text.SpannableString; @@ -48,7 +49,7 @@ import android.view.MotionEvent; import android.view.View; import androidx.test.InstrumentationRegistry; -import androidx.test.filters.SmallTest; +import androidx.test.filters.MediumTest; import androidx.test.filters.Suppress; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; @@ -67,7 +68,8 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicLong; @RunWith(AndroidJUnit4.class) -@SmallTest +@MediumTest +@Presubmit public class EditorCursorDragTest { private static final String LOG_TAG = EditorCursorDragTest.class.getSimpleName(); @@ -492,6 +494,7 @@ public class EditorCursorDragTest { simulateDrag(tv, events, true); } + @Suppress // b/152574363 @Test public void testLineChangeSlop() throws Throwable { TextView tv = mActivity.findViewById(R.id.textview); diff --git a/core/tests/coretests/src/android/widget/EditorTouchStateTest.java b/core/tests/coretests/src/android/widget/EditorTouchStateTest.java index 3dc001d68a02..ec75e40f1334 100644 --- a/core/tests/coretests/src/android/widget/EditorTouchStateTest.java +++ b/core/tests/coretests/src/android/widget/EditorTouchStateTest.java @@ -22,6 +22,7 @@ import static junit.framework.Assert.assertTrue; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; +import android.platform.test.annotations.Presubmit; import android.view.InputDevice; import android.view.MotionEvent; import android.view.ViewConfiguration; @@ -36,6 +37,7 @@ import org.junit.runners.JUnit4; @RunWith(JUnit4.class) @SmallTest +@Presubmit public class EditorTouchStateTest { private EditorTouchState mTouchState; diff --git a/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java b/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java index 8e90a824c873..d51cc328e4fb 100644 --- a/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java +++ b/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java @@ -111,7 +111,7 @@ public class ListOfInternalSelectionViews extends Activity { protected void onCreate(Bundle icicle) { super.onCreate(icicle); - mScreenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight(); + mScreenHeight = getWindowManager().getCurrentWindowMetrics().getBounds().height(); Bundle extras = getIntent().getExtras(); if (extras != null) { diff --git a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java index fd1dbfc63708..5cedd13533e7 100644 --- a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java +++ b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java @@ -106,8 +106,8 @@ public class GridTouchVerticalSpacingStackFromBottomTest extends ActivityInstrum int firstTop = firstChild.getTop(); - int windowHeight = mActivity.getWindowManager().getCurrentWindowMetrics().getSize() - .getHeight(); + int windowHeight = mActivity.getWindowManager().getCurrentWindowMetrics().getBounds() + .height(); int distance = TouchUtils.dragViewBy(this, firstChild, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, (int) (windowHeight * 0.75f)); diff --git a/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java b/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java index e6195b147045..5cca766e1b1e 100644 --- a/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java +++ b/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java @@ -66,7 +66,7 @@ public class AdjacentListsWithAdjacentISVsInside extends Activity { super.onCreate(savedInstanceState); final int desiredHeight = - (int) (0.8 * getWindowManager().getCurrentWindowMetrics().getSize().getHeight()); + (int) (0.8 * getWindowManager().getCurrentWindowMetrics().getBounds().height()); mLeftListView = new ListView(this); mLeftListView.setAdapter(new AdjacentISVAdapter(desiredHeight)); diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java index e427421a5a80..812e2a6c63fd 100644 --- a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java +++ b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java @@ -1330,8 +1330,15 @@ public class ChooserActivityTest { createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10); List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(workProfileTargets); + when(sOverrides.workResolverListController.getUserStateIndependentResolversAsUser( + Mockito.isA(List.class), + Mockito.isA(UserHandle.class))) + .thenReturn(new ArrayList<>(workResolvedComponentInfos)); sOverrides.isQuietModeEnabled = true; - setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); + // When work profile is disabled, we get 0 results when we query the work profile + // intents. + setupResolverControllers(personalResolvedComponentInfos, + /* workResolvedComponentInfos */ new ArrayList<>()); Intent sendIntent = createSendTextIntent(); sendIntent.setType("TestType"); @@ -1348,7 +1355,7 @@ public class ChooserActivityTest { } @Test - public void testWorkTab_noWorkTargets_emptyStateShown() { + public void testWorkTab_noWorkAppsAvailable_emptyStateShown() { // enable the work tab feature flag ResolverActivity.ENABLE_TABBED_VIEW = true; markWorkProfileUserAvailable(); @@ -1372,6 +1379,57 @@ public class ChooserActivityTest { .check(matches(isDisplayed())); } + @Test + public void testWorkTab_xProfileOff_noAppsAvailable_workOff_xProfileOffEmptyStateShown() { + // enable the work tab feature flag + ResolverActivity.ENABLE_TABBED_VIEW = true; + markWorkProfileUserAvailable(); + List<ResolvedComponentInfo> personalResolvedComponentInfos = + createResolvedComponentsForTest(3); + List<ResolvedComponentInfo> workResolvedComponentInfos = + createResolvedComponentsForTest(0); + setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); + sOverrides.isQuietModeEnabled = true; + sOverrides.hasCrossProfileIntents = false; + Intent sendIntent = createSendTextIntent(); + sendIntent.setType("TestType"); + + mActivityRule.launchActivity(Intent.createChooser(sendIntent, "work tab test")); + waitForIdle(); + onView(withId(R.id.contentPanel)) + .perform(swipeUp()); + onView(withText(R.string.resolver_work_tab)).perform(click()); + waitForIdle(); + + onView(withText(R.string.resolver_cant_share_with_work_apps)) + .check(matches(isDisplayed())); + } + + @Test + public void testWorkTab_noAppsAvailable_workOff_noAppsAvailableEmptyStateShown() { + // enable the work tab feature flag + ResolverActivity.ENABLE_TABBED_VIEW = true; + markWorkProfileUserAvailable(); + List<ResolvedComponentInfo> personalResolvedComponentInfos = + createResolvedComponentsForTest(3); + List<ResolvedComponentInfo> workResolvedComponentInfos = + createResolvedComponentsForTest(0); + setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); + sOverrides.isQuietModeEnabled = true; + Intent sendIntent = createSendTextIntent(); + sendIntent.setType("TestType"); + + mActivityRule.launchActivity(Intent.createChooser(sendIntent, "work tab test")); + waitForIdle(); + onView(withId(R.id.contentPanel)) + .perform(swipeUp()); + onView(withText(R.string.resolver_work_tab)).perform(click()); + waitForIdle(); + + onView(withText(R.string.resolver_no_work_apps_available_share)) + .check(matches(isDisplayed())); + } + private Intent createSendTextIntent() { Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); diff --git a/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java index 4ec89b7d2817..5a3aff937b79 100644 --- a/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java +++ b/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java @@ -598,7 +598,7 @@ public class ResolverActivityTest { onView(withId(R.id.contentPanel)) .perform(swipeUp()); - onView(withText(R.string.resolver_cant_share_with_work_apps)) + onView(withText(R.string.resolver_cant_access_work_apps)) .check(matches(isDisplayed())); } @@ -612,8 +612,15 @@ public class ResolverActivityTest { createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10); List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(workProfileTargets); + when(sOverrides.workResolverListController.getUserStateIndependentResolversAsUser( + Mockito.isA(List.class), + Mockito.isA(UserHandle.class))) + .thenReturn(new ArrayList<>(workResolvedComponentInfos)); sOverrides.isQuietModeEnabled = true; - setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); + // When work profile is disabled, we get 0 results when we query the work profile + // intents. + setupResolverControllers(personalResolvedComponentInfos, + /* workResolvedComponentInfos */ new ArrayList<>()); Intent sendIntent = createSendImageIntent(); sendIntent.setType("TestType"); @@ -629,7 +636,31 @@ public class ResolverActivityTest { } @Test - public void testWorkTab_noWorkTargets_emptyStateShown() { + public void testWorkTab_noWorkAppsAvailable_emptyStateShown() { + // enable the work tab feature flag + ResolverActivity.ENABLE_TABBED_VIEW = true; + markWorkProfileUserAvailable(); + List<ResolvedComponentInfo> personalResolvedComponentInfos = + createResolvedComponentsForTest(3); + List<ResolvedComponentInfo> workResolvedComponentInfos = + createResolvedComponentsForTest(0); + setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); + Intent sendIntent = createSendImageIntent(); + sendIntent.setType("TestType"); + + mActivityRule.launchActivity(sendIntent); + waitForIdle(); + onView(withId(R.id.contentPanel)) + .perform(swipeUp()); + onView(withText(R.string.resolver_work_tab)).perform(click()); + waitForIdle(); + + onView(withText(R.string.resolver_no_work_apps_available_resolve)) + .check(matches(isDisplayed())); + } + + @Test + public void testWorkTab_xProfileOff_noAppsAvailable_workOff_xProfileOffEmptyStateShown() { // enable the work tab feature flag ResolverActivity.ENABLE_TABBED_VIEW = true; markWorkProfileUserAvailable(); @@ -640,6 +671,33 @@ public class ResolverActivityTest { setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); Intent sendIntent = createSendImageIntent(); sendIntent.setType("TestType"); + sOverrides.isQuietModeEnabled = true; + sOverrides.hasCrossProfileIntents = false; + + mActivityRule.launchActivity(sendIntent); + waitForIdle(); + onView(withId(R.id.contentPanel)) + .perform(swipeUp()); + onView(withText(R.string.resolver_work_tab)).perform(click()); + waitForIdle(); + + onView(withText(R.string.resolver_cant_access_work_apps)) + .check(matches(isDisplayed())); + } + + @Test + public void testWorkTab_noAppsAvailable_workOff_noAppsAvailableEmptyStateShown() { + // enable the work tab feature flag + ResolverActivity.ENABLE_TABBED_VIEW = true; + markWorkProfileUserAvailable(); + List<ResolvedComponentInfo> personalResolvedComponentInfos = + createResolvedComponentsForTest(3); + List<ResolvedComponentInfo> workResolvedComponentInfos = + createResolvedComponentsForTest(0); + setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); + Intent sendIntent = createSendImageIntent(); + sendIntent.setType("TestType"); + sOverrides.isQuietModeEnabled = true; mActivityRule.launchActivity(sendIntent); waitForIdle(); diff --git a/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java b/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java index 3e40466e4b64..d019704fb684 100644 --- a/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java +++ b/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java @@ -20,19 +20,24 @@ import static android.view.Display.DEFAULT_DISPLAY; import static org.junit.Assert.assertEquals; +import android.app.Activity; +import android.app.EmptyActivity; import android.content.Context; import android.hardware.display.DisplayManagerGlobal; import android.platform.test.annotations.Presubmit; import android.view.Display; import android.view.DisplayAdjustments; import android.view.DisplayInfo; +import android.view.WindowManager; +import android.view.WindowManagerImpl; -import androidx.test.InstrumentationRegistry; +import androidx.test.core.app.ApplicationProvider; import androidx.test.filters.SmallTest; +import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; - import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -46,9 +51,13 @@ public final class DecorContextTest { private Context mContext; private static final int EXTERNAL_DISPLAY = DEFAULT_DISPLAY + 1; + @Rule + public ActivityTestRule<EmptyActivity> mActivityRule = + new ActivityTestRule<>(EmptyActivity.class); + @Before - public void setUp() throws Exception { - mContext = InstrumentationRegistry.getContext(); + public void setUp() { + mContext = ApplicationProvider.getApplicationContext(); } @Test @@ -76,4 +85,19 @@ public final class DecorContextTest { Display associatedDisplay = decorContext.getDisplay(); assertEquals(expectedDisplayId, associatedDisplay.getDisplayId()); } + + @Test + public void testGetWindowManagerFromVisualDecorContext() throws Throwable { + mActivityRule.runOnUiThread(() -> { + Activity activity = mActivityRule.getActivity(); + final DecorContext decorContext = new DecorContext(mContext.getApplicationContext(), + activity); + WindowManagerImpl actualWm = (WindowManagerImpl) + decorContext.getSystemService(WindowManager.class); + WindowManagerImpl expectedWm = (WindowManagerImpl) + activity.getSystemService(WindowManager.class); + // Verify that window manager is from activity not application context. + assertEquals(expectedWm.mContext, actualWm.mContext); + }); + } } diff --git a/data/etc/framework-sysconfig.xml b/data/etc/framework-sysconfig.xml index 3d78eb9c59b7..2162ec421dcd 100644 --- a/data/etc/framework-sysconfig.xml +++ b/data/etc/framework-sysconfig.xml @@ -37,6 +37,7 @@ <allow-implicit-broadcast action="android.telephony.action.CARRIER_CONFIG_CHANGED" /> <allow-implicit-broadcast action="android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED" /> <allow-implicit-broadcast action="android.telephony.action.DEFAULT_SUBSCRIPTION_CHANGED" /> + <allow-implicit-broadcast action="android.telephony.action.MULTI_SIM_CONFIG_CHANGED" /> <allow-implicit-broadcast action="android.telephony.action.SECRET_CODE" /> <allow-implicit-broadcast action="android.telephony.action.SIM_APPLICATION_STATE_CHANGED" /> <allow-implicit-broadcast action="android.telephony.action.SIM_CARD_STATE_CHANGED" /> diff --git a/data/etc/preinstalled-packages-platform.xml b/data/etc/preinstalled-packages-platform.xml index efab27f96efa..17e1f2e0c229 100644 --- a/data/etc/preinstalled-packages-platform.xml +++ b/data/etc/preinstalled-packages-platform.xml @@ -97,8 +97,8 @@ The way that a device treats system packages that do not have any entry (for any is determined by the config resource value config_userTypePackageWhitelistMode. See frameworks/base/core/res/res/values/config.xml#config_userTypePackageWhitelistMode. -Changes to the whitelist during system updates can result in installing new system packages -to pre-existing users, but cannot uninstall system packages from pre-existing users. +Changes to the whitelist during system updates can result in installing additional system packages +to pre-existing users, but cannot uninstall pre-existing system packages from pre-existing users. --> <config> <install-in-user-type package="com.android.providers.settings"> diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index 1efde8681352..59bdf3dad43e 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -27,6 +27,10 @@ applications that come with the platform <permission name="android.permission.INTERACT_ACROSS_USERS" /> </privapp-permissions> + <privapp-permissions package="com.android.angle"> + <permission name="android.permission.WRITE_SECURE_SETTINGS"/> + </privapp-permissions> + <privapp-permissions package="com.android.apps.tag"> <permission name="android.permission.WRITE_SECURE_SETTINGS"/> </privapp-permissions> diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json index 99605ad64cb8..a871047a0602 100644 --- a/data/etc/services.core.protolog.json +++ b/data/etc/services.core.protolog.json @@ -193,12 +193,6 @@ "group": "WM_DEBUG_ORIENTATION", "at": "com\/android\/server\/wm\/WindowState.java" }, - "-1741065110": { - "message": "No app is requesting an orientation, return %d for display id=%d", - "level": "VERBOSE", - "group": "WM_DEBUG_ORIENTATION", - "at": "com\/android\/server\/wm\/DisplayContent.java" - }, "-1730156332": { "message": "Display id=%d rotation changed to %d from %d, lastOrientation=%d", "level": "VERBOSE", @@ -547,6 +541,12 @@ "group": "WM_DEBUG_APP_TRANSITIONS", "at": "com\/android\/server\/wm\/AppTransitionController.java" }, + "-993446393": { + "message": "App is requesting an orientation, return %d for display id=%d", + "level": "VERBOSE", + "group": "WM_DEBUG_ORIENTATION", + "at": "com\/android\/server\/wm\/TaskContainers.java" + }, "-993378225": { "message": "finishDrawingLocked: mDrawState=COMMIT_DRAW_PENDING %s in %s", "level": "VERBOSE", @@ -715,12 +715,6 @@ "group": "WM_DEBUG_REMOTE_ANIMATIONS", "at": "com\/android\/server\/wm\/RemoteAnimationController.java" }, - "-650040763": { - "message": "rotationForOrientation(orient=%d, last=%d); user=%d %s", - "level": "VERBOSE", - "group": "WM_DEBUG_ORIENTATION", - "at": "com\/android\/server\/wm\/DisplayRotation.java" - }, "-639305784": { "message": "Could not report config changes to the window token client.", "level": "WARN", @@ -1021,12 +1015,6 @@ "group": "WM_ERROR", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, - "44438983": { - "message": "performLayout: Activity exiting now removed %s", - "level": "VERBOSE", - "group": "WM_DEBUG_ADD_REMOVE", - "at": "com\/android\/server\/wm\/DisplayContent.java" - }, "45285419": { "message": "startingWindow was set but startingSurface==null, couldn't remove", "level": "VERBOSE", @@ -1087,6 +1075,12 @@ "group": "WM_SHOW_TRANSACTIONS", "at": "com\/android\/server\/wm\/WindowSurfaceController.java" }, + "137835146": { + "message": "No app is requesting an orientation, return %d for display id=%d", + "level": "VERBOSE", + "group": "WM_DEBUG_ORIENTATION", + "at": "com\/android\/server\/wm\/TaskContainers.java" + }, "140319294": { "message": "IME target changed within ActivityRecord", "level": "DEBUG", @@ -1531,12 +1525,6 @@ "group": "WM_DEBUG_REMOTE_ANIMATIONS", "at": "com\/android\/server\/wm\/RemoteAnimationController.java" }, - "845234215": { - "message": "App is requesting an orientation, return %d for display id=%d", - "level": "VERBOSE", - "group": "WM_DEBUG_ORIENTATION", - "at": "com\/android\/server\/wm\/DisplayContent.java" - }, "853091290": { "message": "Moved stack=%s behind stack=%s", "level": "DEBUG", @@ -1927,6 +1915,12 @@ "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, + "1685441447": { + "message": "performLayout: Activity exiting now removed %s", + "level": "VERBOSE", + "group": "WM_DEBUG_ADD_REMOVE", + "at": "com\/android\/server\/wm\/TaskContainers.java" + }, "1720229827": { "message": "Creating animation bounds layer", "level": "INFO", diff --git a/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java b/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java index 746378e10bc7..31ad81b9c346 100644 --- a/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java +++ b/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java @@ -975,6 +975,7 @@ public class AdaptiveIconDrawable extends Drawable implements Drawable.Callback mChangingConfigurations = orig.mChangingConfigurations; mChildrenChangingConfigurations = orig.mChildrenChangingConfigurations; + mSourceDrawableId = orig.mSourceDrawableId; for (int i = 0; i < N_CHILDREN; i++) { final ChildDrawable or = origChildDrawable[i]; diff --git a/libs/androidfw/Android.bp b/libs/androidfw/Android.bp index f87f98a59a12..02c85aa34f4b 100644 --- a/libs/androidfw/Android.bp +++ b/libs/androidfw/Android.bp @@ -44,7 +44,6 @@ cc_library { "AttributeResolution.cpp", "ChunkIterator.cpp", "ConfigDescription.cpp", - "DynamicLibManager.cpp", "Idmap.cpp", "LoadedArsc.cpp", "Locale.cpp", diff --git a/libs/androidfw/AssetManager2.cpp b/libs/androidfw/AssetManager2.cpp index f20e18453f8b..eaf452b5fa71 100644 --- a/libs/androidfw/AssetManager2.cpp +++ b/libs/androidfw/AssetManager2.cpp @@ -25,7 +25,6 @@ #include "android-base/logging.h" #include "android-base/stringprintf.h" -#include "androidfw/DynamicLibManager.h" #include "androidfw/ResourceUtils.h" #include "androidfw/Util.h" #include "utils/ByteOrder.h" @@ -67,12 +66,7 @@ struct FindEntryResult { StringPoolRef entry_string_ref; }; -AssetManager2::AssetManager2() : dynamic_lib_manager_(std::make_unique<DynamicLibManager>()) { - memset(&configuration_, 0, sizeof(configuration_)); -} - -AssetManager2::AssetManager2(DynamicLibManager* dynamic_lib_manager) - : dynamic_lib_manager_(dynamic_lib_manager) { +AssetManager2::AssetManager2() { memset(&configuration_, 0, sizeof(configuration_)); } @@ -91,6 +85,9 @@ void AssetManager2::BuildDynamicRefTable() { package_groups_.clear(); package_ids_.fill(0xff); + // A mapping from apk assets path to the runtime package id of its first loaded package. + std::unordered_map<std::string, uint8_t> apk_assets_package_ids; + // Overlay resources are not directly referenced by an application so their resource ids // can change throughout the application's lifetime. Assign overlay package ids last. std::vector<const ApkAssets*> sorted_apk_assets(apk_assets_); @@ -98,37 +95,25 @@ void AssetManager2::BuildDynamicRefTable() { return !a->IsOverlay(); }); - std::unordered_map<std::string, uint8_t> apk_assets_package_ids; - std::unordered_map<std::string, uint8_t> package_name_package_ids; - - // Assign stable package ids to application packages. - uint8_t next_available_package_id = 0U; - for (const auto& apk_assets : sorted_apk_assets) { - for (const auto& package : apk_assets->GetLoadedArsc()->GetPackages()) { - uint8_t package_id = package->GetPackageId(); - if (package->IsOverlay()) { - package_id = GetDynamicLibManager()->FindUnassignedId(next_available_package_id); - next_available_package_id = package_id + 1; - } else if (package->IsDynamic()) { - package_id = GetDynamicLibManager()->GetAssignedId(package->GetPackageName()); - } - - // Map the path of the apk assets to the package id of its first loaded package. - apk_assets_package_ids[apk_assets->GetPath()] = package_id; - - // Map the package name of the package to the first loaded package with that package id. - package_name_package_ids[package->GetPackageName()] = package_id; - } + // The assets cookie must map to the position of the apk assets in the unsorted apk assets list. + std::unordered_map<const ApkAssets*, ApkAssetsCookie> apk_assets_cookies; + apk_assets_cookies.reserve(apk_assets_.size()); + for (size_t i = 0, n = apk_assets_.size(); i < n; i++) { + apk_assets_cookies[apk_assets_[i]] = static_cast<ApkAssetsCookie>(i); } - const int apk_assets_count = apk_assets_.size(); - for (int i = 0; i < apk_assets_count; i++) { - const auto& apk_assets = apk_assets_[i]; - for (const auto& package : apk_assets->GetLoadedArsc()->GetPackages()) { - const auto package_id_entry = package_name_package_ids.find(package->GetPackageName()); - CHECK(package_id_entry != package_name_package_ids.end()) - << "no package id assgined to package " << package->GetPackageName(); - const uint8_t package_id = package_id_entry->second; + // 0x01 is reserved for the android package. + int next_package_id = 0x02; + for (const ApkAssets* apk_assets : sorted_apk_assets) { + const LoadedArsc* loaded_arsc = apk_assets->GetLoadedArsc(); + for (const std::unique_ptr<const LoadedPackage>& package : loaded_arsc->GetPackages()) { + // Get the package ID or assign one if a shared library. + int package_id; + if (package->IsDynamic()) { + package_id = next_package_id++; + } else { + package_id = package->GetPackageId(); + } // Add the mapping for package ID to index if not present. uint8_t idx = package_ids_[package_id]; @@ -162,7 +147,7 @@ void AssetManager2::BuildDynamicRefTable() { target_package_group.overlays_.push_back( ConfiguredOverlay{loaded_idmap->GetTargetResourcesMap(target_package_id, overlay_table.get()), - static_cast<ApkAssetsCookie>(i)}); + apk_assets_cookies[apk_assets]}); } } @@ -174,7 +159,7 @@ void AssetManager2::BuildDynamicRefTable() { // Add the package and to the set of packages with the same ID. package_group->packages_.push_back(ConfiguredPackage{package.get(), {}}); - package_group->cookies_.push_back(static_cast<ApkAssetsCookie>(i)); + package_group->cookies_.push_back(apk_assets_cookies[apk_assets]); // Add the package name -> build time ID mappings. for (const DynamicPackageEntry& entry : package->GetDynamicPackageMap()) { @@ -182,6 +167,8 @@ void AssetManager2::BuildDynamicRefTable() { package_group->dynamic_ref_table->mEntries.replaceValueFor( package_name, static_cast<uint8_t>(entry.package_id)); } + + apk_assets_package_ids.insert(std::make_pair(apk_assets->GetPath(), package_id)); } } @@ -1329,16 +1316,6 @@ uint8_t AssetManager2::GetAssignedPackageId(const LoadedPackage* package) const return 0; } -DynamicLibManager* AssetManager2::GetDynamicLibManager() const { - auto dynamic_lib_manager = - std::get_if<std::unique_ptr<DynamicLibManager>>(&dynamic_lib_manager_); - if (dynamic_lib_manager) { - return (*dynamic_lib_manager).get(); - } else { - return *std::get_if<DynamicLibManager*>(&dynamic_lib_manager_); - } -} - std::unique_ptr<Theme> AssetManager2::NewTheme() { return std::unique_ptr<Theme>(new Theme(this)); } diff --git a/libs/androidfw/DynamicLibManager.cpp b/libs/androidfw/DynamicLibManager.cpp deleted file mode 100644 index 895b7695bf26..000000000000 --- a/libs/androidfw/DynamicLibManager.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "androidfw/DynamicLibManager.h" - -namespace android { - -uint8_t DynamicLibManager::GetAssignedId(const std::string& library_package_name) { - auto lib_entry = shared_lib_package_ids_.find(library_package_name); - if (lib_entry != shared_lib_package_ids_.end()) { - return lib_entry->second; - } - - return shared_lib_package_ids_[library_package_name] = next_package_id_++; -} - -uint8_t DynamicLibManager::FindUnassignedId(uint8_t start_package_id) { - return (start_package_id < next_package_id_) ? next_package_id_ : start_package_id; -} - -} // namespace android diff --git a/libs/androidfw/include/androidfw/AssetManager2.h b/libs/androidfw/include/androidfw/AssetManager2.h index b2cec2a42994..e21abade99a4 100644 --- a/libs/androidfw/include/androidfw/AssetManager2.h +++ b/libs/androidfw/include/androidfw/AssetManager2.h @@ -27,7 +27,6 @@ #include "androidfw/ApkAssets.h" #include "androidfw/Asset.h" #include "androidfw/AssetManager.h" -#include "androidfw/DynamicLibManager.h" #include "androidfw/ResourceTypes.h" #include "androidfw/Util.h" @@ -95,7 +94,6 @@ class AssetManager2 { }; AssetManager2(); - explicit AssetManager2(DynamicLibManager* dynamic_lib_manager); // Sets/resets the underlying ApkAssets for this AssetManager. The ApkAssets // are not owned by the AssetManager, and must have a longer lifetime. @@ -126,6 +124,9 @@ class AssetManager2 { // This may be nullptr if the APK represented by `cookie` has no resource table. std::shared_ptr<const DynamicRefTable> GetDynamicRefTableForCookie(ApkAssetsCookie cookie) const; + // Retrieve the assigned package id of the package if loaded into this AssetManager + uint8_t GetAssignedPackageId(const LoadedPackage* package) const; + // Returns a string representation of the overlayable API of a package. bool GetOverlayablesToString(const android::StringPiece& package_name, std::string* out) const; @@ -370,11 +371,6 @@ class AssetManager2 { // been seen while traversing bag parents. const ResolvedBag* GetBag(uint32_t resid, std::vector<uint32_t>& child_resids); - // Retrieve the assigned package id of the package if loaded into this AssetManager - uint8_t GetAssignedPackageId(const LoadedPackage* package) const; - - DynamicLibManager* GetDynamicLibManager() const; - // The ordered list of ApkAssets to search. These are not owned by the AssetManager, and must // have a longer lifetime. std::vector<const ApkAssets*> apk_assets_; @@ -393,9 +389,6 @@ class AssetManager2 { // may need to be purged. ResTable_config configuration_; - // Component responsible for assigning package ids to shared libraries. - std::variant<std::unique_ptr<DynamicLibManager>, DynamicLibManager*> dynamic_lib_manager_; - // Cached set of bags. These are cached because they can inherit keys from parent bags, // which involves some calculation. std::unordered_map<uint32_t, util::unique_cptr<ResolvedBag>> cached_bags_; diff --git a/libs/androidfw/include/androidfw/DynamicLibManager.h b/libs/androidfw/include/androidfw/DynamicLibManager.h deleted file mode 100644 index 1ff7079573d2..000000000000 --- a/libs/androidfw/include/androidfw/DynamicLibManager.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROIDFW_DYNAMICLIBMANAGER_H -#define ANDROIDFW_DYNAMICLIBMANAGER_H - -#include <string> -#include <unordered_map> - -#include "android-base/macros.h" - -namespace android { - -// Manages assigning resource ids for dynamic resources. -class DynamicLibManager { - public: - DynamicLibManager() = default; - - // Retrieves the assigned package id for the library. - uint8_t GetAssignedId(const std::string& library_package_name); - - // Queries in ascending order for the first available package id that is not currently assigned to - // a library. - uint8_t FindUnassignedId(uint8_t start_package_id); - - private: - DISALLOW_COPY_AND_ASSIGN(DynamicLibManager); - - uint8_t next_package_id_ = 0x02; - std::unordered_map<std::string, uint8_t> shared_lib_package_ids_; -}; - -} // namespace android - -#endif //ANDROIDFW_DYNAMICLIBMANAGER_H diff --git a/libs/androidfw/include/androidfw/MutexGuard.h b/libs/androidfw/include/androidfw/MutexGuard.h index 8891512958f0..64924f433245 100644 --- a/libs/androidfw/include/androidfw/MutexGuard.h +++ b/libs/androidfw/include/androidfw/MutexGuard.h @@ -47,8 +47,7 @@ class Guarded { static_assert(!std::is_pointer<T>::value, "T must not be a raw pointer"); public: - template <typename ...Args> - explicit Guarded(Args&& ...args) : guarded_(std::forward<Args>(args)...) { + explicit Guarded() : guarded_() { } template <typename U = T> diff --git a/libs/androidfw/tests/AssetManager2_test.cpp b/libs/androidfw/tests/AssetManager2_test.cpp index ac32699c6dfd..8c255d16fe1f 100644 --- a/libs/androidfw/tests/AssetManager2_test.cpp +++ b/libs/androidfw/tests/AssetManager2_test.cpp @@ -17,9 +17,9 @@ #include "androidfw/AssetManager2.h" #include "androidfw/AssetManager.h" -#include "android-base/logging.h" - #include "TestHelpers.h" +#include "android-base/file.h" +#include "android-base/logging.h" #include "androidfw/ResourceUtils.h" #include "data/appaslib/R.h" #include "data/basic/R.h" @@ -45,37 +45,43 @@ namespace android { class AssetManager2Test : public ::testing::Test { public: void SetUp() override { - basic_assets_ = ApkAssets::Load(GetTestDataPath() + "/basic/basic.apk"); + // Move to the test data directory so the idmap can locate the overlay APK. + std::string original_path = base::GetExecutableDirectory(); + chdir(GetTestDataPath().c_str()); + + basic_assets_ = ApkAssets::Load("basic/basic.apk"); ASSERT_NE(nullptr, basic_assets_); - basic_de_fr_assets_ = ApkAssets::Load(GetTestDataPath() + "/basic/basic_de_fr.apk"); + basic_de_fr_assets_ = ApkAssets::Load("basic/basic_de_fr.apk"); ASSERT_NE(nullptr, basic_de_fr_assets_); - style_assets_ = ApkAssets::Load(GetTestDataPath() + "/styles/styles.apk"); + style_assets_ = ApkAssets::Load("styles/styles.apk"); ASSERT_NE(nullptr, style_assets_); - lib_one_assets_ = ApkAssets::Load(GetTestDataPath() + "/lib_one/lib_one.apk"); + lib_one_assets_ = ApkAssets::Load("lib_one/lib_one.apk"); ASSERT_NE(nullptr, lib_one_assets_); - lib_two_assets_ = ApkAssets::Load(GetTestDataPath() + "/lib_two/lib_two.apk"); + lib_two_assets_ = ApkAssets::Load("lib_two/lib_two.apk"); ASSERT_NE(nullptr, lib_two_assets_); - libclient_assets_ = ApkAssets::Load(GetTestDataPath() + "/libclient/libclient.apk"); + libclient_assets_ = ApkAssets::Load("libclient/libclient.apk"); ASSERT_NE(nullptr, libclient_assets_); - appaslib_assets_ = ApkAssets::Load(GetTestDataPath() + "/appaslib/appaslib.apk", - PROPERTY_DYNAMIC); + appaslib_assets_ = ApkAssets::Load("appaslib/appaslib.apk", PROPERTY_DYNAMIC); ASSERT_NE(nullptr, appaslib_assets_); - system_assets_ = ApkAssets::Load(GetTestDataPath() + "/system/system.apk", - PROPERTY_SYSTEM); + system_assets_ = ApkAssets::Load("system/system.apk", PROPERTY_SYSTEM); ASSERT_NE(nullptr, system_assets_); - app_assets_ = ApkAssets::Load(GetTestDataPath() + "/app/app.apk"); + app_assets_ = ApkAssets::Load("app/app.apk"); ASSERT_THAT(app_assets_, NotNull()); - overlayable_assets_ = ApkAssets::Load(GetTestDataPath() + "/overlayable/overlayable.apk"); + overlay_assets_ = ApkAssets::LoadOverlay("overlay/overlay.idmap"); + ASSERT_NE(nullptr, overlay_assets_); + + overlayable_assets_ = ApkAssets::Load("overlayable/overlayable.apk"); ASSERT_THAT(overlayable_assets_, NotNull()); + chdir(original_path.c_str()); } protected: @@ -88,6 +94,7 @@ class AssetManager2Test : public ::testing::Test { std::unique_ptr<const ApkAssets> appaslib_assets_; std::unique_ptr<const ApkAssets> system_assets_; std::unique_ptr<const ApkAssets> app_assets_; + std::unique_ptr<const ApkAssets> overlay_assets_; std::unique_ptr<const ApkAssets> overlayable_assets_; }; @@ -216,23 +223,24 @@ TEST_F(AssetManager2Test, FindsResourceFromAppLoadedAsSharedLibrary) { EXPECT_EQ(fix_package_id(appaslib::R::array::integerArray1, 0x02), value.data); } -TEST_F(AssetManager2Test, AssignsUnchangingPackageIdToSharedLibrary) { - DynamicLibManager lib_manager; - AssetManager2 assetmanager(&lib_manager); +TEST_F(AssetManager2Test, AssignsOverlayPackageIdLast) { + AssetManager2 assetmanager; assetmanager.SetApkAssets( - {lib_one_assets_.get(), lib_two_assets_.get(), libclient_assets_.get()}); - - AssetManager2 assetmanager2(&lib_manager); - assetmanager2.SetApkAssets( - {lib_two_assets_.get(), lib_one_assets_.get(), libclient_assets_.get()}); + {overlayable_assets_.get(), overlay_assets_.get(), lib_one_assets_.get()}); - uint32_t res_id = assetmanager.GetResourceId("com.android.lib_one:string/foo"); - ASSERT_NE(0U, res_id); + auto apk_assets = assetmanager.GetApkAssets(); + ASSERT_EQ(3, apk_assets.size()); + ASSERT_EQ(overlayable_assets_.get(), apk_assets[0]); + ASSERT_EQ(overlay_assets_.get(), apk_assets[1]); + ASSERT_EQ(lib_one_assets_.get(), apk_assets[2]); - uint32_t res_id_2 = assetmanager2.GetResourceId("com.android.lib_one:string/foo"); - ASSERT_NE(0U, res_id_2); + auto get_first_package_id = [&assetmanager](const ApkAssets* apkAssets) -> uint8_t { + return assetmanager.GetAssignedPackageId(apkAssets->GetLoadedArsc()->GetPackages()[0].get()); + }; - ASSERT_EQ(res_id, res_id_2); + ASSERT_EQ(get_first_package_id(overlayable_assets_.get()), 0x7f); + ASSERT_EQ(get_first_package_id(overlay_assets_.get()), 0x03); + ASSERT_EQ(get_first_package_id(lib_one_assets_.get()), 0x02); } TEST_F(AssetManager2Test, GetSharedLibraryResourceName) { @@ -770,7 +778,6 @@ TEST_F(AssetManager2Test, GetOverlayablesToString) { ASSERT_EQ(api.find("not_overlayable"), std::string::npos); ASSERT_NE(api.find("resource='com.android.overlayable:string/overlayable2' overlayable='OverlayableResources1' actor='overlay://theme' policy='0x0000000a'\n"), std::string::npos); - } } // namespace android diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 4299dd3b46fe..c19b1878ad45 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -555,9 +555,11 @@ void CanvasContext::draw() { FrameInfo* forthBehind = mLast4FrameInfos.front().first; int64_t composedFrameId = mLast4FrameInfos.front().second; nsecs_t acquireTime = -1; - native_window_get_frame_timestamps(mNativeSurface->getNativeWindow(), composedFrameId, - nullptr, &acquireTime, nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr); + if (mNativeSurface) { + native_window_get_frame_timestamps(mNativeSurface->getNativeWindow(), composedFrameId, + nullptr, &acquireTime, nullptr, nullptr, nullptr, + nullptr, nullptr, nullptr, nullptr); + } // Ignore default -1, NATIVE_WINDOW_TIMESTAMP_INVALID and NATIVE_WINDOW_TIMESTAMP_PENDING forthBehind->set(FrameInfoIndex::GpuCompleted) = acquireTime > 0 ? acquireTime : -1; mJankTracker.finishGpuDraw(*forthBehind); diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl index 8600dc48c6a4..415092623531 100644 --- a/location/java/android/location/ILocationManager.aidl +++ b/location/java/android/location/ILocationManager.aidl @@ -47,16 +47,14 @@ interface ILocationManager Location getLastLocation(in LocationRequest request, String packageName, String featureId); boolean getCurrentLocation(in LocationRequest request, in ICancellationSignal cancellationSignal, in ILocationListener listener, - String packageName, String featureId, String listenerIdentifier); + String packageName, String featureId); void requestLocationUpdates(in LocationRequest request, in ILocationListener listener, - in PendingIntent intent, String packageName, String featureId, - String listenerIdentifier); - void removeUpdates(in ILocationListener listener, in PendingIntent intent, String packageName); + in PendingIntent intent, String packageName, String featureId); + void removeUpdates(in ILocationListener listener, in PendingIntent intent); void requestGeofence(in LocationRequest request, in Geofence geofence, - in PendingIntent intent, String packageName, String featureId, - String listenerIdentifier); + in PendingIntent intent, String packageName, String featureId); void removeGeofence(in Geofence fence, in PendingIntent intent, String packageName); boolean registerGnssStatusCallback(IGnssStatusListener callback, String packageName, @@ -73,34 +71,31 @@ interface ILocationManager boolean addGnssMeasurementsListener(in GnssRequest request, in IGnssMeasurementsListener listener, - String packageName, String featureId, - String listenerIdentifier); + String packageName, String featureId); void injectGnssMeasurementCorrections(in GnssMeasurementCorrections corrections, in String packageName); - long getGnssCapabilities(in String packageName); + long getGnssCapabilities(); void removeGnssMeasurementsListener(in IGnssMeasurementsListener listener); boolean addGnssAntennaInfoListener(in IGnssAntennaInfoListener listener, - String packageName, String featureId, String listenerIdentifier); + String packageName, String featureId); void removeGnssAntennaInfoListener(in IGnssAntennaInfoListener listener); boolean addGnssNavigationMessageListener(in IGnssNavigationMessageListener listener, - String packageName, String featureId, String listenerIdentifier); + String packageName, String featureId); void removeGnssNavigationMessageListener(in IGnssNavigationMessageListener listener); int getGnssYearOfHardware(); String getGnssHardwareModelName(); int getGnssBatchSize(String packageName); - boolean addGnssBatchingCallback(in IBatchedLocationCallback callback, String packageName, - String featureId, String listenerIdentifier); + boolean addGnssBatchingCallback(in IBatchedLocationCallback callback, String packageName, String featureId); void removeGnssBatchingCallback(); - boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName); + boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName, String featureId); void flushGnssBatch(String packageName); boolean stopGnssBatch(); void injectLocation(in Location location); - @UnsupportedAppUsage List<String> getAllProviders(); List<String> getProviders(in Criteria criteria, boolean enabledOnly); String getBestProvider(in Criteria criteria, boolean enabledOnly); @@ -116,11 +111,11 @@ interface ILocationManager boolean isProviderEnabledForUser(String provider, int userId); boolean isLocationEnabledForUser(int userId); void setLocationEnabledForUser(boolean enabled, int userId); - void addTestProvider(String name, in ProviderProperties properties, String opPackageName); - void removeTestProvider(String provider, String opPackageName); - void setTestProviderLocation(String provider, in Location loc, String opPackageName); - void setTestProviderEnabled(String provider, boolean enabled, String opPackageName); - List<LocationRequest> getTestProviderCurrentRequests(String provider, String opPackageName); + void addTestProvider(String name, in ProviderProperties properties, String packageName, String featureId); + void removeTestProvider(String provider, String packageName, String featureId); + void setTestProviderLocation(String provider, in Location location, String packageName, String featureId); + void setTestProviderEnabled(String provider, boolean enabled, String packageName, String featureId); + List<LocationRequest> getTestProviderCurrentRequests(String provider); LocationTime getGnssTimeMillis(); boolean sendExtraCommand(String provider, String command, inout Bundle extras); diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java index 6724324bfcb9..9aa0c870e512 100644 --- a/location/java/android/location/Location.java +++ b/location/java/android/location/Location.java @@ -585,6 +585,16 @@ public class Location implements Parcelable { return mElapsedRealtimeNanos; } + /** @hide */ + public long getElapsedRealtimeAgeNanos(long referenceRealtimeNs) { + return referenceRealtimeNs - mElapsedRealtimeNanos; + } + + /** @hide */ + public long getElapsedRealtimeAgeNanos() { + return getElapsedRealtimeAgeNanos(SystemClock.elapsedRealtimeNanos()); + } + /** * Set the time of this fix, in elapsed real-time since system boot. * diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index ff7049ee565b..fcbd3e540291 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -652,19 +652,6 @@ public class LocationManager { } /** - * Create a string that allows an app to identify a listener - * - * @param listener The listener - * - * @return A identifying string - */ - private static String getListenerIdentifier(@NonNull Object listener) { - return listener.getClass().getName() - + '@' - + Integer.toHexString(System.identityHashCode(listener)); - } - - /** * Asynchronously returns a single current location fix. This may activate sensors in order to * compute a new location, unlike {@link #getLastKnownLocation(String)}, which will only return * a cached fix if available. The given callback will be invoked once and only once, either with @@ -742,8 +729,7 @@ public class LocationManager { try { if (mService.getCurrentLocation(currentLocationRequest, remoteCancellationSignal, - listenerTransport, mContext.getPackageName(), mContext.getAttributionTag(), - getListenerIdentifier(consumer))) { + listenerTransport, mContext.getPackageName(), mContext.getAttributionTag())) { listenerTransport.register(mContext.getSystemService(AlarmManager.class), remoteCancellationSignal); if (cancellationSignal != null) { @@ -1189,8 +1175,7 @@ public class LocationManager { boolean registered = false; try { mService.requestLocationUpdates(locationRequest, transport, null, - mContext.getPackageName(), mContext.getAttributionTag(), - getListenerIdentifier(listener)); + mContext.getPackageName(), mContext.getAttributionTag()); registered = true; } catch (RemoteException e) { throw e.rethrowFromSystemServer(); @@ -1235,8 +1220,7 @@ public class LocationManager { try { mService.requestLocationUpdates(locationRequest, null, pendingIntent, - mContext.getPackageName(), mContext.getAttributionTag(), - getListenerIdentifier(pendingIntent)); + mContext.getPackageName(), mContext.getAttributionTag()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1293,7 +1277,7 @@ public class LocationManager { transport.unregister(); try { - mService.removeUpdates(transport, null, mContext.getPackageName()); + mService.removeUpdates(transport, null); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1312,7 +1296,7 @@ public class LocationManager { Preconditions.checkArgument(pendingIntent != null, "invalid null pending intent"); try { - mService.removeUpdates(null, pendingIntent, mContext.getPackageName()); + mService.removeUpdates(null, pendingIntent); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1515,7 +1499,8 @@ public class LocationManager { requiresSatellite, requiresCell, hasMonetaryCost, supportsAltitude, supportsSpeed, supportsBearing, powerRequirement, accuracy); try { - mService.addTestProvider(provider, properties, mContext.getOpPackageName()); + mService.addTestProvider(provider, properties, mContext.getOpPackageName(), + mContext.getAttributionTag()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1536,7 +1521,8 @@ public class LocationManager { Preconditions.checkArgument(provider != null, "invalid null provider"); try { - mService.removeTestProvider(provider, mContext.getOpPackageName()); + mService.removeTestProvider(provider, mContext.getOpPackageName(), + mContext.getAttributionTag()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1570,7 +1556,8 @@ public class LocationManager { } try { - mService.setTestProviderLocation(provider, location, mContext.getOpPackageName()); + mService.setTestProviderLocation(provider, location, mContext.getOpPackageName(), + mContext.getAttributionTag()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1599,7 +1586,8 @@ public class LocationManager { Preconditions.checkArgument(provider != null, "invalid null provider"); try { - mService.setTestProviderEnabled(provider, enabled, mContext.getOpPackageName()); + mService.setTestProviderEnabled(provider, enabled, mContext.getOpPackageName(), + mContext.getAttributionTag()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1643,8 +1631,7 @@ public class LocationManager { public List<LocationRequest> getTestProviderCurrentRequests(String providerName) { Preconditions.checkArgument(providerName != null, "invalid null provider"); try { - return mService.getTestProviderCurrentRequests(providerName, - mContext.getOpPackageName()); + return mService.getTestProviderCurrentRequests(providerName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1711,7 +1698,7 @@ public class LocationManager { LocationRequest request = new LocationRequest().setExpireIn(expiration); try { mService.requestGeofence(request, fence, intent, mContext.getPackageName(), - mContext.getAttributionTag(), getListenerIdentifier(intent)); + mContext.getAttributionTag()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1798,7 +1785,7 @@ public class LocationManager { try { mService.requestGeofence(request, fence, intent, mContext.getPackageName(), - mContext.getAttributionTag(), getListenerIdentifier(intent)); + mContext.getAttributionTag()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1867,7 +1854,7 @@ public class LocationManager { */ public @NonNull GnssCapabilities getGnssCapabilities() { try { - long gnssCapabilities = mService.getGnssCapabilities(mContext.getPackageName()); + long gnssCapabilities = mService.getGnssCapabilities(); if (gnssCapabilities == GnssCapabilities.INVALID_CAPABILITIES) { gnssCapabilities = 0L; } @@ -2493,7 +2480,7 @@ public class LocationManager { try { if (mBatchedLocationCallbackManager.addListener(callback, handler)) { return mService.startGnssBatch(periodNanos, wakeOnFifoFull, - mContext.getPackageName()); + mContext.getPackageName(), mContext.getAttributionTag()); } return false; } catch (RemoteException e) { @@ -3012,7 +2999,7 @@ public class LocationManager { GnssMeasurementsListener transport = new GnssMeasurementsListener(); if (mService.addGnssMeasurementsListener(request, transport, mContext.getPackageName(), - mContext.getAttributionTag(), "gnss measurement callback")) { + mContext.getAttributionTag())) { mListenerTransport = transport; return true; } else { @@ -3065,7 +3052,7 @@ public class LocationManager { GnssNavigationMessageListener transport = new GnssNavigationMessageListener(); if (mService.addGnssNavigationMessageListener(transport, mContext.getPackageName(), - mContext.getAttributionTag(), "gnss navigation callback")) { + mContext.getAttributionTag())) { mListenerTransport = transport; return true; } else { @@ -3106,7 +3093,7 @@ public class LocationManager { GnssAntennaInfoListener transport = new GnssAntennaInfoListener(); if (mService.addGnssAntennaInfoListener(transport, mContext.getPackageName(), - mContext.getAttributionTag(), "gnss antenna info callback")) { + mContext.getAttributionTag())) { mListenerTransport = transport; return true; } else { @@ -3143,7 +3130,7 @@ public class LocationManager { BatchedLocationCallback transport = new BatchedLocationCallback(); if (mService.addGnssBatchingCallback(transport, mContext.getPackageName(), - mContext.getAttributionTag(), "batched location callback")) { + mContext.getAttributionTag())) { mListenerTransport = transport; return true; } else { diff --git a/media/java/android/media/AudioDeviceInfo.java b/media/java/android/media/AudioDeviceInfo.java index 9950f05560d7..db2a1e8b6e7c 100644 --- a/media/java/android/media/AudioDeviceInfo.java +++ b/media/java/android/media/AudioDeviceInfo.java @@ -432,7 +432,7 @@ public final class AudioDeviceInfo { * @return An array of supported encapsulation modes for the device. This * may be an empty array if no encapsulation modes are supported. */ - public @NonNull int[] getEncapsulationModes() { + public @NonNull @AudioTrack.EncapsulationMode int[] getEncapsulationModes() { // Implement a getter in r-dev or r-tv-dev as needed. return new int[0]; // be careful of returning a copy of any internal data. } @@ -451,7 +451,7 @@ public final class AudioDeviceInfo { * @return An array of supported encapsulation metadata types for the device. This * may be an empty array if no metadata types are supported. */ - public @NonNull int[] getEncapsulationMetadataTypes() { + public @NonNull @AudioTrack.EncapsulationMetadataType int[] getEncapsulationMetadataTypes() { // Implement a getter in r-dev or r-tv-dev as needed. return new int[0]; // be careful of returning a copy of any internal data. } diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index fffdd683f22c..7408987e465e 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -4769,7 +4769,7 @@ public class AudioManager { * opened on that device. * * @param device an instance of {@link AudioDeviceInfo} returned from {@link getDevices()}. - * @param delayMs delay in milliseconds desired. This should be in range of {@code 0} + * @param delayMillis delay in milliseconds desired. This should be in range of {@code 0} * to the value returned by {@link #getMaxAdditionalOutputDeviceDelay()}. * @return true if successful, false if the device does not support output device delay * or the delay is not in range of {@link #getMaxAdditionalOutputDeviceDelay()}. @@ -4777,7 +4777,7 @@ public class AudioManager { @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setAdditionalOutputDeviceDelay( - @NonNull AudioDeviceInfo device, @IntRange(from = 0) int delayMs) { + @NonNull AudioDeviceInfo device, @IntRange(from = 0) long delayMillis) { Objects.requireNonNull(device); // Implement the setter in r-dev or r-tv-dev as needed. return false; @@ -4793,7 +4793,7 @@ public class AudioManager { */ @SystemApi @IntRange(from = 0) - public int getAdditionalOutputDeviceDelay(@NonNull AudioDeviceInfo device) { + public long getAdditionalOutputDeviceDelay(@NonNull AudioDeviceInfo device) { Objects.requireNonNull(device); // Implement the getter in r-dev or r-tv-dev as needed. return 0; @@ -4811,7 +4811,7 @@ public class AudioManager { */ @SystemApi @IntRange(from = 0) - public int getMaxAdditionalOutputDeviceDelay(@NonNull AudioDeviceInfo device) { + public long getMaxAdditionalOutputDeviceDelay(@NonNull AudioDeviceInfo device) { Objects.requireNonNull(device); // Implement the getter in r-dev or r-tv-dev as needed. return 0; @@ -5987,6 +5987,20 @@ public class AudioManager { } } + /** + * Set whether or not there is an active RTT call. + * This method should be called by Telecom service. + * @hide + * TODO: make this a @SystemApi + */ + public static void setRttEnabled(boolean rttEnabled) { + try { + getService().setRttEnabled(rttEnabled); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + //--------------------------------------------------------- // Inner classes //-------------------- diff --git a/media/java/android/media/AudioMetadata.java b/media/java/android/media/AudioMetadata.java index 1a9517cafdde..c91ff0d099cf 100644 --- a/media/java/android/media/AudioMetadata.java +++ b/media/java/android/media/AudioMetadata.java @@ -79,96 +79,11 @@ public final class AudioMetadata { } /** - * A read only {@code Map} interface of {@link Key} value pairs. - * - * <p>Using a {@link Key} interface, the map looks up the corresponding value.</p> - */ - public interface ReadMap { - /** - * Returns true if the key exists in the map. - * - * @param key interface for requesting the value. - * @param <T> type of value. - * @return true if key exists in the Map. - */ - <T> boolean containsKey(@NonNull Key<T> key); - - /** - * Returns a copy of the map. - * - * This is intended for safe conversion between a {@link ReadMap} - * interface and a {@link Map} interface. - * Currently only simple objects are used for key values which - * means a shallow copy is sufficient. - * - * @return a Map copied from the existing map. - */ - @NonNull - Map dup(); // lint checker doesn't like clone(). - - /** - * Returns the value associated with the key. - * - * @param key interface for requesting the value. - * @param <T> type of value. - * @return returns the value of associated with key or null if it doesn't exist. - */ - @Nullable - <T> T get(@NonNull Key<T> key); - - /** - * Returns a {@code Set} of keys associated with the map. - * @hide - */ - @NonNull - Set<Key<?>> keySet(); - - /** - * Returns the number of elements in the map. - */ - int size(); - } - - /** - * A writeable {@link Map} interface of {@link Key} value pairs. - * This interface is not guaranteed to be thread-safe - * unless the supplier for the {@code Map} states it as thread safe. - */ - // TODO: Create a wrapper like java.util.Collections.synchronizedMap? - public interface Map extends ReadMap { - /** - * Removes the value associated with the key. - * @param key interface for storing the value. - * @param <T> type of value. - * @return the value of the key, null if it doesn't exist. - */ - @Nullable - <T> T remove(@NonNull Key<T> key); - - /** - * Sets a value for the key. - * - * @param key interface for storing the value. - * @param <T> type of value. - * @param value a non-null value of type T. - * @return the previous value associated with key or null if it doesn't exist. - */ - // See automatic Kotlin overloading for Java interoperability. - // https://kotlinlang.org/docs/reference/java-interop.html#operators - // See also Kotlin set for overloaded operator indexing. - // https://kotlinlang.org/docs/reference/operator-overloading.html#indexed - // Also the Kotlin mutable-list set. - // https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-mutable-list/set.html - @Nullable - <T> T set(@NonNull Key<T> key, @NonNull T value); - } - - /** - * Creates a {@link Map} suitable for adding keys. - * @return an empty {@link Map} instance. + * Creates a {@link AudioMetadataMap} suitable for adding keys. + * @return an empty {@link AudioMetadataMap} instance. */ @NonNull - public static Map createMap() { + public static AudioMetadataMap createMap() { return new BaseMap(); } @@ -339,7 +254,7 @@ public final class AudioMetadata { * It is possible to require the keys to be of a certain class * before allowing a set or get operation. */ - public static class BaseMap implements Map { + public static class BaseMap implements AudioMetadataMap { @Override public <T> boolean containsKey(@NonNull Key<T> key) { Pair<Key<?>, Object> valuePair = mHashMap.get(pairFromKey(key)); @@ -348,7 +263,7 @@ public final class AudioMetadata { @Override @NonNull - public Map dup() { + public AudioMetadataMap dup() { BaseMap map = new BaseMap(); map.mHashMap.putAll(this.mHashMap); return map; diff --git a/media/java/android/media/AudioMetadataMap.java b/media/java/android/media/AudioMetadataMap.java new file mode 100644 index 000000000000..196193174754 --- /dev/null +++ b/media/java/android/media/AudioMetadataMap.java @@ -0,0 +1,59 @@ +/* + * 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.media; + +import android.annotation.NonNull; +import android.annotation.Nullable; + +/** + * AudioMetadataMap is a writeable {@code Map}-style + * interface of {@link AudioMetadata.Key} value pairs. + * This interface is not guaranteed to be thread-safe + * unless the underlying implementation for the {@code AudioMetadataMap} + * states it as thread safe. + * + * {@see AudioMetadataReadMap} + */ +// TODO: Create a wrapper like java.util.Collections.synchronizedMap? + +public interface AudioMetadataMap extends AudioMetadataReadMap { + /** + * Removes the value associated with the key. + * @param key interface for storing the value. + * @param <T> type of value. + * @return the value of the key, null if it doesn't exist. + */ + @Nullable + <T> T remove(@NonNull AudioMetadata.Key<T> key); + + /** + * Sets a value for the key. + * + * @param key interface for storing the value. + * @param <T> type of value. + * @param value a non-null value of type T. + * @return the previous value associated with key or null if it doesn't exist. + */ + // See automatic Kotlin overloading for Java interoperability. + // https://kotlinlang.org/docs/reference/java-interop.html#operators + // See also Kotlin set for overloaded operator indexing. + // https://kotlinlang.org/docs/reference/operator-overloading.html#indexed + // Also the Kotlin mutable-list set. + // https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-mutable-list/set.html + @Nullable + <T> T set(@NonNull AudioMetadata.Key<T> key, @NonNull T value); +} diff --git a/media/java/android/media/AudioMetadataReadMap.java b/media/java/android/media/AudioMetadataReadMap.java new file mode 100644 index 000000000000..e74242a292d4 --- /dev/null +++ b/media/java/android/media/AudioMetadataReadMap.java @@ -0,0 +1,81 @@ +/* + * 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.media; + +import android.annotation.IntRange; +import android.annotation.NonNull; +import android.annotation.Nullable; + +import java.util.Set; + +/** + * A read only {@code Map}-style interface of {@link AudioMetadata.Key} value pairs used + * for {@link AudioMetadata}. + * + * <p>Using a {@link AudioMetadata.Key} interface, + * this map looks up the corresponding value. + * Read-only maps are thread-safe for lookup, but the underlying object + * values may need their own thread protection if mutable.</p> + * + * {@see AudioMetadataMap} + */ +public interface AudioMetadataReadMap { + /** + * Returns true if the key exists in the map. + * + * @param key interface for requesting the value. + * @param <T> type of value. + * @return true if key exists in the Map. + */ + <T> boolean containsKey(@NonNull AudioMetadata.Key<T> key); + + /** + * Returns a copy of the map. + * + * This is intended for safe conversion between a {@link AudioMetadataReadMap} + * interface and a {@link AudioMetadataMap} interface. + * Currently only simple objects are used for key values which + * means a shallow copy is sufficient. + * + * @return a Map copied from the existing map. + */ + @NonNull + AudioMetadataMap dup(); // lint checker doesn't like clone(). + + /** + * Returns the value associated with the key. + * + * @param key interface for requesting the value. + * @param <T> type of value. + * @return returns the value of associated with key or null if it doesn't exist. + */ + @Nullable + <T> T get(@NonNull AudioMetadata.Key<T> key); + + /** + * Returns a {@code Set} of keys associated with the map. + * @hide + */ + @NonNull + Set<AudioMetadata.Key<?>> keySet(); + + /** + * Returns the number of elements in the map. + */ + @IntRange(from = 0) + int size(); +} diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index 0a56accd1636..155eb1cfbd46 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -1233,6 +1233,11 @@ public class AudioSystem * Communicate UIDs of active accessibility services to audio policy service. */ public static native int setA11yServicesUids(int[] uids); + /** + * Communicate UID of current InputMethodService to audio policy service. + */ + public static native int setCurrentImeUid(int uid); + /** * @see AudioManager#isHapticPlaybackSupported() diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index d17e42996726..1d229b80cb2c 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -918,7 +918,29 @@ public class AudioTrack extends PlayerBase private final int mContentId; private final int mSyncId; - private TunerConfiguration(int contentId, int syncId) { + /** + * Constructs a TunerConfiguration instance for use in {@link AudioTrack.Builder} + * + * @param contentId selects the audio stream to use. + * The contentId may be obtained from + * {@link android.media.tv.tuner.filter.Filter#getId()}. + * This is always a positive number. + * @param syncId selects the clock to use for synchronization + * of audio with other streams such as video. + * The syncId may be obtained from + * {@link android.media.tv.tuner.Tuner#getAvSyncHwId()}. + * This is always a positive number. + */ + @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) + public TunerConfiguration( + @IntRange(from = 1) int contentId, @IntRange(from = 1)int syncId) { + if (contentId < 1) { + throw new IllegalArgumentException( + "contentId " + contentId + " must be positive"); + } + if (syncId < 1) { + throw new IllegalArgumentException("syncId " + syncId + " must be positive"); + } mContentId = contentId; mSyncId = syncId; } @@ -938,73 +960,6 @@ public class AudioTrack extends PlayerBase public @IntRange(from = 1) int getSyncId() { return mSyncId; // The Builder ensures this is > 0. } - - /** - * Builder class for {@link AudioTrack.TunerConfiguration} objects. - */ - public static class Builder { - private int mContentId; - private int mSyncId; - - /** - * Sets the contentId from the Tuner filter. - * - * @param contentId selects the audio stream to use. - * The contentId may be obtained from - * {@link android.media.tv.tuner.filter.Filter#getId()}. - * This is always a positive number. - * - * @return the same Builder instance. - */ - @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) - public @NonNull Builder setContentId(@IntRange(from = 1) int contentId) { - if (contentId < 1) { - throw new IllegalArgumentException( - "contentId " + contentId + " must be positive"); - } - mContentId = contentId; - return this; - } - - /** - * Sets the syncId from the Tuner filter. - * - * @param syncId selects the clock to use for synchronization - * of audio with other streams such as video. - * The syncId may be obtained from - * {@link android.media.tv.tuner.Tuner#getAvSyncHwId()}. - * This is always a positive number. - * - * @return the same Builder instance. - */ - @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) - public @NonNull Builder setSyncId(@IntRange(from = 1) int syncId) { - if (syncId < 1) { - throw new IllegalArgumentException("syncId " + syncId + " must be positive"); - } - mSyncId = syncId; - return this; - } - - /** - * Builds a {@link AudioTrack.TunerConfiguration} instance initialized with - * the parameters set on this {@code Builder}. - * - * @return a new successfully initialized {@link AudioTrack.TunerConfiguration}. - * @throws UnsupportedOperationException if the parameters set on the - * {@code Builder} are incompatible. - */ - @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) - public @NonNull TunerConfiguration build() { - if (mContentId < 1 || mSyncId < 1) { - throw new UnsupportedOperationException( - "mContentId " + mContentId - + " mSyncId " + mSyncId - + " must be set"); - } - return new TunerConfiguration(mContentId, mSyncId); - } - } } /** @@ -3673,7 +3628,7 @@ public class AudioTrack extends PlayerBase // OnCodecFormatChangedListener notifications uses an instance // of ListenerList to manage its listeners. - private final Utils.ListenerList<AudioMetadata.ReadMap> mCodecFormatChangedListeners = + private final Utils.ListenerList<AudioMetadataReadMap> mCodecFormatChangedListeners = new Utils.ListenerList(); /** @@ -3684,13 +3639,13 @@ public class AudioTrack extends PlayerBase * Called when the compressed codec format changes. * * @param audioTrack is the {@code AudioTrack} instance associated with the codec. - * @param info is a {@link AudioMetadata.ReadMap} of values which contains decoded format + * @param info is a {@link AudioMetadataReadMap} of values which contains decoded format * changes reported by the codec. Not all hardware * codecs indicate codec format changes. Acceptable keys are taken from * {@code AudioMetadata.Format.KEY_*} range, with the associated value type. */ void onCodecFormatChanged( - @NonNull AudioTrack audioTrack, @Nullable AudioMetadata.ReadMap info); + @NonNull AudioTrack audioTrack, @Nullable AudioMetadataReadMap info); } /** @@ -3708,7 +3663,7 @@ public class AudioTrack extends PlayerBase mCodecFormatChangedListeners.add( listener, /* key for removal */ executor, - (int eventCode, AudioMetadata.ReadMap readMap) -> { + (int eventCode, AudioMetadataReadMap readMap) -> { // eventCode is unused by this implementation. listener.onCodecFormatChanged(this, readMap); } @@ -4067,7 +4022,7 @@ public class AudioTrack extends PlayerBase ByteBuffer buffer = (ByteBuffer) obj; buffer.order(ByteOrder.nativeOrder()); buffer.rewind(); - AudioMetadata.ReadMap audioMetaData = AudioMetadata.fromByteBuffer(buffer); + AudioMetadataReadMap audioMetaData = AudioMetadata.fromByteBuffer(buffer); if (audioMetaData == null) { Log.e(TAG, "Unable to get audio metadata from byte buffer"); return; diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl index 5f320cd052c9..453a5d8a5b7e 100644 --- a/media/java/android/media/IAudioService.aidl +++ b/media/java/android/media/IAudioService.aidl @@ -292,6 +292,8 @@ interface IAudioService { oneway void unregisterStrategyPreferredDeviceDispatcher( IStrategyPreferredDeviceDispatcher dispatcher); + oneway void setRttEnabled(in boolean rttEnabled); + // WARNING: read warning at top of file, new methods that need to be used by native // code via IAudioManager.h need to be added to the top section. } diff --git a/media/java/android/media/MediaRoute2Info.java b/media/java/android/media/MediaRoute2Info.java index 998561316dd4..e5ad569bb24f 100644 --- a/media/java/android/media/MediaRoute2Info.java +++ b/media/java/android/media/MediaRoute2Info.java @@ -663,8 +663,8 @@ public final class MediaRoute2Info implements Parcelable { } /** - * Constructor for builder to create {@link MediaRoute2Info} with - * existing {@link MediaRoute2Info} instance. + * Constructor for builder to create {@link MediaRoute2Info} with existing + * {@link MediaRoute2Info} instance. * * @param routeInfo the existing instance to copy data from. */ @@ -690,6 +690,38 @@ public final class MediaRoute2Info implements Parcelable { } /** + * Constructor for builder to create {@link MediaRoute2Info} with existing + * {@link MediaRoute2Info} instance and replace ID with the given {@code id}. + * + * @param id The ID of the new route. Must not be empty. + * @param routeInfo the existing instance to copy data from. + * @hide + */ + public Builder(@NonNull String id, @NonNull MediaRoute2Info routeInfo) { + if (TextUtils.isEmpty(id)) { + throw new IllegalArgumentException("id must not be empty"); + } + Objects.requireNonNull(routeInfo, "routeInfo must not be null"); + + mId = id; + mName = routeInfo.mName; + mFeatures = new ArrayList<>(routeInfo.mFeatures); + mType = routeInfo.mType; + mIsSystem = routeInfo.mIsSystem; + mIconUri = routeInfo.mIconUri; + mDescription = routeInfo.mDescription; + mConnectionState = routeInfo.mConnectionState; + mClientPackageName = routeInfo.mClientPackageName; + mVolumeHandling = routeInfo.mVolumeHandling; + mVolumeMax = routeInfo.mVolumeMax; + mVolume = routeInfo.mVolume; + if (routeInfo.mExtras != null) { + mExtras = new Bundle(routeInfo.mExtras); + } + mProviderId = routeInfo.mProviderId; + } + + /** * Adds a feature for the route. * @param feature a feature that the route has. May be one of predefined features * such as {@link #FEATURE_LIVE_AUDIO}, {@link #FEATURE_LIVE_VIDEO} or diff --git a/media/java/android/media/audiopolicy/AudioProductStrategy.java b/media/java/android/media/audiopolicy/AudioProductStrategy.java index f9dbc50e20cf..090f78e4e4f7 100644 --- a/media/java/android/media/audiopolicy/AudioProductStrategy.java +++ b/media/java/android/media/audiopolicy/AudioProductStrategy.java @@ -374,8 +374,8 @@ public final class AudioProductStrategy implements Parcelable { if (refAttr.equals(sDefaultAttributes)) { return false; } - return ((refAttr.getUsage() == AudioAttributes.USAGE_UNKNOWN) - || (attr.getUsage() == refAttr.getUsage())) + return ((refAttr.getSystemUsage() == AudioAttributes.USAGE_UNKNOWN) + || (attr.getSystemUsage() == refAttr.getSystemUsage())) && ((refAttr.getContentType() == AudioAttributes.CONTENT_TYPE_UNKNOWN) || (attr.getContentType() == refAttr.getContentType())) && ((refAttr.getAllFlags() == 0) diff --git a/media/java/android/media/soundtrigger/SoundTriggerManager.java b/media/java/android/media/soundtrigger/SoundTriggerManager.java index 6a8483c58276..7d51b104a47d 100644 --- a/media/java/android/media/soundtrigger/SoundTriggerManager.java +++ b/media/java/android/media/soundtrigger/SoundTriggerManager.java @@ -211,7 +211,7 @@ public final class SoundTriggerManager { */ @NonNull public UUID getModelUuid() { - return mGenericSoundModel.uuid; + return mGenericSoundModel.getUuid(); } /** @@ -221,7 +221,7 @@ public final class SoundTriggerManager { */ @NonNull public UUID getVendorUuid() { - return mGenericSoundModel.vendorUuid; + return mGenericSoundModel.getVendorUuid(); } /** @@ -230,7 +230,7 @@ public final class SoundTriggerManager { * @return Version associated with the model */ public int getVersion() { - return mGenericSoundModel.version; + return mGenericSoundModel.getVersion(); } /** @@ -240,7 +240,7 @@ public final class SoundTriggerManager { */ @Nullable public byte[] getModelData() { - return mGenericSoundModel.data; + return mGenericSoundModel.getData(); } /** @@ -307,7 +307,7 @@ public final class SoundTriggerManager { } try { - switch (soundModel.type) { + switch (soundModel.getType()) { case SoundModel.TYPE_GENERIC_SOUND: return mSoundTriggerService.loadGenericSoundModel( (GenericSoundModel) soundModel); diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp index 29dfd730a84c..9310d38c3bd1 100644 --- a/media/jni/android_media_tv_Tuner.cpp +++ b/media/jni/android_media_tv_Tuner.cpp @@ -40,6 +40,7 @@ using ::android::hardware::tv::tuner::V1_0::DataFormat; using ::android::hardware::tv::tuner::V1_0::DemuxAlpFilterSettings; using ::android::hardware::tv::tuner::V1_0::DemuxAlpFilterType; using ::android::hardware::tv::tuner::V1_0::DemuxAlpLengthType; +using ::android::hardware::tv::tuner::V1_0::DemuxCapabilities; using ::android::hardware::tv::tuner::V1_0::DemuxFilterAvSettings; using ::android::hardware::tv::tuner::V1_0::DemuxFilterDownloadEvent; using ::android::hardware::tv::tuner::V1_0::DemuxFilterDownloadSettings; @@ -1382,6 +1383,42 @@ jobject JTuner::openDvr(DvrType type, jlong bufferSize) { return dvrObj; } +jobject JTuner::getDemuxCaps() { + DemuxCapabilities caps; + Result res; + mTuner->getDemuxCaps([&](Result r, const DemuxCapabilities& demuxCaps) { + caps = demuxCaps; + res = r; + }); + if (res != Result::SUCCESS) { + return NULL; + } + JNIEnv *env = AndroidRuntime::getJNIEnv(); + jclass clazz = env->FindClass("android/media/tv/tuner/DemuxCapabilities"); + jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIIIIIIIJI[IZ)V"); + + jint numDemux = caps.numDemux; + jint numRecord = caps.numRecord; + jint numPlayback = caps.numPlayback; + jint numTsFilter = caps.numTsFilter; + jint numSectionFilter = caps.numSectionFilter; + jint numAudioFilter = caps.numAudioFilter; + jint numVideoFilter = caps.numVideoFilter; + jint numPesFilter = caps.numPesFilter; + jint numPcrFilter = caps.numPcrFilter; + jlong numBytesInSectionFilter = caps.numBytesInSectionFilter; + jint filterCaps = static_cast<jint>(caps.filterCaps); + jboolean bTimeFilter = caps.bTimeFilter; + + jintArray linkCaps = env->NewIntArray(caps.linkCaps.size()); + env->SetIntArrayRegion( + linkCaps, 0, caps.linkCaps.size(), reinterpret_cast<jint*>(&caps.linkCaps[0])); + + return env->NewObject(clazz, capsInit, numDemux, numRecord, numPlayback, numTsFilter, + numSectionFilter, numAudioFilter, numVideoFilter, numPesFilter, numPcrFilter, + numBytesInSectionFilter, filterCaps, linkCaps, bTimeFilter); +} + } // namespace android //////////////////////////////////////////////////////////////////////////////// @@ -2739,8 +2776,9 @@ static jobject android_media_tv_Tuner_open_dvr_playback( return tuner->openDvr(DvrType::PLAYBACK, bufferSize); } -static jobject android_media_tv_Tuner_get_demux_caps(JNIEnv*, jobject) { - return NULL; +static jobject android_media_tv_Tuner_get_demux_caps(JNIEnv* env, jobject thiz) { + sp<JTuner> tuner = getTuner(env, thiz); + return tuner->getDemuxCaps(); } static int android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobject filter) { diff --git a/media/jni/android_media_tv_Tuner.h b/media/jni/android_media_tv_Tuner.h index 5d2bba6c8aa2..18aac285e7c0 100644 --- a/media/jni/android_media_tv_Tuner.h +++ b/media/jni/android_media_tv_Tuner.h @@ -185,6 +185,7 @@ struct JTuner : public RefBase { jobject openTimeFilter(); jobject openDescrambler(); jobject openDvr(DvrType type, jlong bufferSize); + jobject getDemuxCaps(); protected: Result openDemux(); diff --git a/media/packages/BluetoothMidiService/src/com/android/bluetoothmidiservice/BluetoothPacketDecoder.java b/media/packages/BluetoothMidiService/src/com/android/bluetoothmidiservice/BluetoothPacketDecoder.java index ea95a01c1f78..c51c8fa73c4e 100644 --- a/media/packages/BluetoothMidiService/src/com/android/bluetoothmidiservice/BluetoothPacketDecoder.java +++ b/media/packages/BluetoothMidiService/src/com/android/bluetoothmidiservice/BluetoothPacketDecoder.java @@ -22,24 +22,41 @@ import android.util.Log; import java.io.IOException; /** - * This is an abstract base class that decodes a packet buffer and passes it to a - * {@link android.media.midi.MidiReceiver} + * This is an abstract base class that decodes a BLE-MIDI packet + * buffer and passes it to a {@link android.media.midi.MidiReceiver} */ public class BluetoothPacketDecoder extends PacketDecoder { private static final String TAG = "BluetoothPacketDecoder"; private final byte[] mBuffer; + private int mBytesInBuffer; private MidiBtleTimeTracker mTimeTracker; - private final int TIMESTAMP_MASK_HIGH = 0x1F80; - private final int TIMESTAMP_MASK_LOW = 0x7F; - private final int HEADER_TIMESTAMP_MASK = 0x3F; + private int mLowTimestamp; + private long mNanoTimestamp; + + private static final int TIMESTAMP_MASK_HIGH = 0x1F80; // top 7 bits + private static final int TIMESTAMP_MASK_LOW = 0x7F; // bottom 7 bits + private static final int HEADER_TIMESTAMP_MASK = 0x3F; // bottom 6 bits public BluetoothPacketDecoder(int maxPacketSize) { mBuffer = new byte[maxPacketSize]; } + private void flushOutput(MidiReceiver receiver) { + if (mBytesInBuffer > 0) { + try { + receiver.send(mBuffer, 0, mBytesInBuffer, mNanoTimestamp); + } catch (IOException e) { + // ??? + } + mBytesInBuffer = 0; + } + } + + // NOTE: this code allows running status across packets, + // although the specification does not allow that. @Override public void decodePacket(byte[] buffer, MidiReceiver receiver) { if (mTimeTracker == null) { @@ -47,14 +64,11 @@ public class BluetoothPacketDecoder extends PacketDecoder { } int length = buffer.length; - - // NOTE his code allows running status across packets, - // although the specification does not allow that. - if (length < 1) { Log.e(TAG, "empty packet"); return; } + byte header = buffer[0]; if ((header & 0xC0) != 0x80) { Log.e(TAG, "packet does not start with header"); @@ -64,52 +78,46 @@ public class BluetoothPacketDecoder extends PacketDecoder { // shift bits 0 - 5 to bits 7 - 12 int highTimestamp = (header & HEADER_TIMESTAMP_MASK) << 7; boolean lastWasTimestamp = false; - int dataCount = 0; int previousLowTimestamp = 0; - long nanoTimestamp = 0; - int currentTimestamp = 0; + int currentTimestamp = highTimestamp | mLowTimestamp; - // iterate through the rest of the packet, separating MIDI data from timestamps + // Iterate through the rest of the packet, separating MIDI data from timestamps. for (int i = 1; i < buffer.length; i++) { byte b = buffer[i]; + // Is this a timestamp byte? if ((b & 0x80) != 0 && !lastWasTimestamp) { lastWasTimestamp = true; - int lowTimestamp = b & TIMESTAMP_MASK_LOW; - if (lowTimestamp < previousLowTimestamp) { + mLowTimestamp = b & TIMESTAMP_MASK_LOW; + + // If the low timestamp byte wraps within the packet then + // increment the high timestamp byte. + if (mLowTimestamp < previousLowTimestamp) { highTimestamp = (highTimestamp + 0x0080) & TIMESTAMP_MASK_HIGH; } - previousLowTimestamp = lowTimestamp; + previousLowTimestamp = mLowTimestamp; - int newTimestamp = highTimestamp | lowTimestamp; + // If the timestamp advances then send any pending data. + int newTimestamp = highTimestamp | mLowTimestamp; if (newTimestamp != currentTimestamp) { - if (dataCount > 0) { - // send previous message separately since it has a different timestamp - try { - receiver.send(mBuffer, 0, dataCount, nanoTimestamp); - } catch (IOException e) { - // ??? - } - dataCount = 0; - } + // Send previous message separately since it has a different timestamp. + flushOutput(receiver); currentTimestamp = newTimestamp; } - // calculate nanoTimestamp + // Calculate MIDI nanosecond timestamp from BLE timestamp. long now = System.nanoTime(); - nanoTimestamp = mTimeTracker.convertTimestampToNanotime(currentTimestamp, now); + mNanoTimestamp = mTimeTracker.convertTimestampToNanotime(currentTimestamp, now); } else { lastWasTimestamp = false; - mBuffer[dataCount++] = b; + // Flush if full before adding more data. + if (mBytesInBuffer == mBuffer.length) { + flushOutput(receiver); + } + mBuffer[mBytesInBuffer++] = b; } } - if (dataCount > 0) { - try { - receiver.send(mBuffer, 0, dataCount, nanoTimestamp); - } catch (IOException e) { - // ??? - } - } + flushOutput(receiver); } } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java index 25220951dd7b..daeb731ad457 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java @@ -2210,14 +2210,14 @@ public class CameraTestUtils extends Assert { } public static Size getPreviewSizeBound(WindowManager windowManager, Size bound) { - Size windowSize = windowManager.getCurrentWindowMetrics().getSize(); + Rect windowBounds = windowManager.getCurrentWindowMetrics().getBounds(); - int width = windowSize.getWidth(); - int height = windowSize.getHeight(); + int width = windowBounds.width(); + int height = windowBounds.height(); if (height > width) { height = width; - width = windowSize.getHeight(); + width = windowBounds.height(); } if (bound.getWidth() <= width && diff --git a/packages/CarSystemUI/res/layout/notification_center_activity.xml b/packages/CarSystemUI/res/layout/notification_center_activity.xml index 0af74c4462a6..4fef48918c97 100644 --- a/packages/CarSystemUI/res/layout/notification_center_activity.xml +++ b/packages/CarSystemUI/res/layout/notification_center_activity.xml @@ -20,6 +20,8 @@ android:id="@+id/notification_view" android:layout_width="match_parent" android:layout_height="match_parent" + android:visibility="invisible" + android:layout_marginBottom="@dimen/navigation_bar_height" android:background="@color/notification_shade_background_color"> <View diff --git a/packages/CarSystemUI/res/layout/notification_panel_container.xml b/packages/CarSystemUI/res/layout/notification_panel_container.xml new file mode 100644 index 000000000000..bf71396984b8 --- /dev/null +++ b/packages/CarSystemUI/res/layout/notification_panel_container.xml @@ -0,0 +1,21 @@ +<?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. + --> +<FrameLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/notification_container" + android:layout_width="match_parent" + android:layout_height="match_parent"/> diff --git a/packages/CarSystemUI/res/layout/sysui_overlay_window.xml b/packages/CarSystemUI/res/layout/sysui_overlay_window.xml index cc36e87eb480..1b0a211b733d 100644 --- a/packages/CarSystemUI/res/layout/sysui_overlay_window.xml +++ b/packages/CarSystemUI/res/layout/sysui_overlay_window.xml @@ -22,6 +22,11 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + <ViewStub android:id="@+id/notification_panel_stub" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout="@layout/notification_panel_container"/> + <ViewStub android:id="@+id/fullscreen_user_switcher_stub" android:layout_width="match_parent" android:layout_height="match_parent" diff --git a/packages/CarSystemUI/res/values/config.xml b/packages/CarSystemUI/res/values/config.xml index 2077e7707f59..43e2918bd98d 100644 --- a/packages/CarSystemUI/res/values/config.xml +++ b/packages/CarSystemUI/res/values/config.xml @@ -68,6 +68,7 @@ <!-- Car System UI's OverlayViewsMediator--> <string-array name="config_carSystemUIOverlayViewsMediators" translatable="false"> <item>com.android.systemui.car.userswitcher.FullscreenUserSwitcherViewMediator</item> + <item>com.android.systemui.car.notification.NotificationPanelViewMediator</item> </string-array> <!-- SystemUI Services: The classes of the stuff to start. --> diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java index 14d5bd53a9ab..5547fee0159c 100644 --- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java +++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java @@ -38,7 +38,6 @@ import com.android.systemui.stackdivider.DividerModule; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.NotificationLockscreenUserManager; import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl; -import com.android.systemui.statusbar.car.CarShadeControllerImpl; import com.android.systemui.statusbar.car.CarStatusBar; import com.android.systemui.statusbar.car.CarStatusBarKeyguardViewManager; import com.android.systemui.statusbar.notification.NotificationEntryManager; @@ -47,6 +46,7 @@ import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl; import com.android.systemui.statusbar.phone.NotificationGroupManager; import com.android.systemui.statusbar.phone.ShadeController; +import com.android.systemui.statusbar.phone.ShadeControllerImpl; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.policy.BatteryController; @@ -120,7 +120,7 @@ abstract class CarSystemUIModule { KeyguardEnvironmentImpl keyguardEnvironment); @Binds - abstract ShadeController provideShadeController(CarShadeControllerImpl shadeController); + abstract ShadeController provideShadeController(ShadeControllerImpl shadeController); @Provides @Singleton diff --git a/packages/CarSystemUI/src/com/android/systemui/car/CarDeviceProvisionedController.java b/packages/CarSystemUI/src/com/android/systemui/car/CarDeviceProvisionedController.java index c870cec67314..b057198d5177 100644 --- a/packages/CarSystemUI/src/com/android/systemui/car/CarDeviceProvisionedController.java +++ b/packages/CarSystemUI/src/com/android/systemui/car/CarDeviceProvisionedController.java @@ -29,9 +29,16 @@ public interface CarDeviceProvisionedController extends DeviceProvisionedControl boolean isUserSetupInProgress(int user); /** - * Returns {@code true} then SUW is in progress for the current user. + * Returns {@code true} when SUW is in progress for the current user. */ default boolean isCurrentUserSetupInProgress() { return isUserSetupInProgress(getCurrentUser()); } + + /** + * Returns {@code true} when the user is setup and not currently in SUW. + */ + default boolean isCurrentUserFullySetup() { + return isCurrentUserSetup() && !isCurrentUserSetupInProgress(); + } } diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewController.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewController.java new file mode 100644 index 000000000000..f6679c0e681f --- /dev/null +++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewController.java @@ -0,0 +1,778 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.car.notification; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.app.ActivityManager; +import android.car.Car; +import android.car.drivingstate.CarUxRestrictionsManager; +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.os.RemoteException; +import android.util.Log; +import android.view.GestureDetector; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewTreeObserver; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.android.car.notification.CarNotificationListener; +import com.android.car.notification.CarNotificationView; +import com.android.car.notification.CarUxRestrictionManagerWrapper; +import com.android.car.notification.NotificationClickHandlerFactory; +import com.android.car.notification.NotificationDataManager; +import com.android.car.notification.NotificationViewController; +import com.android.car.notification.PreprocessingManager; +import com.android.internal.statusbar.IStatusBarService; +import com.android.systemui.R; +import com.android.systemui.car.CarDeviceProvisionedController; +import com.android.systemui.car.CarServiceProvider; +import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.plugins.statusbar.StatusBarStateController; +import com.android.systemui.statusbar.CommandQueue; +import com.android.systemui.statusbar.FlingAnimationUtils; +import com.android.systemui.statusbar.StatusBarState; +import com.android.systemui.window.OverlayViewController; +import com.android.systemui.window.OverlayViewGlobalStateController; + +import javax.inject.Inject; +import javax.inject.Singleton; + +/** View controller for the notification panel. */ +@Singleton +public class NotificationPanelViewController extends OverlayViewController { + + // used to calculate how fast to open or close the window + private static final float DEFAULT_FLING_VELOCITY = 0; + // max time a fling animation takes + private static final float FLING_ANIMATION_MAX_TIME = 0.5f; + // acceleration rate for the fling animation + private static final float FLING_SPEED_UP_FACTOR = 0.6f; + + private static final int SWIPE_DOWN_MIN_DISTANCE = 25; + private static final int SWIPE_MAX_OFF_PATH = 75; + private static final int SWIPE_THRESHOLD_VELOCITY = 200; + private static final boolean DEBUG = true; + private static final String TAG = "NotificationPanelViewController"; + + private final Context mContext; + private final Resources mResources; + private final CarServiceProvider mCarServiceProvider; + private final CarDeviceProvisionedController mCarDeviceProvisionedController; + private final IStatusBarService mBarService; + private final CommandQueue mCommandQueue; + private final NotificationDataManager mNotificationDataManager; + private final CarUxRestrictionManagerWrapper mCarUxRestrictionManagerWrapper; + private final CarNotificationListener mCarNotificationListener; + private final NotificationClickHandlerFactory mNotificationClickHandlerFactory; + private final FlingAnimationUtils mFlingAnimationUtils; + private final StatusBarStateController mStatusBarStateController; + + private final int mSettleClosePercentage; + + private float mOpeningVelocity = DEFAULT_FLING_VELOCITY; + private float mClosingVelocity = DEFAULT_FLING_VELOCITY; + + private float mInitialBackgroundAlpha; + private float mBackgroundAlphaDiff; + + private CarNotificationView mNotificationView; + private View mHandleBar; + private RecyclerView mNotificationList; + private NotificationViewController mNotificationViewController; + + private boolean mIsTracking; + private boolean mNotificationListAtBottom; + private float mFirstTouchDownOnGlassPane; + private boolean mNotificationListAtBottomAtTimeOfTouch; + private boolean mIsSwipingVerticallyToClose; + private int mPercentageFromBottom; + private boolean mIsNotificationAnimating; + private boolean mIsNotificationCardSwiping; + private boolean mPanelExpanded = false; + + private View.OnTouchListener mTopNavBarNotificationTouchListener; + private View.OnTouchListener mNavBarNotificationTouchListener; + + private OnUnseenCountUpdateListener mUnseenCountUpdateListener; + + @Inject + public NotificationPanelViewController( + Context context, + @Main Resources resources, + OverlayViewGlobalStateController overlayViewGlobalStateController, + + /* Other things */ + CarServiceProvider carServiceProvider, + CarDeviceProvisionedController carDeviceProvisionedController, + + /* Things needed for notifications */ + IStatusBarService barService, + CommandQueue commandQueue, + NotificationDataManager notificationDataManager, + CarUxRestrictionManagerWrapper carUxRestrictionManagerWrapper, + CarNotificationListener carNotificationListener, + NotificationClickHandlerFactory notificationClickHandlerFactory, + FlingAnimationUtils.Builder flingAnimationUtilsBuilder, + + /* Things that need to be replaced */ + StatusBarStateController statusBarStateController + ) { + super(R.id.notification_panel_stub, overlayViewGlobalStateController); + mContext = context; + mResources = resources; + mCarServiceProvider = carServiceProvider; + mCarDeviceProvisionedController = carDeviceProvisionedController; + mBarService = barService; + mCommandQueue = commandQueue; + mNotificationDataManager = notificationDataManager; + mCarUxRestrictionManagerWrapper = carUxRestrictionManagerWrapper; + mCarNotificationListener = carNotificationListener; + mNotificationClickHandlerFactory = notificationClickHandlerFactory; + mFlingAnimationUtils = flingAnimationUtilsBuilder + .setMaxLengthSeconds(FLING_ANIMATION_MAX_TIME) + .setSpeedUpFactor(FLING_SPEED_UP_FACTOR) + .build(); + mStatusBarStateController = statusBarStateController; + + // Notification background setup. + mInitialBackgroundAlpha = (float) mResources.getInteger( + R.integer.config_initialNotificationBackgroundAlpha) / 100; + if (mInitialBackgroundAlpha < 0 || mInitialBackgroundAlpha > 100) { + throw new RuntimeException( + "Unable to setup notification bar due to incorrect initial background alpha" + + " percentage"); + } + float finalBackgroundAlpha = Math.max( + mInitialBackgroundAlpha, + (float) mResources.getInteger( + R.integer.config_finalNotificationBackgroundAlpha) / 100); + if (finalBackgroundAlpha < 0 || finalBackgroundAlpha > 100) { + throw new RuntimeException( + "Unable to setup notification bar due to incorrect final background alpha" + + " percentage"); + } + mBackgroundAlphaDiff = finalBackgroundAlpha - mInitialBackgroundAlpha; + + // Notification Panel param setup + mSettleClosePercentage = mResources.getInteger( + R.integer.notification_settle_close_percentage); + + // Attached to the top navigation bar (i.e. status bar) to detect pull down of the + // notification shade. + GestureDetector openGestureDetector = new GestureDetector(mContext, + new OpenNotificationGestureListener() { + @Override + protected void openNotification() { + animateExpandNotificationsPanel(); + } + }); + + // Attached to the NavBars to close the notification shade + GestureDetector navBarCloseNotificationGestureDetector = new GestureDetector(mContext, + new NavBarCloseNotificationGestureListener() { + @Override + protected void close() { + if (mPanelExpanded) { + animateCollapsePanels(); + } + } + }); + + mTopNavBarNotificationTouchListener = (v, event) -> { + if (!isInflated()) { + getOverlayViewGlobalStateController().inflateView(this); + } + if (!mCarDeviceProvisionedController.isCurrentUserFullySetup()) { + return true; + } + + boolean consumed = openGestureDetector.onTouchEvent(event); + if (consumed) { + return true; + } + maybeCompleteAnimation(event); + return true; + }; + + mNavBarNotificationTouchListener = + (v, event) -> { + boolean consumed = navBarCloseNotificationGestureDetector.onTouchEvent(event); + if (consumed) { + return true; + } + maybeCompleteAnimation(event); + return true; + }; + } + + @Override + protected void onFinishInflate() { + reinflate(); + } + + /** Reinflates the view. */ + public void reinflate() { + ViewGroup container = (ViewGroup) getLayout(); + container.removeView(mNotificationView); + + mNotificationView = (CarNotificationView) LayoutInflater.from(mContext).inflate( + R.layout.notification_center_activity, container, + /* attachToRoot= */ false); + + container.addView(mNotificationView); + onNotificationViewInflated(); + } + + private void onNotificationViewInflated() { + // Find views. + mNotificationView = getLayout().findViewById(R.id.notification_view); + View glassPane = mNotificationView.findViewById(R.id.glass_pane); + mHandleBar = mNotificationView.findViewById(R.id.handle_bar); + mNotificationList = mNotificationView.findViewById(R.id.notifications); + + mNotificationClickHandlerFactory.registerClickListener((launchResult, alertEntry) -> { + if (launchResult == ActivityManager.START_TASK_TO_FRONT + || launchResult == ActivityManager.START_SUCCESS) { + animateCollapsePanels(); + } + }); + + mNotificationDataManager.setOnUnseenCountUpdateListener(() -> { + if (mUnseenCountUpdateListener != null) { + mUnseenCountUpdateListener.onUnseenCountUpdate( + mNotificationDataManager.getUnseenNotificationCount()); + } + }); + mNotificationClickHandlerFactory.setNotificationDataManager(mNotificationDataManager); + mNotificationView.setClickHandlerFactory(mNotificationClickHandlerFactory); + mNotificationView.setNotificationDataManager(mNotificationDataManager); + + mNotificationList.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + if (!mNotificationList.canScrollVertically(1)) { + mNotificationListAtBottom = true; + return; + } + mNotificationListAtBottom = false; + mIsSwipingVerticallyToClose = false; + mNotificationListAtBottomAtTimeOfTouch = false; + } + }); + + // Attached to the notification ui to detect close request of the notification shade. + GestureDetector closeGestureDetector = new GestureDetector(mContext, + new CloseNotificationGestureListener() { + @Override + protected void close() { + if (mPanelExpanded) { + animateCollapsePanels(); + } + } + }); + + // Attached to the Handle bar to close the notification shade + GestureDetector handleBarCloseNotificationGestureDetector = new GestureDetector(mContext, + new HandleBarCloseNotificationGestureListener()); + + // The glass pane is used to view touch events before passed to the notification list. + // This allows us to initialize gesture listeners and detect when to close the notifications + glassPane.setOnTouchListener((v, event) -> { + if (event.getActionMasked() == MotionEvent.ACTION_UP) { + mNotificationListAtBottomAtTimeOfTouch = false; + } + if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { + mFirstTouchDownOnGlassPane = event.getRawX(); + mNotificationListAtBottomAtTimeOfTouch = mNotificationListAtBottom; + // Reset the tracker when there is a touch down on the glass pane. + mIsTracking = false; + // Pass the down event to gesture detector so that it knows where the touch event + // started. + closeGestureDetector.onTouchEvent(event); + } + return false; + }); + + mNotificationList.setOnTouchListener((v, event) -> { + mIsNotificationCardSwiping = Math.abs(mFirstTouchDownOnGlassPane - event.getRawX()) + > SWIPE_MAX_OFF_PATH; + if (mNotificationListAtBottomAtTimeOfTouch && mNotificationListAtBottom) { + // We need to save the state here as if notification card is swiping we will + // change the mNotificationListAtBottomAtTimeOfTouch. This is to protect + // closing the notification shade while the notification card is being swiped. + mIsSwipingVerticallyToClose = true; + } + + // If the card is swiping we should not allow the notification shade to close. + // Hence setting mNotificationListAtBottomAtTimeOfTouch to false will stop that + // for us. We are also checking for mIsTracking because while swiping the + // notification shade to close if the user goes a bit horizontal while swiping + // upwards then also this should close. + if (mIsNotificationCardSwiping && !mIsTracking) { + mNotificationListAtBottomAtTimeOfTouch = false; + } + + boolean handled = closeGestureDetector.onTouchEvent(event); + boolean isTracking = mIsTracking; + Rect rect = mNotificationView.getClipBounds(); + float clippedHeight = 0; + if (rect != null) { + clippedHeight = rect.bottom; + } + if (!handled && event.getActionMasked() == MotionEvent.ACTION_UP + && mIsSwipingVerticallyToClose) { + if (mSettleClosePercentage < mPercentageFromBottom && isTracking) { + animateNotificationPanel(DEFAULT_FLING_VELOCITY, false); + } else if (clippedHeight != mNotificationView.getHeight() && isTracking) { + // this can be caused when user is at the end of the list and trying to + // fling to top of the list by scrolling down. + animateNotificationPanel(DEFAULT_FLING_VELOCITY, true); + } + } + + // Updating the mNotificationListAtBottomAtTimeOfTouch state has to be done after + // the event has been passed to the closeGestureDetector above, such that the + // closeGestureDetector sees the up event before the state has changed. + if (event.getActionMasked() == MotionEvent.ACTION_UP) { + mNotificationListAtBottomAtTimeOfTouch = false; + } + return handled || isTracking; + }); + + mCarServiceProvider.addListener(car -> { + CarUxRestrictionsManager carUxRestrictionsManager = + (CarUxRestrictionsManager) + car.getCarManager(Car.CAR_UX_RESTRICTION_SERVICE); + mCarUxRestrictionManagerWrapper.setCarUxRestrictionsManager( + carUxRestrictionsManager); + + mNotificationViewController = new NotificationViewController( + mNotificationView, + PreprocessingManager.getInstance(mContext), + mCarNotificationListener, + mCarUxRestrictionManagerWrapper, + mNotificationDataManager); + mNotificationViewController.enable(); + }); + + mHandleBar.setOnTouchListener((v, event) -> { + handleBarCloseNotificationGestureDetector.onTouchEvent(event); + maybeCompleteAnimation(event); + return true; + }); + } + + /** Called when the car power state is changed to ON. */ + public void onCarPowerStateOn() { + if (mNotificationClickHandlerFactory != null) { + mNotificationClickHandlerFactory.clearAllNotifications(); + } + mNotificationDataManager.clearAll(); + } + + View.OnTouchListener getTopNavBarNotificationTouchListener() { + return mTopNavBarNotificationTouchListener; + } + + View.OnTouchListener getNavBarNotificationTouchListener() { + return mNavBarNotificationTouchListener; + } + + private void maybeCompleteAnimation(MotionEvent event) { + if (event.getActionMasked() == MotionEvent.ACTION_UP + && mNotificationView.getVisibility() == View.VISIBLE) { + if (mSettleClosePercentage < mPercentageFromBottom) { + animateNotificationPanel(DEFAULT_FLING_VELOCITY, false); + } else { + animateNotificationPanel(DEFAULT_FLING_VELOCITY, true); + } + } + } + + /** + * Animates the notification shade from one position to other. This is used to either open or + * close the notification shade completely with a velocity. If the animation is to close the + * notification shade this method also makes the view invisible after animation ends. + */ + private void animateNotificationPanel(float velocity, boolean isClosing) { + float to = 0; + if (!isClosing) { + to = mNotificationView.getHeight(); + } + + Rect rect = mNotificationView.getClipBounds(); + if (rect != null && rect.bottom != to) { + float from = rect.bottom; + animate(from, to, velocity, isClosing); + return; + } + + // We will only be here if the shade is being opened programmatically or via button when + // height of the layout was not calculated. + ViewTreeObserver notificationTreeObserver = mNotificationView.getViewTreeObserver(); + notificationTreeObserver.addOnGlobalLayoutListener( + new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + ViewTreeObserver obs = mNotificationView.getViewTreeObserver(); + obs.removeOnGlobalLayoutListener(this); + float to = mNotificationView.getHeight(); + animate(/* from= */ 0, to, velocity, isClosing); + } + }); + } + + private void animateCollapsePanels() { + if (!mPanelExpanded || mNotificationView.getVisibility() == View.INVISIBLE) { + return; + } + getOverlayViewGlobalStateController().setWindowFocusable(false); + animateNotificationPanel(mClosingVelocity, true); + } + + private void animateExpandNotificationsPanel() { + if (!mCommandQueue.panelsEnabled() + || !mCarDeviceProvisionedController.isCurrentUserFullySetup()) { + return; + } + // scroll to top + mNotificationList.scrollToPosition(0); + setPanelVisible(true); + mNotificationView.setVisibility(View.VISIBLE); + animateNotificationPanel(mOpeningVelocity, false); + + setPanelExpanded(true); + } + + private void animate(float from, float to, float velocity, boolean isClosing) { + if (mIsNotificationAnimating) { + return; + } + mIsNotificationAnimating = true; + mIsTracking = true; + ValueAnimator animator = ValueAnimator.ofFloat(from, to); + animator.addUpdateListener( + animation -> { + float animatedValue = (Float) animation.getAnimatedValue(); + setNotificationViewClipBounds((int) animatedValue); + }); + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + mIsNotificationAnimating = false; + mIsTracking = false; + mOpeningVelocity = DEFAULT_FLING_VELOCITY; + mClosingVelocity = DEFAULT_FLING_VELOCITY; + if (isClosing) { + setPanelVisible(false); + mNotificationView.setVisibility(View.INVISIBLE); + mNotificationView.setClipBounds(null); + mNotificationViewController.onVisibilityChanged(false); + // let the status bar know that the panel is closed + setPanelExpanded(false); + } else { + mNotificationViewController.onVisibilityChanged(true); + // let the status bar know that the panel is open + mNotificationView.setVisibleNotificationsAsSeen(); + setPanelExpanded(true); + } + } + }); + mFlingAnimationUtils.apply(animator, from, to, Math.abs(velocity)); + animator.start(); + } + + /** + * Set the panel view to be visible. + */ + public void setPanelVisible(boolean visible) { + if (visible && !getOverlayViewGlobalStateController().isWindowVisible()) { + getOverlayViewGlobalStateController().setWindowVisible(true); + } + if (!visible && getOverlayViewGlobalStateController().isWindowVisible()) { + getOverlayViewGlobalStateController().setWindowVisible(false); + } + getLayout().setVisibility(visible ? View.VISIBLE : View.INVISIBLE); + getOverlayViewGlobalStateController().setWindowFocusable(visible); + } + + /** + * Set the panel state to expanded. This will expand or collapse the overlay window if + * necessary. + */ + public void setPanelExpanded(boolean expand) { + mPanelExpanded = expand; + + if (expand && mStatusBarStateController.getState() != StatusBarState.KEYGUARD) { + if (DEBUG) { + Log.v(TAG, "clearing notification effects from setExpandedHeight"); + } + clearNotificationEffects(); + } + } + + /** + * Clear Buzz/Beep/Blink. + */ + private void clearNotificationEffects() { + try { + mBarService.clearNotificationEffects(); + } catch (RemoteException e) { + // Won't fail unless the world has ended. + } + } + + private void setNotificationViewClipBounds(int height) { + if (height > mNotificationView.getHeight()) { + height = mNotificationView.getHeight(); + } + Rect clipBounds = new Rect(); + clipBounds.set(0, 0, mNotificationView.getWidth(), height); + // Sets the clip region on the notification list view. + mNotificationView.setClipBounds(clipBounds); + if (mHandleBar != null) { + ViewGroup.MarginLayoutParams lp = + (ViewGroup.MarginLayoutParams) mHandleBar.getLayoutParams(); + mHandleBar.setTranslationY(height - mHandleBar.getHeight() - lp.bottomMargin); + } + if (mNotificationView.getHeight() > 0) { + Drawable background = mNotificationView.getBackground().mutate(); + background.setAlpha((int) (getBackgroundAlpha(height) * 255)); + mNotificationView.setBackground(background); + } + } + + /** + * Calculates the alpha value for the background based on how much of the notification + * shade is visible to the user. When the notification shade is completely open then + * alpha value will be 1. + */ + private float getBackgroundAlpha(int height) { + return mInitialBackgroundAlpha + + ((float) height / mNotificationView.getHeight() * mBackgroundAlphaDiff); + } + + private void calculatePercentageFromBottom(float height) { + if (mNotificationView.getHeight() > 0) { + mPercentageFromBottom = (int) Math.abs( + height / mNotificationView.getHeight() * 100); + } + } + + /** Toggles the visibility of the notification panel. */ + public void toggle() { + if (!isInflated()) { + getOverlayViewGlobalStateController().inflateView(this); + } + if (mPanelExpanded) { + animateCollapsePanels(); + } else { + animateExpandNotificationsPanel(); + } + } + + /** Sets the unseen count listener. */ + public void setOnUnseenCountUpdateListener(OnUnseenCountUpdateListener listener) { + mUnseenCountUpdateListener = listener; + } + + /** Listener that is updated when the number of unseen notifications changes. */ + public interface OnUnseenCountUpdateListener { + /** + * This method is automatically called whenever there is an update to the number of unseen + * notifications. This method can be extended by OEMs to customize the desired logic. + */ + void onUnseenCountUpdate(int unseenNotificationCount); + } + + /** + * Only responsible for open hooks. Since once the panel opens it covers all elements + * there is no need to merge with close. + */ + private abstract class OpenNotificationGestureListener extends + GestureDetector.SimpleOnGestureListener { + + @Override + public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, + float distanceY) { + + if (mNotificationView.getVisibility() == View.INVISIBLE) { + // when the on-scroll is called for the first time to open. + mNotificationList.scrollToPosition(0); + } + setPanelVisible(true); + mNotificationView.setVisibility(View.VISIBLE); + + // clips the view for the notification shade when the user scrolls to open. + setNotificationViewClipBounds((int) event2.getRawY()); + + // Initially the scroll starts with height being zero. This checks protects from divide + // by zero error. + calculatePercentageFromBottom(event2.getRawY()); + + mIsTracking = true; + return true; + } + + + @Override + public boolean onFling(MotionEvent event1, MotionEvent event2, + float velocityX, float velocityY) { + if (velocityY > SWIPE_THRESHOLD_VELOCITY) { + mOpeningVelocity = velocityY; + openNotification(); + return true; + } + animateNotificationPanel(DEFAULT_FLING_VELOCITY, true); + + return false; + } + + protected abstract void openNotification(); + } + + /** + * To be installed on the open panel notification panel + */ + private abstract class CloseNotificationGestureListener extends + GestureDetector.SimpleOnGestureListener { + + @Override + public boolean onSingleTapUp(MotionEvent motionEvent) { + if (mPanelExpanded) { + animateNotificationPanel(DEFAULT_FLING_VELOCITY, true); + } + return true; + } + + @Override + public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, + float distanceY) { + // should not clip while scroll to the bottom of the list. + if (!mNotificationListAtBottomAtTimeOfTouch) { + return false; + } + float actualNotificationHeight = + mNotificationView.getHeight() - (event1.getRawY() - event2.getRawY()); + if (actualNotificationHeight > mNotificationView.getHeight()) { + actualNotificationHeight = mNotificationView.getHeight(); + } + if (mNotificationView.getHeight() > 0) { + mPercentageFromBottom = (int) Math.abs( + actualNotificationHeight / mNotificationView.getHeight() * 100); + boolean isUp = distanceY > 0; + + // This check is to figure out if onScroll was called while swiping the card at + // bottom of the list. At that time we should not allow notification shade to + // close. We are also checking for the upwards swipe gesture here because it is + // possible if a user is closing the notification shade and while swiping starts + // to open again but does not fling. At that time we should allow the + // notification shade to close fully or else it would stuck in between. + if (Math.abs(mNotificationView.getHeight() - actualNotificationHeight) + > SWIPE_DOWN_MIN_DISTANCE && isUp) { + setNotificationViewClipBounds((int) actualNotificationHeight); + mIsTracking = true; + } else if (!isUp) { + setNotificationViewClipBounds((int) actualNotificationHeight); + } + } + // if we return true the items in RV won't be scrollable. + return false; + } + + + @Override + public boolean onFling(MotionEvent event1, MotionEvent event2, + float velocityX, float velocityY) { + // should not fling if the touch does not start when view is at the bottom of the list. + if (!mNotificationListAtBottomAtTimeOfTouch) { + return false; + } + if (Math.abs(event1.getX() - event2.getX()) > SWIPE_MAX_OFF_PATH + || Math.abs(velocityY) < SWIPE_THRESHOLD_VELOCITY) { + // swipe was not vertical or was not fast enough + return false; + } + boolean isUp = velocityY < 0; + if (isUp) { + close(); + return true; + } else { + // we should close the shade + animateNotificationPanel(velocityY, false); + } + return false; + } + + protected abstract void close(); + } + + /** + * To be installed on the nav bars. + */ + private abstract class NavBarCloseNotificationGestureListener extends + CloseNotificationGestureListener { + @Override + public boolean onSingleTapUp(MotionEvent e) { + mClosingVelocity = DEFAULT_FLING_VELOCITY; + if (mPanelExpanded) { + close(); + } + return super.onSingleTapUp(e); + } + + @Override + public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, + float distanceY) { + calculatePercentageFromBottom(event2.getRawY()); + setNotificationViewClipBounds((int) event2.getRawY()); + return true; + } + } + + /** + * To be installed on the handle bar. + */ + private class HandleBarCloseNotificationGestureListener extends + GestureDetector.SimpleOnGestureListener { + + @Override + public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, + float distanceY) { + calculatePercentageFromBottom(event2.getRawY()); + // To prevent the jump in the clip bounds while closing the notification shade using + // the handle bar we should calculate the height using the diff of event1 and event2. + // This will help the notification shade to clip smoothly as the event2 value changes + // as event1 value will be fixed. + int clipHeight = + mNotificationView.getHeight() - (int) (event1.getRawY() - event2.getRawY()); + setNotificationViewClipBounds(clipHeight); + return true; + } + } +} diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewMediator.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewMediator.java new file mode 100644 index 000000000000..1cfc83293acb --- /dev/null +++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewMediator.java @@ -0,0 +1,126 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.car.notification; + +import android.car.hardware.power.CarPowerManager; +import android.content.res.Configuration; + +import com.android.systemui.car.CarDeviceProvisionedController; +import com.android.systemui.car.CarServiceProvider; +import com.android.systemui.navigationbar.car.CarNavigationBarController; +import com.android.systemui.statusbar.car.PowerManagerHelper; +import com.android.systemui.statusbar.policy.ConfigurationController; +import com.android.systemui.window.OverlayViewMediator; + +import javax.inject.Inject; +import javax.inject.Singleton; + +/** The view mediator which attaches the view controller to other elements of the system ui. */ +@Singleton +public class NotificationPanelViewMediator implements OverlayViewMediator, + ConfigurationController.ConfigurationListener { + + private final CarNavigationBarController mCarNavigationBarController; + private final NotificationPanelViewController mNotificationPanelViewController; + private final CarServiceProvider mCarServiceProvider; + private final PowerManagerHelper mPowerManagerHelper; + private final CarDeviceProvisionedController mCarDeviceProvisionedController; + private final ConfigurationController mConfigurationController; + + @Inject + public NotificationPanelViewMediator( + CarNavigationBarController carNavigationBarController, + NotificationPanelViewController notificationPanelViewController, + + CarServiceProvider carServiceProvider, + PowerManagerHelper powerManagerHelper, + + CarDeviceProvisionedController carDeviceProvisionedController, + ConfigurationController configurationController + ) { + mCarNavigationBarController = carNavigationBarController; + mNotificationPanelViewController = notificationPanelViewController; + mCarServiceProvider = carServiceProvider; + mPowerManagerHelper = powerManagerHelper; + mCarDeviceProvisionedController = carDeviceProvisionedController; + mConfigurationController = configurationController; + } + + @Override + public void registerListeners() { + mCarNavigationBarController.registerTopBarTouchListener( + mNotificationPanelViewController.getTopNavBarNotificationTouchListener()); + mCarNavigationBarController.registerBottomBarTouchListener( + mNotificationPanelViewController.getNavBarNotificationTouchListener()); + mCarNavigationBarController.registerLeftBarTouchListener( + mNotificationPanelViewController.getNavBarNotificationTouchListener()); + mCarNavigationBarController.registerRightBarTouchListener( + mNotificationPanelViewController.getNavBarNotificationTouchListener()); + + mCarNavigationBarController.registerNotificationController( + () -> mNotificationPanelViewController.toggle()); + } + + @Override + public void setupOverlayContentViewControllers() { + mNotificationPanelViewController.setOnUnseenCountUpdateListener(unseenNotificationCount -> { + boolean hasUnseen = unseenNotificationCount > 0; + mCarNavigationBarController.toggleAllNotificationsUnseenIndicator( + mCarDeviceProvisionedController.isCurrentUserFullySetup(), hasUnseen); + }); + + mPowerManagerHelper.setCarPowerStateListener(state -> { + if (state == CarPowerManager.CarPowerStateListener.ON) { + mNotificationPanelViewController.onCarPowerStateOn(); + } + }); + mPowerManagerHelper.connectToCarService(); + + mConfigurationController.addCallback(this); + } + + @Override + public void onConfigChanged(Configuration newConfig) { + // No op. + } + + @Override + public void onDensityOrFontScaleChanged() { + registerListeners(); + } + + @Override + public void onOverlayChanged() { + // No op. + } + + @Override + public void onUiModeChanged() { + // No op. + } + + @Override + public void onThemeChanged() { + // No op. + } + + @Override + public void onLocaleListChanged() { + mNotificationPanelViewController.reinflate(); + registerListeners(); + } +} diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarShadeControllerImpl.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarShadeControllerImpl.java deleted file mode 100644 index 755ed25d64e2..000000000000 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarShadeControllerImpl.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.systemui.statusbar.car; - -import android.view.View; -import android.view.WindowManager; - -import com.android.car.notification.CarNotificationView; -import com.android.systemui.assist.AssistManager; -import com.android.systemui.bubbles.BubbleController; -import com.android.systemui.plugins.statusbar.StatusBarStateController; -import com.android.systemui.statusbar.CommandQueue; -import com.android.systemui.statusbar.phone.NotificationShadeWindowController; -import com.android.systemui.statusbar.phone.ShadeControllerImpl; -import com.android.systemui.statusbar.phone.StatusBar; -import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import dagger.Lazy; - -/** Car specific implementation of {@link com.android.systemui.statusbar.phone.ShadeController}. */ -@Singleton -public class CarShadeControllerImpl extends ShadeControllerImpl { - - @Inject - public CarShadeControllerImpl(CommandQueue commandQueue, - StatusBarStateController statusBarStateController, - NotificationShadeWindowController notificationShadeWindowController, - StatusBarKeyguardViewManager statusBarKeyguardViewManager, - WindowManager windowManager, - Lazy<StatusBar> statusBarLazy, - Lazy<AssistManager> assistManagerLazy, - Lazy<BubbleController> bubbleControllerLazy) { - super(commandQueue, statusBarStateController, notificationShadeWindowController, - statusBarKeyguardViewManager, windowManager, - statusBarLazy, assistManagerLazy, bubbleControllerLazy); - } - - @Override - public void animateCollapsePanels(int flags, boolean force, boolean delayed, - float speedUpFactor) { - super.animateCollapsePanels(flags, force, delayed, speedUpFactor); - if (!getCarStatusBar().isPanelExpanded() - || getCarNotificationView().getVisibility() == View.INVISIBLE) { - return; - } - - mNotificationShadeWindowController.setNotificationShadeFocusable(false); - getCarStatusBar().getNotificationShadeWindowViewController().cancelExpandHelper(); - getStatusBarView().collapsePanel(true /* animate */, delayed, speedUpFactor); - - getCarStatusBar().animateNotificationPanel(getCarStatusBar().getClosingVelocity(), true); - - if (!getCarStatusBar().isTracking()) { - mNotificationShadeWindowController.setPanelVisible(false); - getCarNotificationView().setVisibility(View.INVISIBLE); - } - - getCarStatusBar().setPanelExpanded(false); - } - - private CarStatusBar getCarStatusBar() { - return (CarStatusBar) mStatusBarLazy.get(); - } - - private CarNotificationView getCarNotificationView() { - return getCarStatusBar().getCarNotificationView(); - } -} diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java index 411f14d1d1ed..02604d870986 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java @@ -18,38 +18,15 @@ package com.android.systemui.statusbar.car; import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME; -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.animation.ValueAnimator; import android.annotation.Nullable; -import android.app.ActivityManager; -import android.car.Car; -import android.car.drivingstate.CarUxRestrictionsManager; -import android.car.hardware.power.CarPowerManager.CarPowerStateListener; import android.content.Context; -import android.content.res.Configuration; -import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.PowerManager; import android.util.DisplayMetrics; import android.util.Log; -import android.view.GestureDetector; -import android.view.MotionEvent; import android.view.View; -import android.view.ViewGroup; -import android.view.ViewTreeObserver; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.android.car.notification.CarNotificationListener; -import com.android.car.notification.CarNotificationView; -import com.android.car.notification.CarUxRestrictionManagerWrapper; -import com.android.car.notification.NotificationClickHandlerFactory; -import com.android.car.notification.NotificationDataManager; -import com.android.car.notification.NotificationViewController; -import com.android.car.notification.PreprocessingManager; import com.android.internal.logging.MetricsLogger; import com.android.internal.statusbar.RegisterStatusBarResult; import com.android.keyguard.KeyguardUpdateMonitor; @@ -64,7 +41,6 @@ import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.bubbles.BubbleController; import com.android.systemui.car.CarDeviceProvisionedController; import com.android.systemui.car.CarDeviceProvisionedListener; -import com.android.systemui.car.CarServiceProvider; import com.android.systemui.classifier.FalsingLog; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dagger.qualifiers.UiBackground; @@ -84,7 +60,6 @@ import com.android.systemui.recents.ScreenPinningRequest; import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.stackdivider.Divider; import com.android.systemui.statusbar.CommandQueue; -import com.android.systemui.statusbar.FlingAnimationUtils; import com.android.systemui.statusbar.KeyguardIndicationController; import com.android.systemui.statusbar.NavigationBarController; import com.android.systemui.statusbar.NotificationLockscreenUserManager; @@ -156,22 +131,9 @@ import dagger.Lazy; */ public class CarStatusBar extends StatusBar implements CarBatteryController.BatteryViewHandler { private static final String TAG = "CarStatusBar"; - // used to calculate how fast to open or close the window - private static final float DEFAULT_FLING_VELOCITY = 0; - // max time a fling animation takes - private static final float FLING_ANIMATION_MAX_TIME = 0.5f; - // acceleration rate for the fling animation - private static final float FLING_SPEED_UP_FACTOR = 0.6f; private final UserSwitcherController mUserSwitcherController; private final ScrimController mScrimController; - private final LockscreenLockIconController mLockscreenLockIconController; - - private float mOpeningVelocity = DEFAULT_FLING_VELOCITY; - private float mClosingVelocity = DEFAULT_FLING_VELOCITY; - - private float mBackgroundAlphaDiff; - private float mInitialBackgroundAlpha; private CarBatteryController mCarBatteryController; private BatteryMeterView mBatteryMeterView; @@ -179,58 +141,11 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt private final Object mQueueLock = new Object(); private final CarNavigationBarController mCarNavigationBarController; - private final FlingAnimationUtils.Builder mFlingAnimationUtilsBuilder; - private final Lazy<PowerManagerHelper> mPowerManagerHelperLazy; - private final ShadeController mShadeController; - private final CarServiceProvider mCarServiceProvider; - private final NotificationDataManager mNotificationDataManager; private final CarDeviceProvisionedController mCarDeviceProvisionedController; private final ScreenLifecycle mScreenLifecycle; - private final CarNotificationListener mCarNotificationListener; private boolean mDeviceIsSetUpForUser = true; private boolean mIsUserSetupInProgress = false; - private PowerManagerHelper mPowerManagerHelper; - private FlingAnimationUtils mFlingAnimationUtils; - private NotificationClickHandlerFactory mNotificationClickHandlerFactory; - - // The container for the notifications. - private CarNotificationView mNotificationView; - private RecyclerView mNotificationList; - // The handler bar view at the bottom of notification shade. - private View mHandleBar; - // The controller for the notification view. - private NotificationViewController mNotificationViewController; - // The state of if the notification list is currently showing the bottom. - private boolean mNotificationListAtBottom; - // Was the notification list at the bottom when the user first touched the screen - private boolean mNotificationListAtBottomAtTimeOfTouch; - // To be attached to the top navigation bar (i.e. status bar) to pull down the notification - // panel. - private View.OnTouchListener mTopNavBarNotificationTouchListener; - // To be attached to the navigation bars such that they can close the notification panel if - // it's open. - private View.OnTouchListener mNavBarNotificationTouchListener; - // Percentage from top of the screen after which the notification shade will open. This value - // will be used while opening the notification shade. - private int mSettleOpenPercentage; - // Percentage from top of the screen below which the notification shade will close. This - // value will be used while closing the notification shade. - private int mSettleClosePercentage; - // Percentage of notification shade open from top of the screen. - private int mPercentageFromBottom; - // If notification shade is animation to close or to open. - private boolean mIsNotificationAnimating; - // Tracks when the notification shade is being scrolled. This refers to the glass pane being - // scrolled not the recycler view. - private boolean mIsTracking; - private float mFirstTouchDownOnGlassPane; - // If the notification card inside the recycler view is being swiped. - private boolean mIsNotificationCardSwiping; - // If notification shade is being swiped vertically to close. - private boolean mIsSwipingVerticallyToClose; - - private final CarUxRestrictionManagerWrapper mCarUxRestrictionManagerWrapper; public CarStatusBar( Context context, @@ -311,13 +226,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt DismissCallbackRegistry dismissCallbackRegistry, StatusBarTouchableRegionManager statusBarTouchableRegionManager, /* Car Settings injected components. */ - CarServiceProvider carServiceProvider, - Lazy<PowerManagerHelper> powerManagerHelperLazy, - CarNavigationBarController carNavigationBarController, - FlingAnimationUtils.Builder flingAnimationUtilsBuilder, - NotificationDataManager notificationDataManager, - CarUxRestrictionManagerWrapper carUxRestrictionManagerWrapper, - CarNotificationListener carNotificationListener) { + CarNavigationBarController carNavigationBarController) { super( context, notificationsController, @@ -398,17 +307,9 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt statusBarTouchableRegionManager); mUserSwitcherController = userSwitcherController; mScrimController = scrimController; - mLockscreenLockIconController = lockscreenLockIconController; mCarDeviceProvisionedController = carDeviceProvisionedController; - mShadeController = shadeController; - mCarServiceProvider = carServiceProvider; - mPowerManagerHelperLazy = powerManagerHelperLazy; mCarNavigationBarController = carNavigationBarController; - mFlingAnimationUtilsBuilder = flingAnimationUtilsBuilder; mScreenLifecycle = screenLifecycle; - mNotificationDataManager = notificationDataManager; - mCarUxRestrictionManagerWrapper = carUxRestrictionManagerWrapper; - mCarNotificationListener = carNotificationListener; } @Override @@ -416,54 +317,11 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt mDeviceIsSetUpForUser = mCarDeviceProvisionedController.isCurrentUserSetup(); mIsUserSetupInProgress = mCarDeviceProvisionedController.isCurrentUserSetupInProgress(); - // Notification bar related setup. - mInitialBackgroundAlpha = (float) mContext.getResources().getInteger( - R.integer.config_initialNotificationBackgroundAlpha) / 100; - if (mInitialBackgroundAlpha < 0 || mInitialBackgroundAlpha > 100) { - throw new RuntimeException( - "Unable to setup notification bar due to incorrect initial background alpha" - + " percentage"); - } - float finalBackgroundAlpha = Math.max( - mInitialBackgroundAlpha, - (float) mContext.getResources().getInteger( - R.integer.config_finalNotificationBackgroundAlpha) / 100); - if (finalBackgroundAlpha < 0 || finalBackgroundAlpha > 100) { - throw new RuntimeException( - "Unable to setup notification bar due to incorrect final background alpha" - + " percentage"); - } - mBackgroundAlphaDiff = finalBackgroundAlpha - mInitialBackgroundAlpha; - super.start(); - mNotificationPanelViewController.setScrollingEnabled(true); - mSettleOpenPercentage = mContext.getResources().getInteger( - R.integer.notification_settle_open_percentage); - mSettleClosePercentage = mContext.getResources().getInteger( - R.integer.notification_settle_close_percentage); - mFlingAnimationUtils = mFlingAnimationUtilsBuilder - .setMaxLengthSeconds(FLING_ANIMATION_MAX_TIME) - .setSpeedUpFactor(FLING_SPEED_UP_FACTOR) - .build(); - createBatteryController(); mCarBatteryController.startListening(); - mPowerManagerHelper = mPowerManagerHelperLazy.get(); - mPowerManagerHelper.setCarPowerStateListener( - state -> { - // When the car powers on, clear all notifications and mute/unread states. - Log.d(TAG, "New car power state: " + state); - if (state == CarPowerStateListener.ON) { - if (mNotificationClickHandlerFactory != null) { - mNotificationClickHandlerFactory.clearAllNotifications(); - } - mNotificationDataManager.clearAll(); - } - }); - mPowerManagerHelper.connectToCarService(); - mCarDeviceProvisionedController.addCallback( new CarDeviceProvisionedListener() { @Override @@ -540,318 +398,11 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt // when a device has connected by bluetooth. mBatteryMeterView.setVisibility(View.GONE); }); - - connectNotificationsUI(); - } - - /** - * Attach the notification listeners and controllers to the UI as well as build all the - * touch listeners needed for opening and closing the notification panel - */ - private void connectNotificationsUI() { - // Attached to the top navigation bar (i.e. status bar) to detect pull down of the - // notification shade. - GestureDetector openGestureDetector = new GestureDetector(mContext, - new OpenNotificationGestureListener() { - @Override - protected void openNotification() { - animateExpandNotificationsPanel(); - } - }); - // Attached to the notification ui to detect close request of the notification shade. - GestureDetector closeGestureDetector = new GestureDetector(mContext, - new CloseNotificationGestureListener() { - @Override - protected void close() { - if (mPanelExpanded) { - mShadeController.animateCollapsePanels(); - } - } - }); - // Attached to the NavBars to close the notification shade - GestureDetector navBarCloseNotificationGestureDetector = new GestureDetector(mContext, - new NavBarCloseNotificationGestureListener() { - @Override - protected void close() { - if (mPanelExpanded) { - mShadeController.animateCollapsePanels(); - } - } - }); - - // Attached to the Handle bar to close the notification shade - GestureDetector handleBarCloseNotificationGestureDetector = new GestureDetector(mContext, - new HandleBarCloseNotificationGestureListener()); - - mTopNavBarNotificationTouchListener = (v, event) -> { - if (!isDeviceSetupForUser()) { - return true; - } - boolean consumed = openGestureDetector.onTouchEvent(event); - if (consumed) { - return true; - } - maybeCompleteAnimation(event); - return true; - }; - - mNavBarNotificationTouchListener = - (v, event) -> { - boolean consumed = navBarCloseNotificationGestureDetector.onTouchEvent(event); - if (consumed) { - return true; - } - maybeCompleteAnimation(event); - return true; - }; - - mNotificationClickHandlerFactory = new NotificationClickHandlerFactory(mBarService); - mNotificationClickHandlerFactory.registerClickListener((launchResult, alertEntry) -> { - if (launchResult == ActivityManager.START_TASK_TO_FRONT - || launchResult == ActivityManager.START_SUCCESS) { - mShadeController.animateCollapsePanels(); - } - }); - - mNotificationDataManager.setOnUnseenCountUpdateListener(() -> { - onUseenCountUpdate(mNotificationDataManager.getUnseenNotificationCount()); - }); - - mNotificationClickHandlerFactory.setNotificationDataManager(mNotificationDataManager); - - final View glassPane = mNotificationShadeWindowView.findViewById(R.id.glass_pane); - mNotificationView = mNotificationShadeWindowView.findViewById(R.id.notification_view); - mHandleBar = mNotificationShadeWindowView.findViewById(R.id.handle_bar); - mNotificationView.setClickHandlerFactory(mNotificationClickHandlerFactory); - mNotificationView.setNotificationDataManager(mNotificationDataManager); - - // The glass pane is used to view touch events before passed to the notification list. - // This allows us to initialize gesture listeners and detect when to close the notifications - glassPane.setOnTouchListener((v, event) -> { - if (event.getActionMasked() == MotionEvent.ACTION_UP) { - mNotificationListAtBottomAtTimeOfTouch = false; - } - if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { - mFirstTouchDownOnGlassPane = event.getRawX(); - mNotificationListAtBottomAtTimeOfTouch = mNotificationListAtBottom; - // Reset the tracker when there is a touch down on the glass pane. - mIsTracking = false; - // Pass the down event to gesture detector so that it knows where the touch event - // started. - closeGestureDetector.onTouchEvent(event); - } - return false; - }); - - mHandleBar.setOnTouchListener((v, event) -> { - handleBarCloseNotificationGestureDetector.onTouchEvent(event); - maybeCompleteAnimation(event); - return true; - }); - - mNotificationList = mNotificationView.findViewById(R.id.notifications); - mNotificationList.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { - super.onScrolled(recyclerView, dx, dy); - if (!mNotificationList.canScrollVertically(1)) { - mNotificationListAtBottom = true; - return; - } - mNotificationListAtBottom = false; - mIsSwipingVerticallyToClose = false; - mNotificationListAtBottomAtTimeOfTouch = false; - } - }); - mNotificationList.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - mIsNotificationCardSwiping = Math.abs(mFirstTouchDownOnGlassPane - event.getRawX()) - > SWIPE_MAX_OFF_PATH; - if (mNotificationListAtBottomAtTimeOfTouch && mNotificationListAtBottom) { - // We need to save the state here as if notification card is swiping we will - // change the mNotificationListAtBottomAtTimeOfTouch. This is to protect - // closing the notification shade while the notification card is being swiped. - mIsSwipingVerticallyToClose = true; - } - - // If the card is swiping we should not allow the notification shade to close. - // Hence setting mNotificationListAtBottomAtTimeOfTouch to false will stop that - // for us. We are also checking for mIsTracking because while swiping the - // notification shade to close if the user goes a bit horizontal while swiping - // upwards then also this should close. - if (mIsNotificationCardSwiping && !mIsTracking) { - mNotificationListAtBottomAtTimeOfTouch = false; - } - - boolean handled = closeGestureDetector.onTouchEvent(event); - boolean isTracking = mIsTracking; - Rect rect = mNotificationView.getClipBounds(); - float clippedHeight = 0; - if (rect != null) { - clippedHeight = rect.bottom; - } - if (!handled && event.getActionMasked() == MotionEvent.ACTION_UP - && mIsSwipingVerticallyToClose) { - if (mSettleClosePercentage < mPercentageFromBottom && isTracking) { - animateNotificationPanel(DEFAULT_FLING_VELOCITY, false); - } else if (clippedHeight != mNotificationView.getHeight() && isTracking) { - // this can be caused when user is at the end of the list and trying to - // fling to top of the list by scrolling down. - animateNotificationPanel(DEFAULT_FLING_VELOCITY, true); - } - } - - // Updating the mNotificationListAtBottomAtTimeOfTouch state has to be done after - // the event has been passed to the closeGestureDetector above, such that the - // closeGestureDetector sees the up event before the state has changed. - if (event.getActionMasked() == MotionEvent.ACTION_UP) { - mNotificationListAtBottomAtTimeOfTouch = false; - } - return handled || isTracking; - } - }); - mCarServiceProvider.addListener(car -> { - CarUxRestrictionsManager carUxRestrictionsManager = - (CarUxRestrictionsManager) - car.getCarManager(Car.CAR_UX_RESTRICTION_SERVICE); - mCarUxRestrictionManagerWrapper.setCarUxRestrictionsManager( - carUxRestrictionsManager); - - mNotificationViewController = new NotificationViewController( - mNotificationView, - PreprocessingManager.getInstance(mContext), - mCarNotificationListener, - mCarUxRestrictionManagerWrapper, - mNotificationDataManager); - mNotificationViewController.enable(); - }); - } - - /** - * This method is automatically called whenever there is an update to the number of unseen - * notifications. This method can be extended by OEMs to customize the desired logic. - */ - protected void onUseenCountUpdate(int unseenNotificationCount) { - boolean hasUnseen = unseenNotificationCount > 0; - mCarNavigationBarController.toggleAllNotificationsUnseenIndicator(isDeviceSetupForUser(), - hasUnseen); - } - - /** - * @return true if the notification panel is currently visible - */ - boolean isNotificationPanelOpen() { - return mPanelExpanded; } @Override public void animateExpandNotificationsPanel() { - if (!mCommandQueue.panelsEnabled() || !mUserSetup) { - return; - } - // scroll to top - mNotificationList.scrollToPosition(0); - mNotificationShadeWindowController.setPanelVisible(true); - mNotificationView.setVisibility(View.VISIBLE); - animateNotificationPanel(mOpeningVelocity, false); - - setPanelExpanded(true); - } - - public CarNotificationView getCarNotificationView() { - return mNotificationView; - } - - public float getClosingVelocity() { - return mClosingVelocity; - } - - public boolean isTracking() { - return mIsTracking; - } - - private void maybeCompleteAnimation(MotionEvent event) { - if (event.getActionMasked() == MotionEvent.ACTION_UP - && mNotificationView.getVisibility() == View.VISIBLE) { - if (mSettleClosePercentage < mPercentageFromBottom) { - animateNotificationPanel(DEFAULT_FLING_VELOCITY, false); - } else { - animateNotificationPanel(DEFAULT_FLING_VELOCITY, true); - } - } - } - - /** - * Animates the notification shade from one position to other. This is used to either open or - * close the notification shade completely with a velocity. If the animation is to close the - * notification shade this method also makes the view invisible after animation ends. - */ - void animateNotificationPanel(float velocity, boolean isClosing) { - float to = 0; - if (!isClosing) { - to = mNotificationView.getHeight(); - } - - Rect rect = mNotificationView.getClipBounds(); - if (rect != null && rect.bottom != to) { - float from = rect.bottom; - animate(from, to, velocity, isClosing); - return; - } - - // We will only be here if the shade is being opened programmatically or via button when - // height of the layout was not calculated. - ViewTreeObserver notificationTreeObserver = mNotificationView.getViewTreeObserver(); - notificationTreeObserver.addOnGlobalLayoutListener( - new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - ViewTreeObserver obs = mNotificationView.getViewTreeObserver(); - obs.removeOnGlobalLayoutListener(this); - float to = mNotificationView.getHeight(); - animate(/* from= */ 0, to, velocity, isClosing); - } - }); - } - - private void animate(float from, float to, float velocity, boolean isClosing) { - if (mIsNotificationAnimating) { - return; - } - mIsNotificationAnimating = true; - mIsTracking = true; - ValueAnimator animator = ValueAnimator.ofFloat(from, to); - animator.addUpdateListener( - animation -> { - float animatedValue = (Float) animation.getAnimatedValue(); - setNotificationViewClipBounds((int) animatedValue); - }); - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - super.onAnimationEnd(animation); - mIsNotificationAnimating = false; - mIsTracking = false; - mOpeningVelocity = DEFAULT_FLING_VELOCITY; - mClosingVelocity = DEFAULT_FLING_VELOCITY; - if (isClosing) { - mNotificationShadeWindowController.setPanelVisible(false); - mNotificationView.setVisibility(View.INVISIBLE); - mNotificationView.setClipBounds(null); - mNotificationViewController.onVisibilityChanged(false); - // let the status bar know that the panel is closed - setPanelExpanded(false); - } else { - mNotificationViewController.onVisibilityChanged(true); - // let the status bar know that the panel is open - mNotificationView.setVisibleNotificationsAsSeen(); - setPanelExpanded(true); - } - } - }); - mFlingAnimationUtils.apply(animator, from, to, Math.abs(velocity)); - animator.start(); + // No op. } @Override @@ -867,25 +418,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt @Override protected void createNavigationBar(@Nullable RegisterStatusBarResult result) { - registerNavBarListeners(); - } - - private void registerNavBarListeners() { - // In CarStatusBar, navigation bars are built by NavigationBar.java - // Instead, we register necessary callbacks to the navigation bar controller. - mCarNavigationBarController.registerTopBarTouchListener( - mTopNavBarNotificationTouchListener); - - mCarNavigationBarController.registerBottomBarTouchListener( - mNavBarNotificationTouchListener); - - mCarNavigationBarController.registerLeftBarTouchListener( - mNavBarNotificationTouchListener); - - mCarNavigationBarController.registerRightBarTouchListener( - mNavBarNotificationTouchListener); - - mCarNavigationBarController.registerNotificationController(() -> togglePanel()); + // No op. } @Override @@ -966,245 +499,16 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt @Override public void onDensityOrFontScaleChanged() { super.onDensityOrFontScaleChanged(); - registerNavBarListeners(); // Need to update the background on density changed in case the change was due to night // mode. mNotificationPanelBackground = getDefaultWallpaper(); mScrimController.setScrimBehindDrawable(mNotificationPanelBackground); } - @Override - public void onLocaleListChanged() { - connectNotificationsUI(); - registerNavBarListeners(); - } - /** * Returns the {@link Drawable} that represents the wallpaper that the user has currently set. */ private Drawable getDefaultWallpaper() { return mContext.getDrawable(com.android.internal.R.drawable.default_wallpaper); } - - private void setNotificationViewClipBounds(int height) { - if (height > mNotificationView.getHeight()) { - height = mNotificationView.getHeight(); - } - Rect clipBounds = new Rect(); - clipBounds.set(0, 0, mNotificationView.getWidth(), height); - // Sets the clip region on the notification list view. - mNotificationView.setClipBounds(clipBounds); - if (mHandleBar != null) { - ViewGroup.MarginLayoutParams lp = - (ViewGroup.MarginLayoutParams) mHandleBar.getLayoutParams(); - mHandleBar.setTranslationY(height - mHandleBar.getHeight() - lp.bottomMargin); - } - if (mNotificationView.getHeight() > 0) { - Drawable background = mNotificationView.getBackground().mutate(); - background.setAlpha((int) (getBackgroundAlpha(height) * 255)); - mNotificationView.setBackground(background); - } - } - - /** - * Calculates the alpha value for the background based on how much of the notification - * shade is visible to the user. When the notification shade is completely open then - * alpha value will be 1. - */ - private float getBackgroundAlpha(int height) { - return mInitialBackgroundAlpha + - ((float) height / mNotificationView.getHeight() * mBackgroundAlphaDiff); - } - - @Override - public void onConfigChanged(Configuration newConfig) { - super.onConfigChanged(newConfig); - - int uiModeNightMask = (newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK); - - boolean dayNightModeChanged = uiModeNightMask == Configuration.UI_MODE_NIGHT_YES - || uiModeNightMask == Configuration.UI_MODE_NIGHT_NO; - - if (dayNightModeChanged) { - mNotificationView.setBackgroundColor( - mContext.getColor(R.color.notification_shade_background_color)); - } - } - - private void calculatePercentageFromBottom(float height) { - if (mNotificationView.getHeight() > 0) { - mPercentageFromBottom = (int) Math.abs( - height / mNotificationView.getHeight() * 100); - } - } - - private static final int SWIPE_DOWN_MIN_DISTANCE = 25; - private static final int SWIPE_MAX_OFF_PATH = 75; - private static final int SWIPE_THRESHOLD_VELOCITY = 200; - - /** - * Only responsible for open hooks. Since once the panel opens it covers all elements - * there is no need to merge with close. - */ - private abstract class OpenNotificationGestureListener extends - GestureDetector.SimpleOnGestureListener { - - @Override - public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, - float distanceY) { - - if (mNotificationView.getVisibility() == View.INVISIBLE) { - // when the on-scroll is called for the first time to open. - mNotificationList.scrollToPosition(0); - } - mNotificationShadeWindowController.setPanelVisible(true); - mNotificationView.setVisibility(View.VISIBLE); - - // clips the view for the notification shade when the user scrolls to open. - setNotificationViewClipBounds((int) event2.getRawY()); - - // Initially the scroll starts with height being zero. This checks protects from divide - // by zero error. - calculatePercentageFromBottom(event2.getRawY()); - - mIsTracking = true; - return true; - } - - - @Override - public boolean onFling(MotionEvent event1, MotionEvent event2, - float velocityX, float velocityY) { - if (velocityY > SWIPE_THRESHOLD_VELOCITY) { - mOpeningVelocity = velocityY; - openNotification(); - return true; - } - animateNotificationPanel(DEFAULT_FLING_VELOCITY, true); - - return false; - } - - protected abstract void openNotification(); - } - - /** - * To be installed on the open panel notification panel - */ - private abstract class CloseNotificationGestureListener extends - GestureDetector.SimpleOnGestureListener { - - @Override - public boolean onSingleTapUp(MotionEvent motionEvent) { - if (mPanelExpanded) { - animateNotificationPanel(DEFAULT_FLING_VELOCITY, true); - } - return true; - } - - @Override - public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, - float distanceY) { - // should not clip while scroll to the bottom of the list. - if (!mNotificationListAtBottomAtTimeOfTouch) { - return false; - } - float actualNotificationHeight = - mNotificationView.getHeight() - (event1.getRawY() - event2.getRawY()); - if (actualNotificationHeight > mNotificationView.getHeight()) { - actualNotificationHeight = mNotificationView.getHeight(); - } - if (mNotificationView.getHeight() > 0) { - mPercentageFromBottom = (int) Math.abs( - actualNotificationHeight / mNotificationView.getHeight() * 100); - boolean isUp = distanceY > 0; - - // This check is to figure out if onScroll was called while swiping the card at - // bottom of the list. At that time we should not allow notification shade to - // close. We are also checking for the upwards swipe gesture here because it is - // possible if a user is closing the notification shade and while swiping starts - // to open again but does not fling. At that time we should allow the - // notification shade to close fully or else it would stuck in between. - if (Math.abs(mNotificationView.getHeight() - actualNotificationHeight) - > SWIPE_DOWN_MIN_DISTANCE && isUp) { - setNotificationViewClipBounds((int) actualNotificationHeight); - mIsTracking = true; - } else if (!isUp) { - setNotificationViewClipBounds((int) actualNotificationHeight); - } - } - // if we return true the the items in RV won't be scrollable. - return false; - } - - - @Override - public boolean onFling(MotionEvent event1, MotionEvent event2, - float velocityX, float velocityY) { - // should not fling if the touch does not start when view is at the bottom of the list. - if (!mNotificationListAtBottomAtTimeOfTouch) { - return false; - } - if (Math.abs(event1.getX() - event2.getX()) > SWIPE_MAX_OFF_PATH - || Math.abs(velocityY) < SWIPE_THRESHOLD_VELOCITY) { - // swipe was not vertical or was not fast enough - return false; - } - boolean isUp = velocityY < 0; - if (isUp) { - close(); - return true; - } else { - // we should close the shade - animateNotificationPanel(velocityY, false); - } - return false; - } - - protected abstract void close(); - } - - /** - * To be installed on the nav bars. - */ - private abstract class NavBarCloseNotificationGestureListener extends - CloseNotificationGestureListener { - @Override - public boolean onSingleTapUp(MotionEvent e) { - mClosingVelocity = DEFAULT_FLING_VELOCITY; - if (mPanelExpanded) { - close(); - } - return super.onSingleTapUp(e); - } - - @Override - public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, - float distanceY) { - calculatePercentageFromBottom(event2.getRawY()); - setNotificationViewClipBounds((int) event2.getRawY()); - return true; - } - } - - /** - * To be installed on the handle bar. - */ - private class HandleBarCloseNotificationGestureListener extends - GestureDetector.SimpleOnGestureListener { - - @Override - public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, - float distanceY) { - calculatePercentageFromBottom(event2.getRawY()); - // To prevent the jump in the clip bounds while closing the notification shade using - // the handle bar we should calculate the height using the diff of event1 and event2. - // This will help the notification shade to clip smoothly as the event2 value changes - // as event1 value will be fixed. - int clipHeight = - mNotificationView.getHeight() - (int) (event1.getRawY() - event2.getRawY()); - setNotificationViewClipBounds(clipHeight); - return true; - } - } } diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java index 160268b8f461..1baa1f6891ee 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java @@ -23,9 +23,6 @@ import android.os.Handler; import android.os.PowerManager; import android.util.DisplayMetrics; -import com.android.car.notification.CarNotificationListener; -import com.android.car.notification.CarUxRestrictionManagerWrapper; -import com.android.car.notification.NotificationDataManager; import com.android.internal.logging.MetricsLogger; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.ViewMediatorCallback; @@ -34,7 +31,6 @@ import com.android.systemui.assist.AssistManager; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.bubbles.BubbleController; import com.android.systemui.car.CarDeviceProvisionedController; -import com.android.systemui.car.CarServiceProvider; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.keyguard.DismissCallbackRegistry; @@ -50,7 +46,6 @@ import com.android.systemui.recents.ScreenPinningRequest; import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.stackdivider.Divider; import com.android.systemui.statusbar.CommandQueue; -import com.android.systemui.statusbar.FlingAnimationUtils; import com.android.systemui.statusbar.KeyguardIndicationController; import com.android.systemui.statusbar.NavigationBarController; import com.android.systemui.statusbar.NotificationLockscreenUserManager; @@ -205,13 +200,7 @@ public class CarStatusBarModule { KeyguardIndicationController keyguardIndicationController, DismissCallbackRegistry dismissCallbackRegistry, StatusBarTouchableRegionManager statusBarTouchableRegionManager, - CarServiceProvider carServiceProvider, - Lazy<PowerManagerHelper> powerManagerHelperLazy, - CarNavigationBarController carNavigationBarController, - FlingAnimationUtils.Builder flingAnimationUtilsBuilder, - NotificationDataManager notificationDataManager, - CarUxRestrictionManagerWrapper carUxRestrictionManagerWrapper, - CarNotificationListener carNotificationListener) { + CarNavigationBarController carNavigationBarController) { return new CarStatusBar( context, notificationsController, @@ -289,12 +278,6 @@ public class CarStatusBarModule { keyguardIndicationController, dismissCallbackRegistry, statusBarTouchableRegionManager, - carServiceProvider, - powerManagerHelperLazy, - carNavigationBarController, - flingAnimationUtilsBuilder, - notificationDataManager, - carUxRestrictionManagerWrapper, - carNotificationListener); + carNavigationBarController); } } diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/PowerManagerHelper.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/PowerManagerHelper.java index 71847bbac9fd..615a7bae2930 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/PowerManagerHelper.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/PowerManagerHelper.java @@ -42,7 +42,7 @@ public class PowerManagerHelper { private final CarServiceProvider.CarServiceOnConnectedListener mCarServiceLifecycleListener; @Inject - PowerManagerHelper(CarServiceProvider carServiceProvider) { + public PowerManagerHelper(CarServiceProvider carServiceProvider) { mCarServiceProvider = carServiceProvider; mCarServiceLifecycleListener = car -> { Log.d(TAG, "Car Service connected"); @@ -58,14 +58,14 @@ public class PowerManagerHelper { /** * Sets a {@link CarPowerStateListener}. Should be set before {@link #connectToCarService()}. */ - void setCarPowerStateListener(@NonNull CarPowerStateListener listener) { + public void setCarPowerStateListener(@NonNull CarPowerStateListener listener) { mCarPowerStateListener = listener; } /** * Connect to Car service. */ - void connectToCarService() { + public void connectToCarService() { mCarServiceProvider.addListener(mCarServiceLifecycleListener); } } diff --git a/packages/CarSystemUI/src/com/android/systemui/window/OverlayViewController.java b/packages/CarSystemUI/src/com/android/systemui/window/OverlayViewController.java index 6e0db4f317ba..15ef0be38d4d 100644 --- a/packages/CarSystemUI/src/com/android/systemui/window/OverlayViewController.java +++ b/packages/CarSystemUI/src/com/android/systemui/window/OverlayViewController.java @@ -120,4 +120,9 @@ public class OverlayViewController { protected final View getLayout() { return mLayout; } + + /** Returns the {@link OverlayViewGlobalStateController}. */ + protected final OverlayViewGlobalStateController getOverlayViewGlobalStateController() { + return mOverlayViewGlobalStateController; + } } diff --git a/packages/CarSystemUI/src/com/android/systemui/window/OverlayViewGlobalStateController.java b/packages/CarSystemUI/src/com/android/systemui/window/OverlayViewGlobalStateController.java index 2d4a9e6331d2..402d742cb949 100644 --- a/packages/CarSystemUI/src/com/android/systemui/window/OverlayViewGlobalStateController.java +++ b/packages/CarSystemUI/src/com/android/systemui/window/OverlayViewGlobalStateController.java @@ -71,12 +71,10 @@ public class OverlayViewGlobalStateController { public void showView(OverlayViewController viewController, Runnable show) { if (mShownSet.isEmpty()) { mCarNavigationBarController.hideBars(); - mSystemUIOverlayWindowController.setWindowExpanded(true); + setWindowVisible(true); } - if (!viewController.isInflated()) { - viewController.inflate(mSystemUIOverlayWindowController.getBaseLayout()); - } + inflateView(viewController); show.run(); mShownSet.add(viewController.getClass().getName()); @@ -104,9 +102,36 @@ public class OverlayViewGlobalStateController { if (mShownSet.isEmpty()) { mCarNavigationBarController.showBars(); - mSystemUIOverlayWindowController.setWindowExpanded(false); + setWindowVisible(false); } Log.d(TAG, "Content hidden: " + viewController.getClass().getName()); } + + /** Sets the window visibility state. */ + public void setWindowVisible(boolean expanded) { + mSystemUIOverlayWindowController.setWindowVisible(expanded); + } + + /** Returns {@code true} is the window is visible. */ + public boolean isWindowVisible() { + return mSystemUIOverlayWindowController.isWindowVisible(); + } + + /** Sets the focusable flag of the sysui overlawy window. */ + public void setWindowFocusable(boolean focusable) { + mSystemUIOverlayWindowController.setWindowFocusable(focusable); + } + + /** Returns {@code true} if the window is focusable. */ + public boolean isWindowFocusable() { + return mSystemUIOverlayWindowController.isWindowFocusable(); + } + + /** Inflates the view controlled by the given view controller. */ + public void inflateView(OverlayViewController viewController) { + if (!viewController.isInflated()) { + viewController.inflate(mSystemUIOverlayWindowController.getBaseLayout()); + } + } } diff --git a/packages/CarSystemUI/src/com/android/systemui/window/OverlayWindowModule.java b/packages/CarSystemUI/src/com/android/systemui/window/OverlayWindowModule.java index b0e308966477..dd29f8dac387 100644 --- a/packages/CarSystemUI/src/com/android/systemui/window/OverlayWindowModule.java +++ b/packages/CarSystemUI/src/com/android/systemui/window/OverlayWindowModule.java @@ -16,6 +16,7 @@ package com.android.systemui.window; +import com.android.systemui.car.notification.NotificationPanelViewMediator; import com.android.systemui.car.userswitcher.FullscreenUserSwitcherViewMediator; import dagger.Binds; @@ -28,10 +29,17 @@ import dagger.multibindings.IntoMap; */ @Module public abstract class OverlayWindowModule { - /** Inject into FullscreenUserSwitcherViewsMediator. */ + /** Injects FullscreenUserSwitcherViewsMediator. */ @Binds @IntoMap @ClassKey(FullscreenUserSwitcherViewMediator.class) public abstract OverlayViewMediator bindFullscreenUserSwitcherViewsMediator( FullscreenUserSwitcherViewMediator overlayViewsMediator); + + /** Injects NotificationPanelViewMediator. */ + @Binds + @IntoMap + @ClassKey(NotificationPanelViewMediator.class) + public abstract OverlayViewMediator bindNotificationPanelViewMediator( + NotificationPanelViewMediator notificationPanelViewMediator); } diff --git a/packages/CarSystemUI/src/com/android/systemui/window/SystemUIOverlayWindowController.java b/packages/CarSystemUI/src/com/android/systemui/window/SystemUIOverlayWindowController.java index 9c456eecc1ac..0dbe1a3ea1dd 100644 --- a/packages/CarSystemUI/src/com/android/systemui/window/SystemUIOverlayWindowController.java +++ b/packages/CarSystemUI/src/com/android/systemui/window/SystemUIOverlayWindowController.java @@ -19,17 +19,15 @@ package com.android.systemui.window; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; import android.content.Context; -import android.content.res.Resources; import android.graphics.PixelFormat; -import android.graphics.Point; import android.os.Binder; import android.view.Gravity; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import com.android.systemui.R; -import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.statusbar.policy.ConfigurationController; import javax.inject.Inject; @@ -45,36 +43,24 @@ public class SystemUIOverlayWindowController implements ConfigurationController.ConfigurationListener { private final Context mContext; - private final Resources mResources; private final WindowManager mWindowManager; - private final int mStatusBarHeight; - private final int mNavBarHeight; - private final int mDisplayHeight; private ViewGroup mBaseLayout; private WindowManager.LayoutParams mLp; private WindowManager.LayoutParams mLpChanged; private boolean mIsAttached = false; + private boolean mVisible = false; + private boolean mFocusable = false; @Inject public SystemUIOverlayWindowController( Context context, - @Main Resources resources, WindowManager windowManager, ConfigurationController configurationController ) { mContext = context; - mResources = resources; mWindowManager = windowManager; - Point display = new Point(); - mWindowManager.getDefaultDisplay().getSize(display); - mDisplayHeight = display.y; - - mStatusBarHeight = mResources.getDimensionPixelSize( - com.android.internal.R.dimen.status_bar_height); - mNavBarHeight = mResources.getDimensionPixelSize(R.dimen.navigation_bar_height); - mLpChanged = new WindowManager.LayoutParams(); mBaseLayout = (ViewGroup) LayoutInflater.from(context) .inflate(R.layout.sysui_overlay_window, /* root= */ null, false); @@ -103,13 +89,13 @@ public class SystemUIOverlayWindowController implements // hardware-accelerated. mLp = new WindowManager.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, - mStatusBarHeight, + ViewGroup.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_STATUS_BAR_SUB_PANEL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE + | WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH - | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN - | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, + | WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, PixelFormat.TRANSLUCENT); mLp.token = new Binder(); mLp.gravity = Gravity.TOP; @@ -121,26 +107,38 @@ public class SystemUIOverlayWindowController implements mWindowManager.addView(mBaseLayout, mLp); mLpChanged.copyFrom(mLp); + setWindowVisible(false); + } + + /** Sets the window to the visible state. */ + public void setWindowVisible(boolean visible) { + mVisible = visible; + if (visible) { + mBaseLayout.setVisibility(View.VISIBLE); + } else { + mBaseLayout.setVisibility(View.INVISIBLE); + } + updateWindow(); } - /** Sets the window to the expanded state. */ - public void setWindowExpanded(boolean expanded) { - if (expanded) { - // TODO: Update this so that the windowing type gets the full height of the display - // when we use MATCH_PARENT. - mLpChanged.height = mDisplayHeight + mNavBarHeight; - mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; + /** Sets the window to be focusable. */ + public void setWindowFocusable(boolean focusable) { + mFocusable = focusable; + if (focusable) { + mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; } else { - mLpChanged.height = mStatusBarHeight; - // TODO: Allow touches to go through to the status bar to handle notification panel. - mLpChanged.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; + mLpChanged.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; } updateWindow(); } - /** Returns {@code true} if the window is expanded */ - public boolean isWindowExpanded() { - return mLp.height != mStatusBarHeight; + /** Returns {@code true} if the window is visible */ + public boolean isWindowVisible() { + return mVisible; + } + + public boolean isWindowFocusable() { + return mFocusable; } private void updateWindow() { diff --git a/packages/CarSystemUI/tests/src/com/android/systemui/window/OverlayViewGlobalStateControllerTest.java b/packages/CarSystemUI/tests/src/com/android/systemui/window/OverlayViewGlobalStateControllerTest.java index 03354d1aa9d7..a96b90636891 100644 --- a/packages/CarSystemUI/tests/src/com/android/systemui/window/OverlayViewGlobalStateControllerTest.java +++ b/packages/CarSystemUI/tests/src/com/android/systemui/window/OverlayViewGlobalStateControllerTest.java @@ -97,7 +97,7 @@ public class OverlayViewGlobalStateControllerTest extends SysuiTestCase { public void showView_nothingAlreadyShown_windowIsExpanded() { mOverlayViewGlobalStateController.showView(mOverlayViewController, mRunnable); - verify(mSystemUIOverlayWindowController).setWindowExpanded(true); + verify(mSystemUIOverlayWindowController).setWindowVisible(true); } @Test @@ -115,7 +115,7 @@ public class OverlayViewGlobalStateControllerTest extends SysuiTestCase { mOverlayViewGlobalStateController.showView(mOverlayViewController, mRunnable); - verify(mSystemUIOverlayWindowController, never()).setWindowExpanded(true); + verify(mSystemUIOverlayWindowController, never()).setWindowVisible(true); } @Test @@ -223,7 +223,7 @@ public class OverlayViewGlobalStateControllerTest extends SysuiTestCase { mOverlayViewGlobalStateController.hideView(mOverlayViewController, mRunnable); - verify(mSystemUIOverlayWindowController, never()).setWindowExpanded(false); + verify(mSystemUIOverlayWindowController, never()).setWindowVisible(false); } @Test @@ -245,6 +245,24 @@ public class OverlayViewGlobalStateControllerTest extends SysuiTestCase { mOverlayViewGlobalStateController.hideView(mOverlayViewController, mRunnable); - verify(mSystemUIOverlayWindowController).setWindowExpanded(false); + verify(mSystemUIOverlayWindowController).setWindowVisible(false); + } + + @Test + public void inflateView_notInflated_inflates() { + when(mOverlayViewController.isInflated()).thenReturn(false); + + mOverlayViewGlobalStateController.inflateView(mOverlayViewController); + + verify(mOverlayViewController).inflate(mBaseLayout); + } + + @Test + public void inflateView_alreadyInflated_doesNotInflate() { + when(mOverlayViewController.isInflated()).thenReturn(true); + + mOverlayViewGlobalStateController.inflateView(mOverlayViewController); + + verify(mOverlayViewController, never()).inflate(mBaseLayout); } } diff --git a/packages/CtsShim/build/Android.bp b/packages/CtsShim/build/Android.bp index ede1fab64973..587109d5dae9 100644 --- a/packages/CtsShim/build/Android.bp +++ b/packages/CtsShim/build/Android.bp @@ -100,6 +100,20 @@ android_app { } //########################################################## +// Variant: Non Privileged app upgrade which is malformed +android_app { + name: "CtsShimTargetPSdk", + sdk_version: "current", + optimize: { + enabled: false, + }, + dex_preopt: { + enabled: false, + }, + manifest: "shim/AndroidManifestTargetPSdk.xml" +} + +//########################################################## // Variant: System app android_app { diff --git a/packages/CtsShim/build/shim/AndroidManifestTargetPSdk.xml b/packages/CtsShim/build/shim/AndroidManifestTargetPSdk.xml new file mode 100644 index 000000000000..2e9381aac806 --- /dev/null +++ b/packages/CtsShim/build/shim/AndroidManifestTargetPSdk.xml @@ -0,0 +1,22 @@ +<!-- + ~ 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. + --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.apk.cts.shim" + android:versionCode="2" + android:versionName="2.0" > + + <uses-sdk android:minSdkVersion="28" android:targetSdkVersion="P" /> +</manifest>
\ No newline at end of file diff --git a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java index d4eb2a9c75d0..a2da23e918d2 100644 --- a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java +++ b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java @@ -28,11 +28,11 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.graphics.Rect; import android.hardware.display.DisplayManager; import android.os.Handler; import android.os.IBinder; import android.os.Message; -import android.util.Size; import android.util.Slog; import android.view.Display; import android.view.ViewGroup; @@ -134,8 +134,8 @@ public class FakeApp extends Application { } lp.width = ViewGroup.LayoutParams.MATCH_PARENT; lp.height = ViewGroup.LayoutParams.MATCH_PARENT; - Size maxWindowSize = wm.getMaximumWindowMetrics().getSize(); - int maxSize = Math.max(maxWindowSize.getWidth(), maxWindowSize.getHeight()); + Rect maxWindowBounds = wm.getMaximumWindowMetrics().getBounds(); + int maxSize = Math.max(maxWindowBounds.width(), maxWindowBounds.height()); maxSize *= 2; lp.x = maxSize; lp.y = maxSize; diff --git a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java index df00eee63b50..e2120f80f1c9 100644 --- a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java +++ b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java @@ -19,22 +19,22 @@ package com.android.fakeoemfeatures; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; -import java.util.ArrayList; -import java.util.Random; - import android.app.Dialog; import android.app.Service; import android.content.Context; import android.content.Intent; +import android.graphics.Rect; import android.hardware.display.DisplayManager; import android.os.Handler; import android.os.IBinder; import android.os.Message; -import android.util.Size; import android.view.Display; import android.view.ViewGroup; import android.view.WindowManager; +import java.util.ArrayList; +import java.util.Random; + public class FakeBackgroundService extends Service { final ArrayList<int[]> mAllocs = new ArrayList<int[]>(); @@ -99,8 +99,8 @@ public class FakeBackgroundService extends Service { // Create an instance of WindowManager that is adjusted to the area of the display dedicated // for windows with type TYPE_APPLICATION_OVERLAY. final WindowManager wm = windowContext.getSystemService(WindowManager.class); - Size maxWindowSize = wm.getMaximumWindowMetrics().getSize(); - int maxSize = Math.max(maxWindowSize.getWidth(), maxWindowSize.getHeight()); + Rect maxWindowBounds = wm.getMaximumWindowMetrics().getBounds(); + int maxSize = Math.max(maxWindowBounds.width(), maxWindowBounds.height()); maxSize *= 2; lp.x = maxSize; lp.y = maxSize; diff --git a/packages/OsuLogin/Android.bp b/packages/OsuLogin/Android.bp index cd9cd1e6395d..d7e36b164811 100644 --- a/packages/OsuLogin/Android.bp +++ b/packages/OsuLogin/Android.bp @@ -4,9 +4,14 @@ android_app { resource_dirs: ["res"], srcs: ["src/**/*.java"], sdk_version: "system_current", - + certificate: ":com.android.hotspot2.osulogin.certificate", apex_available: [ "com.android.wifi", "test_com.android.wifi", ], } + +android_app_certificate { + name: "com.android.hotspot2.osulogin.certificate", + certificate: "certs/com.android.hotspot2.osulogin" +} diff --git a/packages/OsuLogin/certs/com.android.hotspot2.osulogin.pk8 b/packages/OsuLogin/certs/com.android.hotspot2.osulogin.pk8 Binary files differnew file mode 100644 index 000000000000..87fd622cde2c --- /dev/null +++ b/packages/OsuLogin/certs/com.android.hotspot2.osulogin.pk8 diff --git a/packages/OsuLogin/certs/com.android.hotspot2.osulogin.x509.pem b/packages/OsuLogin/certs/com.android.hotspot2.osulogin.x509.pem new file mode 100644 index 000000000000..1dfe701dc88e --- /dev/null +++ b/packages/OsuLogin/certs/com.android.hotspot2.osulogin.x509.pem @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +MIIGDzCCA/egAwIBAgIUHzkh0UCF/H+1mZZp0ROX4nXKOUowDQYJKoZIhvcNAQEL +BQAwgZUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH +DA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRy +b2lkMREwDwYDVQQDDAhPc3VMb2dpbjEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBh +bmRyb2lkLmNvbTAgFw0yMDAzMjUwMjQ5MTNaGA80NzU4MDIxOTAyNDkxM1owgZUx +CzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3Vu +dGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRyb2lkMREw +DwYDVQQDDAhPc3VMb2dpbjEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lk +LmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMJDnjAeIZ2KUvKc +ONwxuzIhLvXr6LRm+Uz0ebjz++5IzQJLwr/COPBG9zbIm8izj2acp+l4WVEYT6I4 +Es5LEp556ySCuZx8IjOd0Zd6NCdaKmYouDTjYTrELWUlZjfA7Km2L5x2M6ArnDO5 +zJ1BIsQ06S3C7iR3ktAQ1cFdidg6Ha2gainS0A1JKN3kL9BL1pvHRLzWZX4gsNhB +C/6Ue3W3Sx2JRQkaaLksDdoKq0QswEk5tGfKbVr9+hHv/pztaaqEXSeV6f305cAx +Hzd6+QJ8f8AJz2Rhnv43y72UO8b02CSP3laUj8geidR8XXw+R7Kzu8NfFDL7uVIh +ktPaBxfWPNYtedp3JrGeZhkzljsushY+bVHECEzROhY2CiUZBEn+wwZLWe2W7oee +VCL1EZBYctK5CfrrV6x0wvbBUF/ViwV+2LQXQNp08xB8bJBqoBn4KZjK0tTN86Dq +qRALyoVIVh5VDU9Wbi3vrJb0/9TEQtMjuo0DS3hdtnowdRyAyhwbQHO26dqnnzBI +XtTAve4RkOwnb8QzZde56qvRgweDE9Im1jpx4E+MMGqVYs8Txurmd/t6bCjTvp1P +4i88crk/zqCoHEQEbiaNdfkULJAWg9wqxPjqPCTVNtOXoJwuHsNymQVSztIUSySz +ZQ8Trk0ApqQf8yH2mjM6HJJZoNpBAgMBAAGjUzBRMB0GA1UdDgQWBBRdpduh1P+I +BMbg5S4n1kbj5hQsOzAfBgNVHSMEGDAWgBRdpduh1P+IBMbg5S4n1kbj5hQsOzAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQB+FzSuoA7LCvn8l86V +sSI4lH1KLLH+wrXp20w/wYcBY+s4hYPpAJ8YbEMOT9uibK/HpEWYFqiVCqk4gKXr +Qraxvmtqq0WNSwkjeopTYlZeBzTC/If3UoOCp7KCfMdydIcxvk6LNokMWWqSCNP8 +QiD872XuBvj/uQeBsbHZTqruqPnu+LZwpuHFVRp/Pyj9rT61PsvGitb7q/chW0G7 +7csHOc5q2223LKlNknPsfbcR6nVEg4KfN7kPKny8iJtl2pdbfBjFDp+73nzW8qZU +5JWO5nWL7cJh4mt5sPGrzpt/Hf8/Dngg69sImRqjv/6/wCV0pEmmNjKJkXcMaZ0T +2TSs+A7K6l15NYk8exkMymTU7jk+iDud3tnQ68YHf/A9pDu15OCw6U/pTgOgu9co +rBLLhGV0Tb6XAnsWKe9tsLcumQXU5ZUn9m5VJl58wQHNhUqpT7L0fWtpiTMTStVA +/yZbndPO4SbjR5rjcAk1xge8lyIIp0WBWmwoQ/1y4DXF/yPaX733wO7uWUljgKuy +MM/zM4zklB8nFjXfPNf3j24Bzqmy7rqy4XB64enVmYQ2mVNqfwXvINoo2XOrAmj/ +bhSWXiCFltJFM7fmJGOMEEHBt9QfbmCgmM4aoWMgH7P+HxGW+Vc3tGixBbsxNRC+ +/VrPAINQV4x5q8zGYNQBqNFn/A== +-----END CERTIFICATE----- diff --git a/packages/OsuLogin/certs/key.pem b/packages/OsuLogin/certs/key.pem new file mode 100644 index 000000000000..f560a8d0fa62 --- /dev/null +++ b/packages/OsuLogin/certs/key.pem @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDCQ54wHiGdilLy +nDjcMbsyIS716+i0ZvlM9Hm48/vuSM0CS8K/wjjwRvc2yJvIs49mnKfpeFlRGE+i +OBLOSxKeeeskgrmcfCIzndGXejQnWipmKLg042E6xC1lJWY3wOypti+cdjOgK5wz +ucydQSLENOktwu4kd5LQENXBXYnYOh2toGop0tANSSjd5C/QS9abx0S81mV+ILDY +QQv+lHt1t0sdiUUJGmi5LA3aCqtELMBJObRnym1a/foR7/6c7WmqhF0nlen99OXA +MR83evkCfH/ACc9kYZ7+N8u9lDvG9Ngkj95WlI/IHonUfF18Pkeys7vDXxQy+7lS +IZLT2gcX1jzWLXnadyaxnmYZM5Y7LrIWPm1RxAhM0ToWNgolGQRJ/sMGS1ntlu6H +nlQi9RGQWHLSuQn661esdML2wVBf1YsFfti0F0DadPMQfGyQaqAZ+CmYytLUzfOg +6qkQC8qFSFYeVQ1PVm4t76yW9P/UxELTI7qNA0t4XbZ6MHUcgMocG0Bztunap58w +SF7UwL3uEZDsJ2/EM2XXueqr0YMHgxPSJtY6ceBPjDBqlWLPE8bq5nf7emwo076d +T+IvPHK5P86gqBxEBG4mjXX5FCyQFoPcKsT46jwk1TbTl6CcLh7DcpkFUs7SFEsk +s2UPE65NAKakH/Mh9pozOhySWaDaQQIDAQABAoICAGgX7XKhIqgVD59aoIk0yLby +2wQBdf780ocu1O6LJiqnrdqWF/PCsdnmXN9pHTitJqD4Pm03BL0Uhs9ItqL9zStH +7vzwY177kSQRY9aEL+AKS3/UP+hvEpF3v09ce+pSIT5LFjYDjGQ+GgQJgh+dYHC8 +XVodAphdzjhZXQCxC4TmlzKLK3ffs4X69r/3XruBd6yfWTDKvTWZdMlcCX5Pt9v6 +7HAWNvzKvuTCO2Xjo6PzStGx7v5SlMhWISJtdARInv80z+m/RdPD3zxd1flXloiD +h7yyRQPn31cfNLgP7vwMBKmKwbuo/WZhHr/SKBHEGY0jC/CDSQKMqd/dh5ynTnbC +vi/qjKFIHofmhzgQ+fiHMeMsAO1c9eYs8a6bDeJjhA5qJP1HjSie9Ss9z94mp6Ww +TRkU93yVX04DU4TCCf0IcFpKdbtKp84i6iLV9lKGh9juM42hSOFUV6bhxmlJ9zvM +yl7vfhhuFHy1SypmaK/oJ+nwac4vIMaHCX9ifl6hm/z4PrGFSYJGQoJtVOz0vT15 +lSwCJVdHkGAe0LI+3iFn5jJlluD7TqsLmZLxqTTmzDZ3U9WhAslmn5TcZd92mL0i +ZVTfCkjyl1wUHeif2992oTUH6CFZ1jKd8xwdWvyKkvQcjhiS9GUsm7j6jolR/QI7 +VPQlocM/vCCusrMWnR7xAoIBAQDv9O8kboz6WzN6Xw5UC7MWpi2jZg1bTs/uKcfz +biAEC96iJQ33YSkYi6QzV4jSaackU99vGkHbQIdaBTkudz+FK5XqH0auImB2xxcR +Xu9G2j2fhzESchVTtOnotVgjiuv18SLZ/GQoSIccs0QxcisPiTa5Ij9pl8xVoS6J +sxfqAe15hASqLh+9Ula3+Orb1kCkqK0UwU0nM9nfUH88BKvUwQIMA7kipTA8jJog +MJOlYPQUGxkltlim8Vip//P336E7CWT6fWbfo62US6IEu6HcC6T8u8jcLjIKsmjJ +YJyqrepZqAVMPlv2Z+mNhxRR0ct6blfjJSrEZEtxBRn98kZ1AoIBAQDPQJ1z7Mfy +AOfjSO6Dlfr7V9SWmGvexosH0gu6H8KO+n1/ZPH5fHGt7ORubUDhkNI/fqZK0Hls +Q9Jwgq1QI9UwMTogF8DgmZ6L6jiXhUScIk0BFhUxOBoplugaI0jdTW350D2quFUJ +LjYo+VcRapTfXXVehHSjbUh3nmTWj0WboA+//7xq8q9KHPb1Sbiwjf7N1iYD5R8p +PaaG0DMET+l90bxI+QVX1enwjZGcFjo8VI+qXGGkpB/1zK5yWm29ZWypLw8TZreM +7rLUdBY1/m7MB54zOaJ2jSsxLQSXIVSGPI1ugkmFr6OxeuLdcCLN4yca3+HYHewa +w3GCBP3kfYMdAoIBAAxG0slhYpMYgWy8WkZQhuwcum8GtJ48TQUZXCKHOtoaJVzU +Wn+SmACqfE8oJlblkuiX5fGQPVhTV9lyNPe8oCJXFYdx7DLSjW7mRrbbzZApcEeu +KgOQlKjAs8r1JDpFTEc7/BV9BT7OXyNHxLBm7+8OjR8xsl7bplenNHNVF18glB7I +c1ilnXgZM1icQp/WuV3zR0+tiB3+WCJFwwy2DHiJG2qz8g/ktbATXXtSIOuwJyy0 +Kjg0uRppdKjV8Ix5A426sFDkg5PjkujoabSmSOSyL9HCZcdmEadcc2ICMGHHHhtS +Lls1QY08ycU06QQ6oJd198cmSqbbnsR8h1TnxVUCggEBAI2zF/QSiAImLGVxj+HX +wWnneyobvGTsSlJmgi4XWOZ4zSU011xEgVTxCp2VhS6z3YwcA4ZTUzF6jX7vWZ/Z +YAE7JwqaMv1dCtGOqnKuY2J88Tk05/hm6zxUOQzl4wOr1O1gO0lmDn3gYpdRIv59 +aJvvQjgFR9oU9d8TJM6t1mG45gvXxfM5Si/Z7d93MBdGflgteoBfPxbrV9gEsVzZ +ZkLoC1u5JrYPQ4t8v3mAmQB2sGNCFmCC9ncQIpV8zlsX5VsnGZ+iMwzghtRLKoRw +GUDWVIuhdDqp+kX9CY5q82d0Lx7HZY1JsRm/cy0DZkhubmYpfDhO/QavagQDdbOr +POECggEAXOliqX4yFvy6USXihHVM44s63gK+yH0+0iRppqoB3+E5tDyhvvvBMPLZ +7EBkhd7ILTDXbc0c8nSl8I/556YSlIaOB4Xbf4UQbsmD4fNGEnNWFbCzcEWYOjpQ +5QyXjIzK/k8eg22OZlC3XNjGHgb/mA5f+v2enGQNuy7WRTl1mKYZB2h/2p6xy+jV +CGhd4btB2bOu+1XR/B2KFvI5NdtPPti05LmsYgsU00yYJfQkpc7VvOSH5Jyy3eZL +L9xTAy7NWBQ3LGdIpX+V1jcn3SzVits0m6hOUCtJLT1snMXAKFweTvWAQynuGomc +VPf88ITMTOBjOH6YC8jKd/n2lVWLjw== +-----END PRIVATE KEY----- diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java index a2fa46130076..a95677d0202f 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java @@ -406,6 +406,10 @@ public class PackageInstallerActivity extends AlertActivity { mOk = mAlert.getButton(DialogInterface.BUTTON_POSITIVE); mOk.setEnabled(false); + + if (!mOk.isInTouchMode()) { + mAlert.getButton(DialogInterface.BUTTON_NEGATIVE).requestFocus(); + } } /** diff --git a/packages/SettingsLib/SearchWidget/res/values-es-rUS/strings.xml b/packages/SettingsLib/SearchWidget/res/values-es-rUS/strings.xml index ed549db3c113..9b735fece386 100644 --- a/packages/SettingsLib/SearchWidget/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-es-rUS/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"Buscar en la configuración"</string> + <string name="search_menu" msgid="1914043873178389845">"Buscar configuraciones"</string> </resources> diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml index 88f996a4daca..944294baf1d0 100644 --- a/packages/SettingsLib/res/values-af/strings.xml +++ b/packages/SettingsLib/res/values-af/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-adres en -poort"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skandeer QR-kode"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Bind toestel oor Wi-Fi saam deur \'n QR-kode te skandeer"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Koppel asseblief aan \'n Wi-Fi-netwerk"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Kortpad na foutverslag"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Wys \'n knoppie in die kragkieslys om \'n foutverslag te doen"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (rooi-groen)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (blou-geel)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Kleurregstelling"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Kleurregstelling stel jou in staat om te verstel hoe kleure op jou toestel vertoon word"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Geneutraliseer deur <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Ongeveer <xliff:g id="TIME_REMAINING">%1$s</xliff:g> oor"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Sal waarskynlik hou tot omtrent <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Sal waarskynlik hou tot omtrent <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Tot <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Battery kan teen <xliff:g id="TIME">%1$s</xliff:g> afloop"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Minder as <xliff:g id="THRESHOLD">%1$s</xliff:g> oor"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Minder as <xliff:g id="THRESHOLD">%1$s</xliff:g> oor (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Meer as <xliff:g id="TIME_REMAINING">%1$s</xliff:g> oor (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Foonluidspreker"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Kan nie koppel nie. Skakel toestel af en weer aan"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Bedrade oudiotoestel"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Hulp en terugvoer"</string> + <string name="storage_category" msgid="2287342585424631813">"Berging"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Gedeelde data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Bekyk en wysig gedeelde data"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Gedeelde data-ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Verval op <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Programme wat data deel"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Geen beskrywing is deur die program voorsien nie."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Huurkontrak verval op <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Vee gedeelde data uit?"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Is jy seker jy wil hierdie gedeelde data uitvee?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Gebruikers het hul eie programme en inhoud"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Jy kan toegang tot programme en inhoud op jou rekening beperk"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Gebruiker"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Beperkte profiel"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Voeg nuwe gebruiker by?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Jy kan hierdie toestel met ander mense deel deur bykomende gebruikers te skep. Elke gebruiker het sy eie spasie wat hulle kan pasmaak met programme, muurpapier en so meer. Gebruikers kan ook toestelinstellings wat almal raak, soos Wi-Fi, aanpas.\n\nWanneer jy \'n nuwe gebruiker byvoeg, moet daardie persoon hul eie spasie opstel.\n\nEnige gebruiker kan programme vir alle ander gebruikers opdateer. Toeganklikheidinstellings en -dienste sal dalk nie na die nuwe gebruiker oorgedra word nie."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Wanneer jy \'n nuwe gebruiker byvoeg, moet daardie persoon hul spasie opstel.\n\nEnige gebruiker kan programme vir al die ander gebruikers opdateer."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Moet die gebruiker nou opgestel word?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Maak seker die persoon is beskikbaar om die toestel te vat en hul spasie op te stel"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Stel profiel nou op?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Stel nou op"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Nie nou nie"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Voeg by"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Nuwe gebruiker"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Nuwe profiel"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Gebruikerinligting"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profiel-inligting"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Voordat jy \'n beperkte profiel kan skep, moet jy \'n skermslot opstel om jou programme en persoonlike data te beskerm."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Stel slot op"</string> </resources> diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml index a402901386ca..0a7b0453abd5 100644 --- a/packages/SettingsLib/res/values-am/strings.xml +++ b/packages/SettingsLib/res/values-am/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"የአይፒ አድራሻ እና ወደብ"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR ኮድን ይቃኙ"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"የQR ኮድ በመጠቀም መሣሪያን በመቃኘት በWi-Fi ላይ ያጣምሩ"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"እባክዎ ከWi-Fi አውታረ መረብ ጋር ያገናኙ"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb፣ ማረም፣ ግንባታ"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"የሳንካ ሪፖርት አቋራጭ"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"የሳንካ ሪፖርት ለመውሰድ በሃይል ምናሌ ውስጥ አዝራር አሳይ"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"ፕሮታኖማሊ (ቀይ-አረንጓዴ)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ትራይታኖማሊ (ሰማያዊ-ቢጫ)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"የቀለም ማስተካከያ"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"ቀለም ማስተካከያ ቀለሞች በመሣሪያዎ ላይ እንዴት እንደሚታዩ እንዲያስተካክሉ ያስችሉዎታል"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"በ<xliff:g id="TITLE">%1$s</xliff:g> ተሽሯል"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ገደማ ቀርቷል"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"እስከ <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) ገደማ ድረስ መቆየት አለበት"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"እስከ <xliff:g id="TIME">%1$s</xliff:g> ገደማ መቆየት አለበት"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"እስከ <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"ባትሪ እስከ <xliff:g id="TIME">%1$s</xliff:g> ድረስ ሊያልቅ ይችላል"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"ከ<xliff:g id="THRESHOLD">%1$s</xliff:g> ያነሰ ይቀራል"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"ከ<xliff:g id="THRESHOLD">%1$s</xliff:g> ያነሰ ይቀራል (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"ከ<xliff:g id="TIME_REMAINING">%1$s</xliff:g> በላይ ይቀራል (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"የስልክ ድምጽ ማጉያ"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"መገናኘት ላይ ችግር። መሳሪያውን ያጥፉት እና እንደገና ያብሩት"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ባለገመድ የኦዲዮ መሣሪያ"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"እገዛ እና ግብረመልስ"</string> + <string name="storage_category" msgid="2287342585424631813">"ማከማቻ"</string> + <string name="shared_data_title" msgid="1017034836800864953">"የተጋራ ውሂብ"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"የተጋራ ውሂብን ይመልከቱ እና ያሻሽሉ"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"የተጋራ ውሂብ መታወቂያ፦ <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"በ<xliff:g id="DATE">%s</xliff:g> ላይ የአገልግሎት ጊዜው ያበቃል"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"ውሂብ የሚጋሩ መተግበሪያዎች"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"በመተግበሪያው ምንም ዝርዝር መረጃ አልተሰጠም።"</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"ኪራይ በ<xliff:g id="DATE">%s</xliff:g> ላይ አገልግሎት ጊዜው ያበቃል"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"የተጋራ ውሂብን ሰርዝ"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"ይህን የተጋራ ውሂብ ለመሰረዝ እንደሚፈልጉ እርግጠኛ ነዎት?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"ተጠቃሚዎች የራሳቸው መተግበሪያዎች እና ይዘት አሏቸው"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"ከመለያዎ ላይ የመተግበሪያዎች መዳረሻን እና ይዘትን መገደብ ይችላሉ"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"ተጠቃሚ"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"የተገደበ መገለጫ"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"አዲስ ተጠቃሚ ይታከል?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"ተጨማሪ ተጠቃሚዎችን በመፍጠር ይህን መሣሪያ ለሌሎች ሰዎች ማጋራት ይችላሉ። እያንዳንዱ ተጠቃሚ በራሱ መተግበሪያዎች፣ ልጣፍ እና በመሳሰሉ ነገሮች ሊያበጀው የሚችል የራሱ ቦታ አለው። ተጠቃሚዎችም እንዲሁ እንደ Wi‑Fi ያሉ በሁሉም ሰው ላይ ተጽዕኖ ሊኖራቸው የሚችሉ የመሣሪያ ቅንብሮችን ማስተካከል ይችላሉ። \n\nእርስዎ አንድ አዲስ ተጠቃሚ ሲያክሉ ያ ሰው የራሱ ቦታ ማዘጋጀት አለበት።\n\nማንኛውም ተጠቃሚ መተግበሪያዎችን ለሌሎች ተጠቃሚዎች ሁሉ ሊያዘምኑ ይችላሉ።"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"እርስዎ አንድ አዲስ ተጠቃሚ ሲያክሉ ያ ሰው የራሱ ቦታ ማዘጋጀት አለበት።\n\nማንኛውም ተጠቃሚ መተግበሪያዎችን ለሌሎች ተጠቃሚዎች ሁሉ ሊያዘምን ይችላል።"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"ተጠቃሚ አሁን ይዋቀር?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"ግለሰቡ መሣሪያውን ወስደው ቦታቸውን ለማዋቀር እንደሚገኙ ያረጋግጡ"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"መገለጫ አሁን ይዋቀር?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"አሁን ያዋቅሩ"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"አሁን አይደለም"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"አክል"</string> + <string name="user_new_user_name" msgid="60979820612818840">"አዲስ ተጠቃሚ"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"አዲስ መገለጫ"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"የተጠቃሚ መረጃ"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"የመገለጫ መረጃ"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"የተገደበ መገለጫ መፍጠር ከመቻልዎ በፊት መተግበሪያዎችዎን እና የግል ውሂብዎን ለመጠበቅ ቁልፍ ማያ ገጽ ማዋቀር አለብዎት።"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"ቁልፍ አዘጋጅ"</string> </resources> diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index 7241c300d342..03dbfb0b7294 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -418,8 +418,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"غطش الأحمر (الأحمر والأخضر)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"غمش الأزرق (الأزرق والأصفر)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"تصحيح الألوان"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"تسمح لك ميزة تصحيح الألوان بتعديل كيفية عرض الألوان على جهازك."</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"تم الاستبدال بـ <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"يتبقى <xliff:g id="TIME_REMAINING">%1$s</xliff:g> تقريبًا"</string> @@ -524,10 +523,18 @@ <skip /> <!-- no translation found for shared_data_summary (5516326713822885652) --> <skip /> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <!-- no translation found for blob_id_text (8680078988996308061) --> <skip /> <!-- no translation found for blob_expires_text (7882727111491739331) --> <skip /> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <!-- no translation found for accessor_info_title (8289823651512477787) --> <skip /> <!-- no translation found for accessor_no_description_text (7510967452505591456) --> @@ -538,4 +545,23 @@ <skip /> <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> <skip /> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"المستخدمون لديهم تطبيقات ومحتوى خاص بهم"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"يمكنك تقييد الدخول إلى التطبيقات والمحتوى من حسابك"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"المستخدم"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"ملف شخصي محظور"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"هل تريد إضافة مستخدم جديد؟"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"يمكنك مشاركة هذا الجهاز مع أشخاص آخرين من خلال إنشاء حسابات لمستخدمين إضافيين. وسيحصل كل مستخدم على مساحته الخاصة التي يمكنه تخصيصها بتطبيقاته وخلفياته التي يريدها وغيرها. كما يمكن للمستخدمين أيضًا ضبط إعدادات الجهاز مثل Wi-Fi والتي تؤثر في جميع المستخدمين.\n\nعند إضافة مستخدم جديد، عليه إعداد مساحته.\n\nيمكن لأي مستخدم تحديث التطبيقات لجميع المستخدمين الآخرين. وقد لا يتم نقل إعدادات وخدمات \"سهولة الاستخدام\" إلى المستخدم الجديد."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"عند إضافة مستخدم جديد، عليه إعداد مساحته.\n\nويمكن لأي مستخدم تحديث التطبيقات لجميع المستخدمين الآخرين."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"هل تريد إعداد المستخدم الآن؟"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"يُرجى التأكّد من أن الشخص يمكنه استخدام الجهاز الآن وإعداد مساحته."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"هل ترغب في إعداد ملف شخصي الآن؟"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"الإعداد الآن"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"ليس الآن"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"إضافة"</string> + <string name="user_new_user_name" msgid="60979820612818840">"مستخدم جديد"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"ملف شخصي جديد"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"معلومات المستخدم"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"معلومات الملف الشخصي"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"قبل أن تتمكن من إنشاء ملف شخصي مقيد، يلزمك إعداد تأمين للشاشة لحماية تطبيقاتك وبياناتك الشخصية."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"تعيين التأمين"</string> </resources> diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml index a2123d3022cb..06df8f7e48ab 100644 --- a/packages/SettingsLib/res/values-as/strings.xml +++ b/packages/SettingsLib/res/values-as/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"আইপি ঠিকনা & প’ৰ্ট"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"কিউআৰ ক’ড স্কেন কৰক"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"এটা কিউআৰ ক’ড স্কেন কৰি ৱাই-ফাইৰে ডিভাইচ পেয়াৰ কৰক"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"অনুগ্ৰহ কৰি এটা ৱাই-ফাই নেটৱর্কলৈ সংযোগ কৰক"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, ডিবাগ, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"বাগ ৰিপৰ্টৰ শ্ৱৰ্টকাট"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"পাৱাৰ মেনুত বাগ প্ৰতিবেদন গ্ৰহণ কৰিবলৈ এটা বুটাম দেখুৱাওক"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"প্ৰ’টানোমালি (ৰঙা-সেউজীয়া)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ট্ৰাইটান\'মেলী (নীলা-হালধীয়া)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ৰং শুধৰণী"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"ৰং শুধৰণি সুবিধাটোৰে আপোনাক আপোনাৰ ডিভাইচত ৰংবোৰ কেনেকৈ প্ৰদর্শন কৰা হয় সেয়া মিলাবলৈ দিয়ে"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g>ৰ দ্বাৰা অগ্ৰাহ্য কৰা হৈছে"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"প্রায় <xliff:g id="TIME_REMAINING">%1$s</xliff:g> বাকী আছে"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"বেটাৰি আনুমানিকভাৱে <xliff:g id="TIME">%1$s</xliff:g> লৈকে চলিব (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"বেটাৰি আনুমানিকভাৱে <xliff:g id="TIME">%1$s</xliff:g> লৈকে চলিব"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> পৰ্যন্ত"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g>ৰ ভিতৰত বেটাৰী শেষ হ\'ব পাৰে"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g>তকৈও কম সময় বাকী আছে"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g>তকৈও কম সময় বাকী আছে (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>তকৈও বেছি সময় বাকী আছে (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ফ’নৰ স্পীকাৰ"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"সংযোগ হোৱাত সমস্যা হৈছে। ডিভাইচটো অফ কৰি পুনৰ অন কৰক"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"তাঁৰযুক্ত অডিঅ’ ডিভাইচ"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"সহায় আৰু মতামত"</string> + <string name="storage_category" msgid="2287342585424631813">"ষ্ট’ৰেজ"</string> + <string name="shared_data_title" msgid="1017034836800864953">"শ্বেয়াৰ কৰা ডেটা"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"শ্বেয়াৰ কৰা ডেটা চাওক আৰু সংশোধন কৰক"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"শ্বেয়াৰ কৰা ডেটাৰ আইডি: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"<xliff:g id="DATE">%s</xliff:g>ত ম্যাদ উকলিব"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"ডেটা শ্বেয়াৰ কৰা এপ্সমূহ"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"এপ্টোৱে কোনো বিৱৰণ দিয়া নাই।"</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"<xliff:g id="DATE">%s</xliff:g>ত লীজৰ ম্যাদ উকলিব"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"শ্বেয়াৰ কৰা ডেটা মচক"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"আপুনি এই শ্বেয়াৰ কৰা ডেটাখিনি মচিব বিচৰাটো নিশ্চিতনে?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"ব্যৱহাৰকাৰীসকলৰ নিজৰ এপ্ আৰু সমল থাকে"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"আপুনি নিজৰ একাউণ্টৰ পৰা এপ্ আৰু সমল চোৱা সুবিধাটো সীমাবদ্ধ কৰিব পাৰে"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"ব্যৱহাৰকাৰী"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"সীমিত প্ৰ\'ফাইল"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"নতুন ব্যৱহাৰকাৰী যোগ কৰিবনে?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"আপুনি অতিৰিক্ত ব্য়ৱহাৰকাৰীক যোগ কৰি এই ডিভাইচটো অন্য় ব্য়ক্তিৰ সৈতে শ্বেয়াৰ কৰিব পাৰে। প্ৰতিজন ব্য়ৱহাৰকাৰীৰ বাবে নিজাকৈ ঠাই আছে যাক তেওঁলোকে এপ্, ৱালপেপাৰ আৰু অন্য়ান্য় বস্তুৰ বাবে নিজৰ উপযোগিতা অনুযায়ী ব্য়ৱহাৰ কৰিব পাৰে। ব্য়ৱহাৰকাৰীসকলে সকলোকে প্ৰভাৱান্বিত কৰা ৱাই-ফাইৰ নিচিনা ডিভাইচৰ ছেটিংসমূহ সাল-সলনি কৰিবও পাৰে।\n\nআপুনি যেতিয়া কোনো নতুন ব্য়ৱহাৰকাৰীক যোগ কৰে সেই ব্য়ক্তিজনে নিজেই নিজৰ বাবে ঠাই ছেট আপ কৰিব লাগিব।\n\nসকলো ব্য়ৱহাৰকাৰীএ অন্য় ব্য়ৱহাৰকাৰীৰ বাবে এপসমূহ আপডে’ট কৰিব পাৰে। সাধ্য় সুবিধাসমূহৰ ছেটিং আৰু সেৱাসমূহ নতুন ব্য়ৱহাৰকাৰীলৈ স্থানান্তৰ নহ\'বও পাৰে।"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"আপুনি যেতিয়া এজন নতুন ব্যৱহাৰকাৰী যোগ কৰে, তেওঁ নিজৰ ঠাই ছেট আপ কৰা প্ৰয়োজন।\n\nযিকোনো ব্যৱহাৰকাৰীয়ে সকলো ব্যৱহাৰকাৰীৰ বাবে এপ্ আপডেইট কৰিব পাৰে।"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"ব্যৱহাৰকাৰী এতিয়া ছেট আপ কৰিবনে?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"ডিভাইচটো লৈ নিজৰ ঠাই ছেটআপ কৰিবলৈ নতুন ব্যৱহাৰকাৰী উপলব্ধ থকাটো নিশ্চিত কৰক"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"এতিয়া প্ৰ\'ফাইল ছেট আপ কৰিবনে?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"এতিয়াই ছেট আপ কৰক"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"এতিয়া নহয়"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"যোগ কৰক"</string> + <string name="user_new_user_name" msgid="60979820612818840">"নতুন ব্যৱহাৰকাৰী"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"নতুন প্ৰ\'ফাইল"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"ব্যৱহাৰকাৰীৰ তথ্য"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"প্ৰ\'ফাইলৰ তথ্য"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"আপুনি সীমিত প্ৰ\'ফাইল এটা সৃষ্টি কৰাৰ আগেয়ে, আপোনাৰ ব্যক্তিগত ডেটা আৰু এপবিলাকক সুৰক্ষিত কৰিবলৈ স্ক্ৰীণ লক এটা নিৰ্ধাৰণ কৰিব লাগিব।"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"লক ছেট কৰক"</string> </resources> diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml index 53fe7a8b6de4..56f364026b86 100644 --- a/packages/SettingsLib/res/values-az/strings.xml +++ b/packages/SettingsLib/res/values-az/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP ünvanı və Port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR kodu skanlayın"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR Kodu skanlamaqla cihazı Wi‑Fi vasitəsilə cütləşdirin"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Wi-Fi şəbəkəsinə qoşulun"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Baq raportu qısa yolu"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Baq raportunu götürmək üçün qidalanma menyusunda düyməni göstərin"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaliya (qırmızı-yaşıl)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaliya (göy-sarı)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Rəng düzəlişi"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Rəng korreksiyası sizə rənglərin cihazınızda necə göstərilməsini tənzimləmək imkanı verir"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> tərəfindən qəbul edilmir"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Təxminən <xliff:g id="TIME_REMAINING">%1$s</xliff:g> qalıb"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Təxminən <xliff:g id="TIME">%1$s</xliff:g> olana qədər davam edəcək (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Təxminən <xliff:g id="TIME">%1$s</xliff:g> olana qədər davam edəcək"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> olana qədər"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Batareya <xliff:g id="TIME">%1$s</xliff:g> radələrinə qədər boşala bilər"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Qalan vaxt <xliff:g id="THRESHOLD">%1$s</xliff:g> və daha azdır"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Qalan vaxt <xliff:g id="THRESHOLD">%1$s</xliff:g> və daha azdır (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Qalan vaxt <xliff:g id="TIME_REMAINING">%1$s</xliff:g> və daha çoxdur (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefon dinamiki"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Qoşulmaqla bağlı problem. Cihazı deaktiv edin, sonra yenidən aktiv edin"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Simli audio cihaz"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Yardım və rəy"</string> + <string name="storage_category" msgid="2287342585424631813">"Yaddaş"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Paylaşılan data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Paylaşılan dataya baxın və ona dəyişiklik edin"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Paylaşılan data ID\'si: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"<xliff:g id="DATE">%s</xliff:g> tarixində müddəti bitir"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Data paylaşan tətbiqlər"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Tətbiq tərəfindən heç bir təsvir təmin edilməyib."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"İcarə müddəti <xliff:g id="DATE">%s</xliff:g> tarixində bitir"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Paylaşılan datanı silin"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Bu paylaşılan datanı silmək istədiyinizə əminsiniz?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"İstifadəçilərin öz tətbiqləri və məzmunları var"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Siz hesabınızdan tətbiq və kontentə girişi məhdudlaşdıra bilərsiniz."</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"İstifadəçi"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Məhdudlaşdırılmış profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Yeni istifadəçi əlavə edilsin?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Əlavə istifadəçilər yaratmaqla bu cihazı digərləri ilə paylaşa bilərsiniz. Hər bir istifadəçinin tətbiq, divar kağızı və daha çoxu ilə fərdiləşdirə biləcəyi fərdi məkanları olacaq. İstifadəçilər hər kəsə təsir edən Wi‑Fi kimi cihaz ayarlarını da tənzimləyə biləcək.\n\nYeni istifadəçi əlavə etdiyiniz zaman həmin istifadəçi öz məkanını ayarlamalıdır.\n\nİstənilən istifadəçi tətbiqləri digər bütün istifadəçilər üçün güncəlləyə bilər. Əlçatımlılıq ayarları və xidmətlər yeni istifadəçiyə transfer edilməyə bilər."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Yeni istifadəçi əlavə etdiyiniz zaman həmin şəxs öz yerini quraşdırmalıdır.\n\nİstənilən istifadəçi bütün digər istifadəçilərdən olan tətbiqləri güncəlləşdirə bilər."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"İstifadəçi indi ayarlansın?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Şəxsin cihazı götürə bilməsinə və yerini quraşdıra bilməsinə əmin olun"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil indi quraşdırılsın?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"İndi ayarla"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"İndi yox"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Əlavə edin"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Yeni istifadəçi"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Yeni profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"İstifadəçi infosu"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profil info"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Məhdudlaşdırılmış profil yaratmadan öncə, Siz tətbiqlərinizi və şəxsi datanızı qorumaq üçün ekran kilidi quraşdırmalısınız."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Kilid ayarlayın"</string> </resources> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml index ac0c2543313c..e81dbc3b5a66 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP adresa i port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skeniraj QR kôd"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Uparite uređaj pomoću Wi‑Fi mreže ili tako što ćete skenirati QR kôd"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Povežite se na Wi-Fi mrežu"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, otklanjanje grešaka, programer"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Prečica za izveštaj o greškama"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Prikaži dugme u meniju napajanja za pravljenje izveštaja o greškama"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (crveno-zeleno)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (plavo-žuto)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekcija boja"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Korekcija boja vam omogućava da prilagodite način na koji se boje prikazuju na uređaju"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Zamenjuje ga <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>–<xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Preostalo je oko <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Trajaće približno do <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Trajaće približno do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Baterija će se možda isprazniti do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Preostalo je više od <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -513,26 +510,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Zvučnik telefona"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem pri povezivanju. Isključite uređaj, pa ga ponovo uključite"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žičani audio uređaj"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Pomoć i povratne informacije"</string> + <string name="storage_category" msgid="2287342585424631813">"Memorijski prostor"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Deljeni podaci"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Pregledajte i izmenite deljene podatke"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID deljenih podataka: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Ističe: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplikacije koje dele podatke"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"U aplikaciji nije naveden nijedan opis."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Iznajmljivanje ističe: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Izbriši deljene podatke"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Želite li stvarno da izbrišete ove deljene podatke?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Korisnici imaju sopstvene aplikacije i sadržaj"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Možete da ograničite pristup na aplikacije i sadržaj sa naloga"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Korisnik"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Ograničeni profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Dodajete novog korisnika?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Ovaj uređaj možete da delite sa drugim ljudima ako napravite još korisnika. Svaki korisnik ima sopstveni prostor, koji može da prilagođava pomoću aplikacija, pozadine i slično. Korisnici mogu da prilagođavaju i podešavanja uređaja koja utiču na svakoga, poput Wi‑Fi-ja.\n\nKada dodate novog korisnika, ta osoba treba da podesi sopstveni prostor.\n\nSvaki korisnik može da ažurira aplikacije za sve ostale korisnike. Podešavanja i usluge pristupačnosti ne mogu da se prenose na novog korisnika."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Kada dodate novog korisnika, ta osoba treba da podesi sopstveni prostor.\n\nSvaki korisnik može da ažurira aplikacije za sve ostale korisnike."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Podešavate korisnika?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Ta osoba treba da uzme uređaj i podesi svoj prostor"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Želite li da odmah podesite profil?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Podesi"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ne sada"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Dodavanje"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Novi korisnik"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Novi profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Podaci o korisniku"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Podaci o profilu"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Da biste mogli da napravite ograničeni profil, treba da podesite zaključavanje ekrana da biste zaštitili aplikacije i lične podatke."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Podesi zaključavanje"</string> </resources> diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index 49584ebbf409..01f3eed69d15 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-адрас і порт"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Сканіраваць QR-код"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Спалучыць прыладу праз Wi‑Fi шляхам сканіравання QR-кода"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Падключыцеся да сеткі Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, адладка, распрацоўшчык"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Ярлык для справаздачы пра памылкі"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Паказаць кнопку для прыняцця справаздачы пра памылку ў меню сілкавання"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Пратанамалія (чырвоны-зялёны)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Трытанамалія (сіні-жоўты)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Карэкцыя колеру"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Карэкцыя колеру дазволіць вам наладзіць адлюстраванне колераў на экране прылады"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Перавызначаны <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Зараду хопіць прыблізна на <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Зараду (<xliff:g id="LEVEL">%2$s</xliff:g>) хопіць прыблізна да <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Зараду хопіць прыблізна да <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Да <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Акумулятар разрадзіцца ў <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Засталося менш за <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Узровень зараду батарэі: <xliff:g id="LEVEL">%2$s</xliff:g> (хопіць менш чым на <xliff:g id="THRESHOLD">%1$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Узровень зараду батарэі: <xliff:g id="LEVEL">%2$s</xliff:g> (хопіць больш чым на <xliff:g id="TIME_REMAINING">%1$s</xliff:g>)"</string> @@ -514,26 +511,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Дынамік тэлефона"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Праблема з падключэннем. Выключыце і зноў уключыце прыладу"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Правадная аўдыяпрылада"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Даведка і водгукі"</string> + <string name="storage_category" msgid="2287342585424631813">"Сховішча"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Абагуленыя даныя"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Прагляд і змяненне абагуленых даных"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Ідэнтыфікатар абагуленых даных: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Тэрмін дзеяння заканчваецца <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Праграмы, якія абагульваюць даныя"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"У праграмы адсутнічае апісанне."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Тэрмін дзеяння арэнды завяршаецца <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Выдаліць абагуленыя даныя"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Сапраўды выдаліць гэтыя абагуленыя даныя?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Карыстальнікі маюць свае ўласныя прыкладанні і змесцiва"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Вы можаце абмяжоўваць доступ да прыкладанняў і змесціва са свайго ўліковага запісу"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Карыстальнік"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Абмежаваны профiль"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Дадаць новага карыстальніка?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Вы можаце адкрыць доступ да гэтай прылады іншым людзям шляхам стварэння дадатковых карыстальнікаў. Кожны карыстальнік мае свой уласны раздзел, на якім ён можа наладзіць свае праграмы, шпалеры і іншае. Карыстальнікі таксама могуць наладжваць параметры прылады, напрыклад Wi-Fi, якія ўплываюць на ўсіх.\n\nКалі вы дадаяце новага карыстальніка, ён павінен наладзіць свой раздзел.\n\nЛюбы карыстальнік можа абнаўляць праграмы для ўсіх астатніх карыстальнікаў. Спецыяльныя магчымасці наладжваюцца асабіста кожным карыстальнікам."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Пасля стварэння профіля яго трэба наладзіць.\n\nЛюбы карыстальнік прылады можа абнаўляць праграмы ўсіх іншых карыстальнікаў."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Наладзіць профіль?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Пераканайцеся, што чалавек мае магчымасць узяць прыладу і наладзіць свой раздзел"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Наладзiць профiль?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Наладзіць"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Не зараз"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Дадаць"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Новы карыстальнік"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Новы профiль"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Інфармацыя карыстальніка"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Звесткi профiлю"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Перш чым вы зможаце стварыць профіль з абмежаваннямi, вам трэба наладзіць блакiроўку экрана для абароны сваiх дадаткаў і асабістай інфармацыі."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Усталёўка блакiроўкi"</string> </resources> diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml index 20145b091e54..6e15f30f0bea 100644 --- a/packages/SettingsLib/res/values-bg/strings.xml +++ b/packages/SettingsLib/res/values-bg/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP адрес и порт"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Сканиране на QR код"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Сдвояване на устройството през Wi‑Fi чрез сканиране на QR код"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Моля, свържете се с Wi-Fi мрежа"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, отстраняване на грешки, програмиране"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Пряк път за сигнал за програмна грешка"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"В менюто за захранване да се показва бутон за подаване на сигнал за програмна грешка"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалия (червено – зелено)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалия (синьо – жълто)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Корекция на цветове"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Корекцията на цветове ви позволява да коригирате това, как цветовете се показват на устройството ви"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Заменено от „<xliff:g id="TITLE">%1$s</xliff:g>“"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Още около <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Следва да издържи приблизително до <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Следва да издържи до около <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"До <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Батерията може да се изтощи до <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Остава/т по-малко от <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Остава/т по-малко от <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Остава/т повече от <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Високоговорител на телефона"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"При свързването възникна проблем. Изключете устройството и го включете отново"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Аудиоустройство с кабел"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Помощ и отзиви"</string> + <string name="storage_category" msgid="2287342585424631813">"Хранилище"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Споделени данни"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Преглед и промяна на споделените данни"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Идентификатор на споделените данни: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Изтича на <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Приложения, споделящи данни"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Няма описание, предоставено от приложението."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Споделянето приключва на <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Изтриване на споделените данни"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Наистина ли искате да изтриете тези споделени данни?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Потребителите имат свои собствени приложения и съдържание"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Можете да ограничите достъпа до приложенията и съдържанието от профила си"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Потребител"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Ограничен потр. профил"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Да се добави ли нов потреб.?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Можете да споделите това устройство с други хора, като създадете допълнителни потребители. Всеки от тях има собствено работно пространство, което може да персонализира с приложения, тапет и др. Потребителите могат също да коригират настройки на устройството, които засягат всички – например за Wi‑Fi.\n\nКогато добавите нов потребител, той трябва да настрои работното си пространство.\n\nВсеки потребител може да актуализира приложенията за всички останали потребители. Настройките и услугите за достъпност може да не се прехвърлят за новия потребител."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Когато добавите нов потребител, той трябва да настрои работното си пространство.\n\nВсеки потребител може да актуализира приложенията за всички останали потребители."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Настройване на потребителя?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Уверете се, че човекът има възможност да вземе устройството и да настрои работното си пространство."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Ще настроите ли потребителския профил сега?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Настройване сега"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Не сега"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Добавяне"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Нов потребител"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Нов потребителски профил"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Данни за потребителя"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Инф. за потр. профил"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Преди да можете да създадете потребителски профил с ограничена функционалност, трябва да настроите заключения екран, за да защитите приложенията и личните си данни."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Задаване на заключване"</string> </resources> diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index a6f11779b9cc..8805c210a8a1 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -418,8 +418,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"প্রোটানোম্যালি (লাল-সবুজ)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ট্রিট্যানোম্যালি (নীল-হলুদ)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"রঙ সংশোধন"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"ডিভাইসে রঙগুলি কেমনভাবে দেখানো হবে তা অ্যাডজাস্ট করতে \'রঙ সংশোধন করুন\' বিকল্প ব্যবহার করা যেতে পারে"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> এর দ্বারা ওভাররাইড করা হয়েছে"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"আর আনুমানিক <xliff:g id="TIME_REMAINING">%1$s</xliff:g> চলবে"</string> @@ -520,10 +519,18 @@ <skip /> <!-- no translation found for shared_data_summary (5516326713822885652) --> <skip /> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <!-- no translation found for blob_id_text (8680078988996308061) --> <skip /> <!-- no translation found for blob_expires_text (7882727111491739331) --> <skip /> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <!-- no translation found for accessor_info_title (8289823651512477787) --> <skip /> <!-- no translation found for accessor_no_description_text (7510967452505591456) --> @@ -534,4 +541,23 @@ <skip /> <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> <skip /> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"ব্যবহারকারীদের তাঁদের নিজস্ব অ্যাপ্লিকেশন এবং কন্টেন্ট আছে"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"আপনি আপনার অ্যাকাউন্ট থেকে অ্যাপ্লিকেশন এবং কন্টেন্ট অ্যাক্সেস সীমাবদ্ধ করতে পারেন"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"ব্যবহারকারী"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"সীমাবদ্ধ প্রোফাইল"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"নতুন ব্যবহারকারী জুড়বেন?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"আপনি একাধিক ব্যবহারকারীর আইডি তৈরি করে অন্যদের সাথে এই ডিভাইসটি শেয়ার করতে পারেন। ডিভাইসের স্টোরেজে প্রত্যেক ব্যবহারকারী তার নিজস্ব জায়গা পাবেন যা তিনি অ্যাপ, ওয়ালপেপার এবং আরও অনেক কিছু দিয়ে কাস্টমাইজ করতে পারেন। ওয়াই-ফাই এর মতো ডিভাইস সেটিংস, যেগুলি সকলের ক্ষেত্রে প্রযোজ্য হয়, সেগুলি ব্যবহারকারীরা পরিবর্তন করতে পারবেন।\n\nনতুন ব্যবহারকারীর আইডি যোগ করলে সেই ব্যক্তিকে স্টোরেজে তার নিজের জায়গা সেট-আপ করতে হবে।\n\nঅন্যান্য ব্যবহারকারীদের হয়ে যে কোনও ব্যবহারকারী অ্যাপ আপডেট করতে পারবেন। তবে ব্যবহারযোগ্যতার সেটিংস এবং পরিষেবা নতুন ব্যবহারকারীর ক্ষেত্রে প্রযোজ্য নাও হতে পারে।"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"আপনি একজন নতুন ব্যবহারকারী জুড়লে তাকে তার জায়গা সেট-আপ করে নিতে হবে।\n\nযেকোনো ব্যবহারকারী অন্য সব ব্যবহারকারীর জন্য অ্যাপ্লিকেশান আপডেট করতে পারবেন।"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"এখন ব্যবহারকারী সেট-আপ করবেন?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"নিশ্চিত করুন, যে ব্যক্তিটি ডিভাইসটি নেওয়ার জন্য এবং তার জায়গা সেট-আপ করার জন্য উপলব্ধ আছেন"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"এখনই প্রোফাইল সেট-আপ করবেন?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"এখনই সেট-আপ করুন"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"এখনই নয়"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"যোগ করুন"</string> + <string name="user_new_user_name" msgid="60979820612818840">"নতুন ব্যবহারকারী"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"নতুন প্রোফাইল"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"ব্যবহারকারী তথ্য"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"প্রোফাইল তথ্য"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"আপনি একটি সীমাবদ্ধযুক্ত প্রোফাইল তৈরি করার আগে, আপনাকে আপনার অ্যাপ্লিকেশন এবং ব্যক্তিগত ডেটা সুরক্ষিত করার জন্য একটি স্ক্রিন লক সেট-আপ করতে হবে।"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"লক সেট করুন"</string> </resources> diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml index 5a317ee319d5..188c2f5fe3ad 100644 --- a/packages/SettingsLib/res/values-bs/strings.xml +++ b/packages/SettingsLib/res/values-bs/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP adresa i priključak"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skenirajte QR kôd"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Uparite uređaj putem WiFi-ja skeniranjem QR koda"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Povežite se na WiFi mrežu"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, otklanjanje grešaka, programer"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Prečica za izvještaj o greškama"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Prikaz dugmeta za prijavu grešaka u meniju napajanja"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (crveno-zeleno)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (plavo-žuto)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Ispravka boje"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Korekcija boje vam dozvoljava da prilagodite način prikazivanja boja na uređaju"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Zamjenjuje <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Preostalo je još oko <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Trebala bi trajati do otprilike <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Trebala bi trajati otprilike do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Baterija bi se mogla isprazniti do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Preostalo je više od <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -513,26 +510,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Zvučnik telefona"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Došlo je do problema prilikom povezivanja. Isključite, pa ponovo uključite uređaj"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žičani audio uređaj"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Pomoć i povratne informacije"</string> + <string name="storage_category" msgid="2287342585424631813">"Pohrana"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Dijeljeni podaci"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Prikaz i izmjena dijeljenih podataka"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID dijeljenih podataka: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Ističe dana <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplikacije koje dijele podatke"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"U aplikaciji nije naveden opis."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Najam ističe dana <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Izbriši dijeljene podatke"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Jeste li sigurni da želite izbrisati ove dijeljene podatke?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Korisnici imaju sopstvene aplikacije i sadržaj"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Možete ograničiti pristup aplikacijama i sadržaju sa svog računa"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Korisnik"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Ograničeni profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Dodati novog korisnika?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Za dijeljenje ovog uređaja s drugima možete napraviti dodatne korisnike. Svaki korisnik ima svoj prostor koji može prilagoditi pomoću aplikacija, pozadinske slike i slično. Korisnici također mogu prilagoditi postavke uređaja koje utiču na sve ostale korisnike, kao što je WiFi.\n\nKada dodate novog korisnika, ta osoba treba postaviti svoj prostor.\n\nSvaki korisnik može ažurirati aplikacije za sve ostale korisnike. Postavke i usluge pristupačnosti možda se neće prenijeti na novog korisnika."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Kada dodate novog korisnika, ta osoba treba postaviti svoj prostor. \n\n Svaki korisnik može ažurirati aplikacije za sve ostale korisnike."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Postaviti korisnika sada?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Provjerite može li osoba uzeti uređaj i postaviti svoj prostor"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Postaviti profil sada?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Postavi"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ne sada"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Dodaj"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Novi korisnik"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Novi profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Podaci o korisniku"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Podaci o profilu"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Prije nego vam se omogući kreiranje ograničenog profila, morate postaviti zaključavanje ekrana da biste zaštitili svoje aplikacije i lične podatke."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Postaviti zaključavanje"</string> </resources> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index 333f8e98317e..7fadf93a606f 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -169,11 +169,11 @@ <string name="tts_install_data_title" msgid="1829942496472751703">"Instal·la dades de veu"</string> <string name="tts_install_data_summary" msgid="3608874324992243851">"Instal·la les dades de veu necessàries per a la síntesi de veu"</string> <string name="tts_engine_security_warning" msgid="3372432853837988146">"Pot ser que aquest motor de síntesi de parla pugui recopilar tot el text que s\'enunciarà, incloses les dades personals, com ara les contrasenyes i els números de les targetes de crèdit. Ve del motor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Vols activar l\'ús d\'aquest motor de síntesi de parla?"</string> - <string name="tts_engine_network_required" msgid="8722087649733906851">"Aquest idioma requereix una connexió de xarxa activa per a la sortida de text a parla."</string> + <string name="tts_engine_network_required" msgid="8722087649733906851">"Aquest idioma requereix una connexió a la xarxa activa per a la sortida de text a parla."</string> <string name="tts_default_sample_string" msgid="6388016028292967973">"Això és un exemple de síntesi de veu"</string> <string name="tts_status_title" msgid="8190784181389278640">"Estat de l\'idioma predeterminat"</string> <string name="tts_status_ok" msgid="8583076006537547379">"<xliff:g id="LOCALE">%1$s</xliff:g> és totalment compatible"</string> - <string name="tts_status_requires_network" msgid="8327617638884678896">"Es necessita una connexió de xarxa per a <xliff:g id="LOCALE">%1$s</xliff:g>"</string> + <string name="tts_status_requires_network" msgid="8327617638884678896">"Es necessita una connexió a la xarxa per a <xliff:g id="LOCALE">%1$s</xliff:g>"</string> <string name="tts_status_not_supported" msgid="2702997696245523743">"<xliff:g id="LOCALE">%1$s</xliff:g> no és compatible"</string> <string name="tts_status_checking" msgid="8026559918948285013">"S\'està comprovant…"</string> <string name="tts_engine_settings_title" msgid="7849477533103566291">"Configuració de: <xliff:g id="TTS_ENGINE_NAME">%s</xliff:g>"</string> @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Adreça IP i port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Escaneja un codi QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Vincula el dispositiu per Wi‑Fi escanejant un codi QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Connecta\'t a una xarxa Wi‑Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, depurar, desenvolupador"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Drecera per a informe d\'errors"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostra un botó al menú d\'engegada per crear un informe d\'errors"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (vermell-verd)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (blau-groc)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correcció del color"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"La correcció del color permet ajustar com es mostren els colors al teu dispositiu"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"S\'ha substituït per <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>: <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Temps restant aproximat: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Hauria de durar aproximadament fins a les <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Hauria de durar aproximadament fins a les <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Fins a les <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"És possible que la bateria s\'esgoti a les <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Temps restant inferior a <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Temps restant inferior a <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Temps restant superior a <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altaveu del telèfon"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Hi ha hagut un problema amb la connexió. Desactiva el dispositiu i torna\'l a activar."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositiu d\'àudio amb cable"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Ajuda i suggeriments"</string> + <string name="storage_category" msgid="2287342585424631813">"Emmagatzematge"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Dades compartides"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Mostra i modifica les dades compartides"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Identificador de dades compartides: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Caduca el dia <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplicacions que comparteixen dades"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"L\'aplicació no ha proporcionat cap descripció."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"La concessió caduca el dia <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Suprimeix dades compartides"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Confirmes que vols suprimir aquestes dades compartides?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Els usuaris tenen les seves aplicacions i el seu contingut"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Pots restringir l\'accés a les aplicacions i al contingut del teu compte."</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Usuari"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Perfil restringit"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Vols afegir un usuari nou?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Pots compartir aquest dispositiu amb altres usuaris creant usuaris addicionals. Cada usuari té el seu propi espai, que pot personalitzar amb aplicacions i fons de pantalla, entre d\'altres. Els usuaris també poden ajustar opcions de configuració del dispositiu, com ara la Wi-Fi, que afecten els altres usuaris.\n\nQuan afegeixis un usuari nou, haurà de configurar el seu espai.\n\nTots els usuaris poden actualitzar les aplicacions de la resta. És possible que la configuració i els serveis d\'accessibilitat no es transfereixin a l\'usuari nou."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Quan s\'afegeix un usuari nou, aquest usuari ha de configurar el seu espai.\n\nQualsevol usuari pot actualitzar les aplicacions dels altres usuaris."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Vols configurar l\'usuari ara?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Comprova que l\'usuari pugui accedir al dispositiu i configurar el seu espai."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vols configurar el perfil ara?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configura ara"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ara no"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Afegeix"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Usuari nou"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Perfil nou"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Info. de l\'usuari"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Informació de perfil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Per crear un perfil restringit, has de configurar una pantalla de bloqueig per protegir les aplicacions i les dades personals."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Defineix un bloqueig"</string> </resources> diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml index 453bb87167c0..f5d84658a378 100644 --- a/packages/SettingsLib/res/values-cs/strings.xml +++ b/packages/SettingsLib/res/values-cs/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP adresa a port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Naskenování QR kódu"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Párovat zařízení přes Wi-Fi naskenováním QR kódu"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Připojte se k síti Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, ladění, vývoj"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Zástupce hlášení chyb"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Zobrazit v hlavní nabídce tlačítko k vygenerování chybového hlášení"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomálie (červená a zelená)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomálie (modrá a žlutá)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekce barev"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Korekce barev umožňuje upravit zobrazování barev na zařízení"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Přepsáno nastavením <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Zbývá asi <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Vydrží asi do <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Vydrží asi do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Baterie se může vybít do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Zbývá méně než <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Zbývá méně než <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Zbývá více než <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -514,26 +511,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Reproduktor telefonu"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problém s připojením. Vypněte zařízení a znovu jej zapněte"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Kabelové audiozařízení"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Nápověda a zpětná vazba"</string> + <string name="storage_category" msgid="2287342585424631813">"Úložiště"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Sdílená data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Zobrazit a upravit sdílená data"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID sdílených dat: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Platnost vyprší <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplikace, které sdílejí data"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Aplikace neposkytuje žádný popis."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Pronájem vyprší <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Vymazat sdílená data"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Opravdu tato sdílená data chcete vymazat?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Uživatelé mají své vlastní aplikace a obsah."</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Můžete omezit přístup k aplikacím a obsahu ze svého účtu"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Uživatel"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Omezený profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Přidat nového uživatele?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Vytvořením dalších uživatelů můžete toto zařízení sdílet s jinými lidmi. Každý uživatel má svůj prostor, který si může přizpůsobit instalací aplikací, přidáním tapety apod. Uživatelé také mohou upravit nastavení zařízení (např. Wi-Fi), která ovlivní všechny uživatele.\n\nKaždý nově přidaný uživatel si musí nastavit vlastní prostor.\n\nKaždý uživatel může aktualizovat aplikace všech ostatních uživatelů."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Když přidáte nového uživatele, musí si nastavit vlastní prostor.\n\nJakýkoli uživatel může aktualizovat aplikace všech ostatních uživatelů."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Nastavit uživatele?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Ujistěte se, že je uživatel k dispozici a může si v zařízení nastavit svůj prostor"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Nastavit profil?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Nastavit"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Teď ne"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Přidat"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Nový uživatel"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Nový profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Info o uživateli"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Informace o profilu"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Před vytvořením omezeného profilu je nutné nejprve nastavit zámek obrazovky k ochraně aplikací a dat."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Nastavit zámek"</string> </resources> diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index 7206e3837eae..07a90d67ce39 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-adresse og port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Scan QR-kode"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Dan par med en enhed via Wi-Fi ved at scanne en QR-kode"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Opret forbindelse til et Wi-Fi-netværk"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, fejlfinding, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Genvej til fejlrapportering"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Vis en knap til oprettelse af fejlrapporter i afbrydermenuen"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanopi (rød-grøn)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanopi (blå-gul)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korriger farver"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Ved hjælp af farvekorrigering kan du justere, hvordan farver ser ud på din enhed"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Tilsidesat af <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Ca. <xliff:g id="TIME_REMAINING">%1$s</xliff:g> tilbage"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Bør holde indtil ca. <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Bør holde indtil ca. <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Indtil <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Enheden løber muligvis tør for batteri inden <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Der er mindre end <xliff:g id="THRESHOLD">%1$s</xliff:g> tilbage"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Der er mindre end <xliff:g id="THRESHOLD">%1$s</xliff:g> tilbage (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Der er mere end <xliff:g id="TIME_REMAINING">%1$s</xliff:g> tilbage (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefonens højttaler"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Der kunne ikke oprettes forbindelse. Sluk og tænd enheden"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Lydenhed med ledning"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Hjælp og feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Lager"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Delte data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Se og rediger delte data"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Id for delte data: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Udløber <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apps, der deler data"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Der er ikke angivet nogen beskrivelse af appen."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Leasingen udløber <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Slet delte data"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Er du sikker på, at du vil slette disse delte data?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Brugere har egne apps og eget indhold"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Du kan begrænse adgangen til apps og indhold fra din konto"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Bruger"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Begrænset profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Vil du tilføje en ny bruger?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Du kan dele denne enhed med andre ved at oprette ekstra brugere. Hver bruger har sit eget rum, som kan tilpasses med apps, baggrund osv. Brugerne kan også justere enhedsindstillinger, som for eksempel Wi-Fi, som påvirker alle.\n\nNår du tilføjer en ny bruger, skal vedkommende konfigurere sit rum.\n\nAlle brugere kan opdatere apps for alle andre brugere. Indstillinger og tjenester for hjælpefunktioner overføres muligvis ikke til den nye bruger."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Når du tilføjer en ny bruger, skal personen konfigurere sit rum.\n\nEnhver bruger kan opdatere apps for alle andre brugere."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Vil du konfigurere brugeren nu?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Sørg for, at brugeren har mulighed for at tage enheden og konfigurere sit eget rum"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vil du oprette en profil nu?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Konfigurer nu"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ikke nu"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Tilføj"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Ny bruger"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Ny profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Brugeroplysninger"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profiloplysninger"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Før du kan oprette en begrænset profil, skal du oprette en skærmlås for at beskytte dine apps og personlige data."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Konfigurer låseskærmen"</string> </resources> diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index f9cf5523f3a5..f151bc3854d8 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-Adresse & Port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR-Code scannen"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Scanne einen QR-Code, um ein Gerät über WLAN zu koppeln"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Bitte stell eine WLAN-Verbindung her"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"ADB, Debug, Dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Verknüpfung zu Fehlerbericht"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Im Menü \"Ein/Aus\" wird eine Option zum Erstellen eines Fehlerberichts angezeigt"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (Rot-Grün-Sehschwäche)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (Blau-Gelb-Sehschwäche)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Farbkorrektur"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Mit der Farbkorrektur kannst du anpassen, wie Farben auf deinem Display angezeigt werden"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Außer Kraft gesetzt von \"<xliff:g id="TITLE">%1$s</xliff:g>\""</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Noch etwa <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Sollte etwa bis <xliff:g id="TIME">%1$s</xliff:g> reichen (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Sollte etwa bis <xliff:g id="TIME">%1$s</xliff:g> reichen"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Bis <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Der Akku ist voraussichtlich um <xliff:g id="TIME">%1$s</xliff:g> leer"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Weniger als <xliff:g id="THRESHOLD">%1$s</xliff:g> verbleibend"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Weniger als <xliff:g id="THRESHOLD">%1$s</xliff:g> verbleibend (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Mehr als <xliff:g id="TIME_REMAINING">%1$s</xliff:g> verbleibend (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Smartphone-Lautsprecher"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Verbindung kann nicht hergestellt werden. Schalte das Gerät aus & und wieder ein."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Netzbetriebenes Audiogerät"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Hilfe und Feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Speicher"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Geteilte Daten"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Geteilte Daten anzeigen und ändern"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID für geteilte Daten: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Läuft am <xliff:g id="DATE">%s</xliff:g> ab"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apps, die Daten teilen"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Keine Beschreibung der App verfügbar."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Freigabe läuft am <xliff:g id="DATE">%s</xliff:g> ab"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Geteilte Daten löschen"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Bist du sicher, dass du diese geteilten Daten löschen möchtest?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Die Nutzer haben eigene Apps und Inhalte."</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Du kannst den Zugriff auf Apps und Inhalte aus deinem Konto beschränken."</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Nutzer"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Eingeschränkte Profile"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Neuen Nutzer hinzufügen?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Du kannst dieses Gerät zusammen mit anderen nutzen, indem du weitere Nutzer erstellst. Jeder erhält einen eigenen Bereich, in dem er Apps, den Hintergrund usw. personalisieren kann. Außerdem lassen sich Geräteeinstellungen wie WLAN ändern, die sich auf alle Nutzer auswirken.\n\nWenn du einen neuen Nutzer hinzufügst, muss dieser seinen Bereich einrichten.\n\nJeder Nutzer kann Apps für alle anderen Nutzer aktualisieren. Bedienungshilfen-Einstellungen und -Dienste werden möglicherweise nicht auf den neuen Nutzer übertragen."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Wenn du einen neuen Nutzer hinzufügst, muss dieser seinen Bereich einrichten.\n\nJeder Nutzer kann Apps für alle anderen Nutzer aktualisieren."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Nutzer jetzt einrichten?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Die Person muss Zugang zum Gerät haben und bereit sein, ihren Bereich einzurichten."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil jetzt einrichten?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Jetzt einrichten"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Nicht jetzt"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Hinzufügen"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Neuer Nutzer"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Neues Profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Nutzerinformationen"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profilinformationen"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Vor dem Erstellen eines eingeschränkten Profils musst du eine Displaysperre einrichten, um deine Apps und personenbezogenen Daten zu schützen."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Sperre einrichten"</string> </resources> diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml index 07d161dd453d..094e1d70cc45 100644 --- a/packages/SettingsLib/res/values-el/strings.xml +++ b/packages/SettingsLib/res/values-el/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Διεύθυνση IP και θύρα"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Σάρωση κωδικού QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Σύζευξη συσκευής μέσω Wi‑Fi με τη σάρωση ενός κωδικού QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Συνδεθείτε σε ένα δίκτυο Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, εντοπισμός σφαλμάτων, προγραμματιστής"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Συντόμευση αναφοράς σφαλμάτων"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Εμφάνιση κουμπιού στο μενού ενεργοποίησης για τη λήψη αναφοράς σφαλμάτων"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Πρωτανοπία (κόκκινο-πράσινο)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Τριτανοπία (μπλε-κίτρινο)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Διόρθωση χρωμάτων"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Η διόρθωση χρωμάτων σάς επιτρέπει να ρυθμίσετε τον τρόπο εμφάνισης των χρωμάτων στη συσκευή σας"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Αντικαταστάθηκε από <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Απομένει/ουν περίπου <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Θα διαρκέσει μέχρι τις <xliff:g id="TIME">%1$s</xliff:g> περίπου (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Θα διαρκέσει μέχρι τις <xliff:g id="TIME">%1$s</xliff:g> περίπου"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Έως τις <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Η μπαταρία μπορεί να εξαντληθεί έως τις <xliff:g id="TIME">%1$s</xliff:g>."</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Απομένει/ουν λιγότερo/α από <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Απομένει/ουν λιγότερo/α από <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Απομένουν περισσότερα/ες από <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Ηχείο τηλεφώνου"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Πρόβλημα κατά τη σύνδεση. Απενεργοποιήστε τη συσκευή και ενεργοποιήστε την ξανά"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Ενσύρματη συσκευή ήχου"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Βοήθεια και σχόλια"</string> + <string name="storage_category" msgid="2287342585424631813">"Αποθηκευτικός χώρος"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Κοινόχρηστα δεδομένα"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Προβολή και τροποποίηση κοινόχρηστων δεδομένων"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Αναγνωριστικό κοινόχρηστων δεδομένων: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Λήγει στις <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Εφαρμογές που κάνουν κοινή χρήση δεδομένων"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Δεν παρέχεται περιγραφή από την εφαρμογή."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Λήξη άδειας στις <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Διαγραφή κοινόχρηστων δεδομένων"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Είστε σίγουροι ότι θέλετε να διαγράψετε αυτά τα κοινόχρηστα δεδομένα;"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Οι χρήστες διαθέτουν τις δικές τους εφαρμογές και περιεχόμενο"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Μπορείτε να περιορίσετε την πρόσβαση σε εφαρμογές και περιεχόμενο από το λογαριασμό σας"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Χρήστης"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Προφίλ περιορ. πρόσβασης"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Προσθήκη νέου χρήστη;"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Μπορείτε να μοιραστείτε αυτήν τη συσκευή με άλλα άτομα, δημιουργώντας επιπλέον χρήστες. Κάθε χρήστης θα έχει το δικό του χώρο, τον οποίο μπορεί να προσαρμόσει με τις δικές του εφαρμογές, ταπετσαρία κ.λπ. Οι χρήστες μπορούν επίσης να προσαρμόσουν ρυθμίσεις της συσκευής, όπως το Wi‑Fi, που επηρεάζουν τους πάντες.\n\nΚατά την προσθήκη ενός νέου χρήστη, αυτός θα πρέπει να ρυθμίσει τον χώρο του.\n\nΟποιοσδήποτε χρήστης μπορεί να ενημερώσει τις εφαρμογές για όλους τους άλλους χρήστες. Οι ρυθμίσεις και οι υπηρεσίες προσβασιμότητας ενδέχεται να μην μεταφερθούν στον νέο χρήστη"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Κατά την προσθήκη ενός νέου χρήστη, αυτός θα πρέπει να ρυθμίσει το χώρο του.\n\nΟποιοσδήποτε χρήστης μπορεί να ενημερώσει τις εφαρμογές για όλους τους άλλους χρήστες."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Να γίνει ρύθμιση χρήστη τώρα;"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Βεβαιωθείτε ότι ο χρήστης μπορεί να πάρει τη συσκευή και ρυθμίστε το χώρο του"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Να γίνει ρύθμιση προφίλ τώρα;"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Ρύθμιση τώρα"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Όχι τώρα"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Προσθήκη"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Νέος χρήστης"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Νέο προφίλ"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Πληροφορίες χρήστη"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Πληροφορίες προφίλ"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Προκειμένου να μπορέσετε να δημιουργήσετε ένα περιορισμένο προφίλ, θα πρέπει να δημιουργήσετε ένα κλείδωμα οθόνης για την προστασία των εφαρμογών και των προσωπικών δεδομένων σας."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Ορισμός κλειδώματος"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml index dae998fc3641..fc1adbb3cd1b 100644 --- a/packages/SettingsLib/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/res/values-en-rAU/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP address & port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Scan QR code"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Pair device over Wi‑Fi by scanning a QR code"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Please connect to a Wi‑Fi network"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Bug report shortcut"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Show a button in the power menu for taking a bug report"</string> @@ -432,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Should last until about <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Should last until about <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Until <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Battery may run out by <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"More than <xliff:g id="TIME_REMAINING">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -511,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Phone speaker"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off and back on"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Help and feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Storage"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Shared data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"View and modify shared data"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Shared data ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Expires on <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apps sharing data"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"No description provided by the app."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Lease expires on <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Delete shared data"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Are you sure that you want to delete this shared data?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Users have their own apps and content"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"You can restrict access to apps and content from your account"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"User"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Restricted profile"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customise with apps, wallpaper and so on. Users can also adjust device settings such as Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure that the person is available to take the device and set up their space."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Set up now"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Not now"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Add"</string> + <string name="user_new_user_name" msgid="60979820612818840">"New user"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"New profile"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"User info"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profile info"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Before you can create a restricted profile, you\'ll need to set up a screen lock to protect your apps and personal data."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Set lock"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml index dae998fc3641..fc1adbb3cd1b 100644 --- a/packages/SettingsLib/res/values-en-rCA/strings.xml +++ b/packages/SettingsLib/res/values-en-rCA/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP address & port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Scan QR code"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Pair device over Wi‑Fi by scanning a QR code"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Please connect to a Wi‑Fi network"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Bug report shortcut"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Show a button in the power menu for taking a bug report"</string> @@ -432,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Should last until about <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Should last until about <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Until <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Battery may run out by <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"More than <xliff:g id="TIME_REMAINING">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -511,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Phone speaker"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off and back on"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Help and feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Storage"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Shared data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"View and modify shared data"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Shared data ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Expires on <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apps sharing data"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"No description provided by the app."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Lease expires on <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Delete shared data"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Are you sure that you want to delete this shared data?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Users have their own apps and content"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"You can restrict access to apps and content from your account"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"User"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Restricted profile"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customise with apps, wallpaper and so on. Users can also adjust device settings such as Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure that the person is available to take the device and set up their space."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Set up now"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Not now"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Add"</string> + <string name="user_new_user_name" msgid="60979820612818840">"New user"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"New profile"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"User info"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profile info"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Before you can create a restricted profile, you\'ll need to set up a screen lock to protect your apps and personal data."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Set lock"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml index dae998fc3641..fc1adbb3cd1b 100644 --- a/packages/SettingsLib/res/values-en-rGB/strings.xml +++ b/packages/SettingsLib/res/values-en-rGB/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP address & port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Scan QR code"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Pair device over Wi‑Fi by scanning a QR code"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Please connect to a Wi‑Fi network"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Bug report shortcut"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Show a button in the power menu for taking a bug report"</string> @@ -432,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Should last until about <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Should last until about <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Until <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Battery may run out by <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"More than <xliff:g id="TIME_REMAINING">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -511,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Phone speaker"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off and back on"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Help and feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Storage"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Shared data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"View and modify shared data"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Shared data ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Expires on <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apps sharing data"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"No description provided by the app."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Lease expires on <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Delete shared data"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Are you sure that you want to delete this shared data?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Users have their own apps and content"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"You can restrict access to apps and content from your account"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"User"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Restricted profile"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customise with apps, wallpaper and so on. Users can also adjust device settings such as Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure that the person is available to take the device and set up their space."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Set up now"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Not now"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Add"</string> + <string name="user_new_user_name" msgid="60979820612818840">"New user"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"New profile"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"User info"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profile info"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Before you can create a restricted profile, you\'ll need to set up a screen lock to protect your apps and personal data."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Set lock"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml index dae998fc3641..fc1adbb3cd1b 100644 --- a/packages/SettingsLib/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/res/values-en-rIN/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP address & port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Scan QR code"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Pair device over Wi‑Fi by scanning a QR code"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Please connect to a Wi‑Fi network"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Bug report shortcut"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Show a button in the power menu for taking a bug report"</string> @@ -432,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Should last until about <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Should last until about <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Until <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Battery may run out by <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"More than <xliff:g id="TIME_REMAINING">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -511,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Phone speaker"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off and back on"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Help and feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Storage"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Shared data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"View and modify shared data"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Shared data ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Expires on <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apps sharing data"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"No description provided by the app."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Lease expires on <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Delete shared data"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Are you sure that you want to delete this shared data?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Users have their own apps and content"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"You can restrict access to apps and content from your account"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"User"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Restricted profile"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customise with apps, wallpaper and so on. Users can also adjust device settings such as Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure that the person is available to take the device and set up their space."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Set up now"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Not now"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Add"</string> + <string name="user_new_user_name" msgid="60979820612818840">"New user"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"New profile"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"User info"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profile info"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Before you can create a restricted profile, you\'ll need to set up a screen lock to protect your apps and personal data."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Set lock"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml index a3822251acb9..17364298bb26 100644 --- a/packages/SettingsLib/res/values-en-rXC/strings.xml +++ b/packages/SettingsLib/res/values-en-rXC/strings.xml @@ -513,11 +513,38 @@ <string name="storage_category" msgid="2287342585424631813">"Storage"</string> <string name="shared_data_title" msgid="1017034836800864953">"Shared data"</string> <string name="shared_data_summary" msgid="5516326713822885652">"View and modify shared data"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <string name="blob_id_text" msgid="8680078988996308061">"Shared data ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> <string name="blob_expires_text" msgid="7882727111491739331">"Expires at <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <string name="accessor_info_title" msgid="8289823651512477787">"Apps sharing data"</string> <string name="accessor_no_description_text" msgid="7510967452505591456">"No description provided by the app."</string> <string name="accessor_expires_text" msgid="4625619273236786252">"Lease expires at <xliff:g id="DATE">%s</xliff:g>"</string> <string name="delete_blob_text" msgid="2819192607255625697">"Delete shared data"</string> <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Are you sure you want to delete this shared data?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Users have their own apps and content"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"You can restrict access to apps and content from your account"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"User"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Restricted profile"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customize with apps, wallpaper, and so on. Users can also adjust device settings like Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure the person is available to take the device and set up their space"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Set up now"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Not now"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Add"</string> + <string name="user_new_user_name" msgid="60979820612818840">"New user"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"New profile"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"User info"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profile info"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Before you can create a restricted profile, you’ll need to set up a screen lock to protect your apps and personal data."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Set lock"</string> </resources> diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index 62082a4c9fc6..a881b3cea202 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Dirección IP y puerto"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Escanear código QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Escanea un código QR para vincular el dispositivo mediante Wi‑Fi"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Conéctate a una red Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Acceso directo para informes de errores"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostrar un botón en el menú de encendido para realizar un informe de errores"</string> @@ -432,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Duración aproximada hasta: <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Debería durar aproximadamente hasta <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Hasta <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Es posible que la batería se agote para las <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Tiempo restante: menos de <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Tiempo restante: menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Tiempo restante: más de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -511,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altavoz del teléfono"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Error al establecer la conexión. Apaga el dispositivo y vuelve a encenderlo."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de audio con cable"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Ayuda y comentarios"</string> + <string name="storage_category" msgid="2287342585424631813">"Storage"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Datos compartidos"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Ver y modificar los datos compartidos"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID de datos compartidos: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Vence el <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apps que comparten datos"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"La app no proporcionó una descripción."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"La asignación de tiempo vence el <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Borrar datos compartidos"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"¿Seguro que quieres borrar estos datos compartidos?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Los usuarios tienen sus propias aplicaciones y contenidos."</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Desde tu cuenta, puedes restringir el acceso a las aplicaciones y al contenido."</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Usuario"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Perfil restringido"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"¿Agregar usuario nuevo?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Para compartir este dispositivo, crea más usuarios. Cada uno tendrá su propio espacio y podrá personalizarlo con apps, un fondo de pantalla y mucho más. Los usuarios también podrán ajustar algunas opciones del dispositivo, como la conexión Wi‑Fi, que afectan a todos los usuarios.\n\nCuando agregues un nuevo usuario, esa persona deberá configurar su espacio.\n\nCualquier usuario podrá actualizar las apps de otras personas. Es posible que no se transfieran los servicios ni las opciones de accesibilidad al nuevo usuario."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Cuando agregas un nuevo usuario, esa persona debe configurar su espacio.\n\nCualquier usuario puede actualizar las aplicaciones del resto de los usuarios."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"¿Configurar el usuario ahora?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Asegúrate de que la persona pueda acceder al dispositivo y configurar su espacio."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"¿Quieres configurar tu perfil ahora?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configurar ahora"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ahora no"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Agregar"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Usuario nuevo"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Perfil nuevo"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Datos de usuario"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Datos del perfil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Para poder crear un perfil restringido, debes configurar un bloqueo de pantalla que proteja tus aplicaciones y datos personales."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Configurar bloqueo"</string> </resources> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index 62c8bb7e7d76..8d8052704648 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Dirección IP y puerto"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Escanear código QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Vincula un dispositivo a través de Wi‑Fi con un código QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Conéctate a una red Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, depuración, desarrollo"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Atajo a informe de errores"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostrar un botón en el menú de encendido para crear un informe de errores"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalía (rojo-verde)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalía (azul-amarillo)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Corrección de color"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"La corrección de color te permite ajustar cómo se muestran los colores en tu dispositivo"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Anulado por <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>: <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Tiempo restante aproximado: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Debería durar aproximadamente hasta <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Duración aproximada hasta: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Hasta: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Es probable que te quedes sin batería sobre las <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Tiempo restante: menos de <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Queda menos del <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Queda más del <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altavoz del teléfono"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"No se ha podido conectar; reinicia el dispositivo"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de audio con cable"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Ayuda y sugerencias"</string> + <string name="storage_category" msgid="2287342585424631813">"Memoria"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Datos compartidos"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Ver y modificar los datos compartidos"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID de datos compartidos: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Caduca el <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplicaciones que comparten datos"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"La aplicación no ofrece ninguna descripción."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"La concesión caduca el <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Eliminar datos compartidos"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"¿Seguro que quieres eliminar estos datos compartidos?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Los usuarios tienen contenido y aplicaciones propios"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Desde tu cuenta, puedes restringir el acceso a las aplicaciones y al contenido"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Usuario"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Perfil restringido"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"¿Añadir nuevo usuario?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Puedes compartir este dispositivo si creas más usuarios. Cada uno tendrá su propio espacio y podrá personalizarlo con aplicaciones, un fondo de pantalla y mucho más. Los usuarios también pueden ajustar opciones del dispositivo, como la conexión Wi‑Fi, que afectan a todos los usuarios.\n\nCuando añadas un usuario, tendrá que configurar su espacio.\n\nCualquier usuario puede actualizar aplicaciones de todos los usuarios. Es posible que no se transfieran los servicios y opciones de accesibilidad al nuevo usuario."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Al añadir un usuario nuevo, este debe configurar su espacio.\n\nCualquier usuario puede actualizar las aplicaciones del resto de usuarios."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"¿Configurar usuario ahora?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Asegúrate de que la persona pueda acceder al dispositivo y configurar su espacio."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"¿Quieres configurar un perfil ahora?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configurar ahora"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ahora no"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Añadir"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Nuevo usuario"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Perfil nuevo"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Información del usuario"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Información del perfil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Para poder crear un perfil restringido, debes configurar una pantalla de bloqueo que proteja tus aplicaciones y datos personales."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Establecer bloqueo"</string> </resources> diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml index fefa3a7d7af7..f4e0e7327b1f 100644 --- a/packages/SettingsLib/res/values-et/strings.xml +++ b/packages/SettingsLib/res/values-et/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-aadress ja port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR-koodi skannimine"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Siduge seade WiFi kaudu, skannides QR-koodi"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Looge ühendus WiFi-võrguga"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, silumine, arendus"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Veaaruande otsetee"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Kuva toitemenüüs veaaruande jäädvustamise nupp"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaalia (punane-roheline)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaalia (sinine-kollane)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Värvide korrigeerimine"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Värviparandus võimaldab kohandada seadmes kuvatavaid värve"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Alistas <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Ligikaudu <xliff:g id="TIME_REMAINING">%1$s</xliff:g> jäänud"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Peaks kestma kuni <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Peaks kestma kuni <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Kuni <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Aku võib tühjaks saada kell <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Jäänud on alla <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Jäänud on alla <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Jäänud on üle <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefoni kõlar"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Probleem ühendamisel. Lülitage seade välja ja uuesti sisse"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Juhtmega heliseade"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Abi ja tagasiside"</string> + <string name="storage_category" msgid="2287342585424631813">"Salvestusruum"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Jagatud andmed"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Vaadake ja muutke jagatud andmeid"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Jagatud andmete ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Aegub <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Andmeid jagavad rakendused"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Rakendus ei esita kirjeldust."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Rendiperiood lõpeb <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Kustuta jagatud andmed"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Kas soovite kindlasti need jagatud andmed kustutada?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Kasutajatel on oma rakendused ja sisu"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Oma kontol saate piirata juurdepääsu rakendustele ja sisule"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Kasutaja"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Piiratud profiil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Kas lisada uus kasutaja?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Võite jagada seda seadet teiste inimestega, luues uusi kasutajaid. Igal kasutajal on oma ruum, mida saab kohandada rakenduste, taustapildi ja muuga. Kasutajad saavad kohandada ka seadme seadeid, näiteks WiFi-valikuid, mis mõjutavad kõiki kasutajaid.\n\nKui lisate uue kasutaja, siis peab ta seadistama oma ruumi.\n\nIga kasutaja saab rakendusi kõigi kasutajate jaoks värskendada. Juurdepääsetavuse seadeid ja teenuseid ei pruugita uuele kasutajale üle kanda."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Kui lisate uue kasutaja, siis peab ta seadistama oma ruumi.\n\nIga kasutaja saab värskendada rakendusi kõigi kasutajate jaoks."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Kas seadistada kasutaja kohe?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Veenduge, et isik saaks seadet kasutada ja oma ruumi seadistada"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Kas soovite kohe profiili seadistada?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Seadista kohe"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Mitte praegu"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Lisamine"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Uus kasutaja"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Uus profiil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Kasutajateave"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profiili teave"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Enne piiratud profiili loomist peate seadistama lukustusekraani, et oma rakendusi ja isiklikke andmeid kaitsta."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Määra lukk"</string> </resources> diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index f29b6e411ea4..e51622225afc 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP helbidea eta ataka"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Eskaneatu QR kodea"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Parekatu gailua wifi-sare baten bidez QR kode bat eskaneatuta"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Konektatu wifi-sare batera"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, araztu, gailua"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Akatsen txostenerako lasterbidea"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Bateriaren menuan, erakutsi akatsen txostena sortzeko botoia"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanopia (gorri-berdeak)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanopia (urdin-horia)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Koloreen zuzenketa"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Koloreen zuzenketaren bidez, gailuan koloreak bistaratzen diren modua doi dezakezu"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> hobespena gainjarri zaio"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> inguru gelditzen dira"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Ordu honetara arte iraungo du, gutxi gorabehera: <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Ordu honetara arte iraungo du, gutxi gorabehera: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> arte"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Baliteke bateria ordu honetan agortzea: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g> baino gutxiago gelditzen dira"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g> baino gutxiago gelditzen da (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> baino gehiago gelditzen da (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefonoaren bozgorailua"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Arazoren bat izan da konektatzean. Itzali gailua eta pitz ezazu berriro."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Audio-gailu kableduna"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Laguntza eta iritzia"</string> + <string name="storage_category" msgid="2287342585424631813">"Memoria"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Partekatutako datuak"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Ikusi eta aldatu partekatutako datuak"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Partekatutako datuen IDa: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Iraungitze-data: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Datuak partekatzen dituzten aplikazioak"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Aplikazioak ez du azalpenik eman."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Alokatzearen iraungitze-data: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Ezabatu partekatutako datuak"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Ziur partekatutako datuak ezabatu nahi dituzula?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Erabiltzaileek euren aplikazioak eta edukia dituzte."</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Aplikazioetarako eta edukirako sarbidea muga dezakezu zure kontutik."</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Erabiltzailea"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Profil murriztua"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Beste erabiltzaile bat gehitu nahi duzu?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Gailu hau beste pertsona batzuekin partekatzeko, sortu erabiltzaile gehiago. Erabiltzaile bakoitzak bere eremua izango du eta, bertan, aplikazioak, horma-papera eta antzekoak pertsonalizatu ahal izango ditu. Horrez gain, erabiltzaile guztiei eragin diezaieketen ezarpen batzuk ere doi daitezke; adibidez, wifi-konexioarena.\n\nErabiltzaile bat gehitzen duzunean, pertsona horrek berak konfiguratu beharko du bere eremua.\n\nEdozein erabiltzailek egunera ditzake beste erabiltzaile guztien aplikazioak. Baliteke erabilerraztasun-ezarpenak eta -zerbitzuak ez transferitzea erabiltzaile berriei."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Erabiltzaile bat gehitzen duzunean, erabiltzaile horrek bere eremua konfiguratu beharko du.\n\nEdozein erabiltzailek egunera ditzake beste erabiltzaile guztien aplikazioak."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Erabiltzailea konfiguratu?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Ziurtatu pertsona horrek gailua hartu eta bere eremua konfigura dezakeela"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profila konfiguratu?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Konfiguratu"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Orain ez"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Gehitu"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Erabiltzaile berria"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Profil berria"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Erabiltzaile-info."</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profileko informazioa"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Profil murriztua sortu aurretik, aplikazioak eta datu pertsonalak babesteko, pantaila blokeatzeko metodo bat konfiguratu beharko duzu."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Ezarri blokeoa"</string> </resources> diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index cdd416dba813..cfdab50c2972 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"نشانی IP و درگاه"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"اسکن کد QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"دستگاه را ازطریق Wi‑Fi و با اسکن کردن کد QR مرتبط کنید"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"لطفاً به شبکه Wi-Fi متصل شوید"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"ADB (پل اشکالزدایی Android)، اشکالزدایی کردن، برنامهنویس"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"میانبر گزارش مشکل"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"نمایش دکمهای در منوی روشن/خاموش برای گرفتن گزارش اشکال"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"قرمزدشواربینی (قرمز-سبز)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"آبیدشواربینی (آبی-زرد)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"تصحیح رنگ"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"تصحیح رنگ به شما امکان میدهد نحوه نمایش رنگها را در دستگاهتان تنظیم کنید"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"توسط <xliff:g id="TITLE">%1$s</xliff:g> لغو شد"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"تقریباً <xliff:g id="TIME_REMAINING">%1$s</xliff:g> شارژ باقی مانده است"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"باید حدوداً تا <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) شارژ داشته باشید"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"باید حدوداً تا <xliff:g id="TIME">%1$s</xliff:g> شارژ داشته باشید"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"تا <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"ممکن است باتری در <xliff:g id="TIME">%1$s</xliff:g> تمام شود"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"کمتر از <xliff:g id="THRESHOLD">%1$s</xliff:g> باقی مانده"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"کمتر از <xliff:g id="THRESHOLD">%1$s</xliff:g> شارژ باقی مانده است (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"بیش از <xliff:g id="TIME_REMAINING">%1$s</xliff:g> شارژ باقی مانده است (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"بلندگوی تلفن"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"مشکل در اتصال. دستگاه را خاموش و دوباره روشن کنید"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"دستگاه صوتی سیمی"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"راهنما و بازخورد"</string> + <string name="storage_category" msgid="2287342585424631813">"فضای ذخیرهسازی"</string> + <string name="shared_data_title" msgid="1017034836800864953">"دادههای همرسانیشده"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"مشاهده و تغییر دادههای همرسانیشده"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"شناسه دادههای همرسانیشده: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"تاریخ انقضا <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"دادههای همرسانی برنامهها"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"برنامه هیچ توضیحی ارائه نکرده است."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"تاریخ انقضای کرایه <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"حذف دادههای همرسانیشده"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"مطمئن هستید میخواهید این دادههای همرسانیشده را حذف کنید؟"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"کاربران دارای برنامهها و محتوای متعلق به خود هستند"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"میتوانید از حساب خود دسترسی به برنامهها و محتوا را محدود کنید"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"کاربر"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"نمایه محدود شده"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"کاربر جدیدی اضافه میکنید؟"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"با ایجاد کاربران بیشتر، میتوانید این دستگاه را با دیگران بهاشتراک بگذارید. هر کاربر فضای مخصوص به خودش را دارد که میتواند آن را با برنامهها، کاغذدیواری و موارد دیگر سفارشی کند. همچنین کاربران میتوانند تنظیماتی در دستگاه ایجاد کنند، مانند تنظیمات Wi-Fi، که بر تنظیمات بقیه اثر دارد.\n\nوقتی کاربر جدیدی اضافه میکنید، آن شخص باید فضای خودش را تنظیم کند.\n\nهر کاربر میتواند برنامهها را برای سایر کاربران بهروزرسانی کند. دسترسپذیری، تنظیمات، و سرویسها قابلانتقال به کاربر جدید نیستند."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"وقتی کاربر جدیدی اضافه میکنید آن فرد باید فضای خودش را تنظیم کند.\n\nهر کاربری میتواند برنامهها را برای همه کاربران دیگر بهروزرسانی کند."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"هم اکنون کاربر تنظیم شود؟"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"مطمئن شوید شخص در دسترس است تا دستگاه را بگیرد و فضایش را تنظیم کند"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"اکنون نمایه را تنظیم میکنید؟"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"اکنون تنظیم شود"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"اکنون نه"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"افزودن"</string> + <string name="user_new_user_name" msgid="60979820612818840">"کاربر جدید"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"نمایه جدید"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"اطلاعات کاربر"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"اطلاعات نمایه"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"قبل از ایجاد یک نمایه محدود، باید یک قفل صفحه را برای محافظت از برنامهها و دادههای شخصی خود تنظیم کنید."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"تنظیم قفل"</string> </resources> diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml index 2bc53af855b0..57ab97441c4a 100644 --- a/packages/SettingsLib/res/values-fi/strings.xml +++ b/packages/SettingsLib/res/values-fi/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-osoite & portti"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skannaa QR-koodi"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Muodosta laitepari Wi-Fi-yhteyden kautta skannaamalla QR-koodi"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Yhdistä langattomaan verkkoon"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, virheenkorjaus, kehittäminen"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Virheraportin pikakuvake"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Näytä virheraporttipainike virtavalikossa."</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (puna-vihersokeus)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (sini-keltasokeus)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Värikorjaus"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Värinkorjauksella voit muuttaa värien näkymistä laitteellasi"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Tämän ohittaa <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Noin <xliff:g id="TIME_REMAINING">%1$s</xliff:g> jäljellä"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Varaus loppuu noin <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Varaus loppuu noin <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> saakka"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Akku voi loppua <xliff:g id="TIME">%1$s</xliff:g> mennessä"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Alle <xliff:g id="THRESHOLD">%1$s</xliff:g> jäljellä"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Alle <xliff:g id="THRESHOLD">%1$s</xliff:g> jäljellä (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Yli <xliff:g id="TIME_REMAINING">%1$s</xliff:g> jäljellä (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Puhelimen kaiutin"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Yhteysvirhe. Sammuta laite ja käynnistä se uudelleen."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Langallinen äänilaite"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Ohje ja palaute"</string> + <string name="storage_category" msgid="2287342585424631813">"Tallennustila"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Jaettu data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Katso ja muokkaa jaettua dataa"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Jaetun datan tunnus: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Vanhenee <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Dataa jakavat sovellukset"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Sovelluksella ei ole kuvausta."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Vuokra-aika päättyy <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Poista jaettu data"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Haluatko varmasti poistaa tämän jaetun datan?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Tavallisilla käyttäjillä on omia sovelluksia ja sisältöä."</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Voit rajoittaa tilisi sovelluksien ja sisällön käyttöä"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Käyttäjä"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Rajoitettu profiili"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Lisätäänkö uusi käyttäjä?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Voit jakaa tämän laitteen muiden kanssa luomalla lisää käyttäjiä. Kullakin käyttäjällä on oma tilansa, jota he voivat muokata esimerkiksi omilla sovelluksilla ja taustakuvilla. Käyttäjät voivat myös muokata laiteasetuksia, kuten Wi‑Fi-asetuksia, jotka vaikuttavat laitteen kaikkiin käyttäjiin.\n\nKun lisäät uuden käyttäjän, hänen tulee määrittää oman tilansa asetukset.\n\nKaikki käyttäjät voivat päivittää muiden käyttäjien sovelluksia. Esteettömyysominaisuuksia tai ‑palveluita ei välttämättä siirretä uudelle käyttäjälle."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Kun lisäät uuden käyttäjän, hänen tulee määrittää oman tilansa asetukset.\n\nKaikki käyttäjät voivat päivittää sovelluksia muille käyttäjille."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Määritetäänkö käyttäjän asetukset nyt?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Varmista, että käyttäjä voi vastaanottaa laitteen ja määrittää oman tilansa."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Määritetäänkö profiilin asetukset nyt?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Määritä nyt"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ei nyt"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Lisää"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Uusi käyttäjä"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Uusi profiili"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Käyttäjätiedot"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profiilin tiedot"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Ennen kuin voit luoda rajoitetun profiilin, määritä näytön lukitus, joka suojelee sovelluksiasi ja henkilökohtaisia tietojasi."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Aseta lukitus"</string> </resources> diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml index 330c18008097..10ed6c19251b 100644 --- a/packages/SettingsLib/res/values-fr-rCA/strings.xml +++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Adresse IP et port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Numériser le code QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Associer un appareil par Wi-Fi en numérisant un code QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Veuillez vous connecter à un réseau Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, débogage, concepteur"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Raccourci de rapport de bogue"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Afficher un bouton permettant d\'établir un rapport de bogue dans le menu de démarrage"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (rouge/vert)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (bleu/jaune)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correction des couleurs"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"La correction des couleurs vous permet d\'ajuster la manière dont les couleurs s\'affichent sur votre appareil"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Remplacé par <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> : <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Il reste environ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Jusqu\'à <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"La pile risque d\'être épuisée à <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Il reste moins de <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Il reste moins de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Il reste plus de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Haut-parleur du téléphone"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problème de connexion. Éteingez et rallumez l\'appareil"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Appareil audio à câble"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Aide et commentaires"</string> + <string name="storage_category" msgid="2287342585424631813">"Stockage"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Données partagées"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Afficher et modifier les données partagées"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Identifiant de données partagées : <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Expirent le <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Applications qui partagent des données"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Aucune description fournie par l\'application."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Le bail expire le <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Supprimer les données partagées"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Voulez-vous vraiment supprimer ces données partagées?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Les utilisateurs disposent de leurs propres applications et de leur propre contenu."</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Vous pouvez limiter l\'accès aux applications et au contenu depuis votre compte."</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Utilisateur"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Profil limité"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Ajouter un utilisateur?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Vous pouvez partager cet appareil avec d\'autres personnes en ajoutant des utilisateurs. Chaque utilisateur dispose de son propre espace, où il peut personnaliser, entre autres, ses applications et son fond d\'écran. Chacun peut également modifier les paramètres de l\'appareil, comme les réseaux Wi-Fi, qui touchent tous les utilisateurs.\n\nLorsque vous ajoutez un utilisateur, celui-ci doit configurer son propre espace.\n\nTout utilisateur peut mettre à jour les applications pour les autres utilisateurs. Il se peut que les paramètres et les services d\'accessibilité ne soient pas transférés aux nouveaux utilisateurs."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace.\n\nTout utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurer l\'utilisateur?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Assurez-vous que la personne est disponible et qu\'elle peut utiliser l\'appareil pour configurer son espace."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurer le profil maintenant?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configurer maintenant"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Pas maintenant"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Ajouter"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Nouvel utilisateur"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Nouveau profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Informations sur l\'utilisateur"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Informations de profil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Avant de créer un profil limité, vous devez définir un écran de verrouillage pour protéger vos applications et vos données personnelles."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Définir verrouillage écran"</string> </resources> diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml index 2a28037caf31..014a1757d2b2 100644 --- a/packages/SettingsLib/res/values-fr/strings.xml +++ b/packages/SettingsLib/res/values-fr/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Adresse IP et port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Scanner un code QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Associer l\'appareil via le Wi‑Fi à l\'aide d\'un code QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Connectez-vous à un réseau Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, débogage, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Raccourci vers rapport de bug"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Afficher un bouton dans le menu de démarrage permettant de créer un rapport de bug"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (rouge/vert)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (bleu-jaune)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correction couleur"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"La correction des couleurs vous permet d\'ajuster l\'affichage des couleurs sur votre appareil"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Remplacé par <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Temps restant : environ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Jusqu\'à <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"La batterie risque d\'être épuisée à <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Il reste moins de <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Il reste moins de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Il reste plus de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Haut-parleur du téléphone"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problème de connexion. Éteignez l\'appareil, puis rallumez-le"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Appareil audio filaire"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Aide et commentaires"</string> + <string name="storage_category" msgid="2287342585424631813">"Stockage"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Données partagées"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Afficher et modifier les données partagées"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID de données partagées : <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Date d\'expiration : <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Applications qui partagent des données"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Aucune description fournie par l\'application."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Date d\'expiration des données partagées : <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Supprimer les données partagées"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Voulez-vous vraiment supprimer ces données partagées ?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Les utilisateurs disposent de leurs propres applications et de leur propre contenu."</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Vous pouvez limiter l\'accès aux applications et au contenu depuis votre compte."</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Utilisateur"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Profil limité"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Ajouter un utilisateur ?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Vous pouvez partager cet appareil avec d\'autres personnes en ajoutant des utilisateurs. Chaque utilisateur dispose de son propre espace où il peut personnaliser ses applications et son fond d\'écran, entre autres. Chaque utilisateur peut également modifier les paramètres de l\'appareil qui s\'appliquent à tous, tels que le Wi-Fi.\n\nLorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace.\n\nN\'importe quel utilisateur peut mettre à jour les applications pour tous les autres. Toutefois, il est possible que les services et les paramètres d\'accessibilité ne soient pas transférés vers le nouvel utilisateur."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace.\n\nN\'importe quel utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurer l\'utilisateur ?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Assurez-vous que la personne est prête à utiliser l\'appareil et à configurer son espace."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurer le profil maintenant ?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configurer"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Pas maintenant"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Ajouter"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Nouvel utilisateur"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Nouveau profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Infos utilisateur"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Informations de profil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Avant de créer un profil limité, vous devez définir un écran de verrouillage pour protéger vos applications et vos données personnelles."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Définir verrouillage écran"</string> </resources> diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index e33d951f4554..46c51287d748 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Enderezo IP e porto"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Escanear o código QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Vincula o dispositivo a través da wifi escaneando un código QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Conéctate a unha rede wifi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, depuración, programador"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Atallo do informe de erros"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostra un botón no menú de acendido para crear un informe de erros"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalía (vermello-verde)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalía (azul-amarelo)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Corrección da cor"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"A corrección da cor permíteche axustar como se mostran as cores no dispositivo"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Anulado por <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Tempo restante aproximado: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Debería durar aproximadamente ata a seguinte hora: <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Debería durar aproximadamente ata a seguinte hora: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Ata: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"A batería pode esgotarse á seguinte hora: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Tempo restante inferior a <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Tempo restante: menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Tempo restante: máis de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altofalante do teléfono"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Produciuse un problema coa conexión. Apaga e acende o dispositivo."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de audio con cable"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Axuda e comentarios"</string> + <string name="storage_category" msgid="2287342585424631813">"Almacenamento"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Datos compartidos"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Consulta e modifica os datos compartidos"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Código de identificación dos datos compartidos: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Caduca o <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplicacións que comparten datos"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"A aplicación non forneceu ningunha descrición."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"O alugueiro caduca o <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Eliminar datos compartidos"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Seguro que queres eliminar estes datos compartidos?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Os usuarios teñen as súas propias aplicacións e contidos"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Podes restrinxir o acceso a aplicacións e contido da túa conta"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Usuario"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Perfil restrinxido"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Engadir un usuario novo?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Podes compartir este dispositivo con outras persoas a través da creación de usuarios adicionais. Cada usuario ten o seu propio espazo que pode personalizar coas súas propias aplicacións, fondos de pantalla etc. Os usuarios tamén poden modificar as opcións de configuración do dispositivo, como a rede wifi, que afectan a todo o mundo.\n\nCando engadas un usuario novo, este deberá configurar o seu espazo.\n\nCalquera usuario pode actualizar as aplicacións para todos os demais usuarios. Non se poden transferir ao novo usuario os servizos nin a configuración de accesibilidade."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Cando engadas un usuario novo, este deberá configurar o seu espazo.\n\nCalquera usuario pode actualizar as aplicacións para todos os demais usuarios."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o usuario agora?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Asegúrate de que a persoa está dispoñible para acceder ao dispositivo e configurar o seu espazo"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar o perfil agora?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configurar agora"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Agora non"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Engadir"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Novo usuario"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Novo perfil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Información usuario"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Información do perfil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Para poder crear un perfil restrinxido, precisarás configurar un bloqueo da pantalla para protexer as túas aplicacións e datos persoais."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Establecer bloqueo"</string> </resources> diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index 156c0fc78efe..564b70321ad3 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -519,10 +519,18 @@ <skip /> <!-- no translation found for shared_data_summary (5516326713822885652) --> <skip /> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <!-- no translation found for blob_id_text (8680078988996308061) --> <skip /> <!-- no translation found for blob_expires_text (7882727111491739331) --> <skip /> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <!-- no translation found for accessor_info_title (8289823651512477787) --> <skip /> <!-- no translation found for accessor_no_description_text (7510967452505591456) --> @@ -533,4 +541,23 @@ <skip /> <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> <skip /> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"વપરાશકર્તાઓ પાસે તેઓની પોતાની ઍપ્લિકેશનો અને કન્ટેન્ટ છે"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"તમે તમારા એકાઉન્ટથી ઍપ્લિકેશનો અને સામગ્રીની અૅક્સેસને નિયંત્રિત કરી શકો છો"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"વપરાશકર્તા"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"પ્રતિબંધિત પ્રોફાઇલ"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"નવા વપરાશકર્તાને ઉમેરીએ?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"તમે વધારાના વપરાશકર્તાઓ બનાવીને અન્ય લોકો સાથે આ ઉપકરણને શેર કરી શકો છો. દરેક વપરાશકર્તા પાસે તેમની પોતાની સ્પેસ છે, જેને તેઓ ઍપ, વૉલપેપર, વગેરે સાથે કસ્ટમાઇઝ કરી શકે છે. વપરાશકર્તાઓ પ્રત્યેક વ્યક્તિને અસર કરતી હોય તેવી ઉપકરણ સેટિંગ જેમ કે વાઇ-ફાઇને પણ સમાયોજિત કરી શકે છે.\n\nજ્યારે તમે કોઈ નવા વપરાશકર્તાને ઉમેરો છો, ત્યારે તે વ્યક્તિને તેમની સ્પેસ સેટ કરવાની જરૂર પડે છે.\n\nકોઈપણ વપરાશકર્તા અન્ય બધા વપરાશકર્તાઓ માટે ઍપને અપડેટ કરી શકે છે. નવા વપરાશકર્તાને ઍક્સેસિબિલિટી સેટિંગ અને સેવાઓ ટ્રાન્સફર ન પણ થાય."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"જ્યારે તમે કોઈ નવા વપરાશકર્તાને ઉમેરો છો, ત્યારે તે વ્યક્તિને તેમનું સ્થાન સેટ અપ કરવાની જરૂર પડે છે.\n\nકોઈપણ વપરાશકર્તા બધા અન્ય વપરાશકર્તાઓ માટે એપ્લિકેશન્સને અપડેટ કરી શકે છે."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"અત્યારે જ વપરાશકર્તાને સેટ અપ કરીએ?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"ખાતરી કરો કે વ્યક્તિ ઉપકરણ લેવા અને તેમના સ્થાનનું સેટ અપ કરવા માટે ઉપલબ્ધ છે"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"હવે પ્રોફાઇલ સેટ કરીએ?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"હવે સેટ કરો"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"હમણાં નહીં"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"ઉમેરો"</string> + <string name="user_new_user_name" msgid="60979820612818840">"નવો વપરાશકર્તા"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"નવી પ્રોફાઇલ"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"વપરાશકર્તા માહિતી"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"પ્રોફાઇલ માહિતી"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"તમે પ્રતિબંધિત પ્રોફાઇલ બનાવી શકો તે પહેલાં, તમારે તમારી ઍપ્લિકેશનો અને વ્યક્તિગત ડેટાની સુરક્ષા માટે એક લૉક સ્ક્રીન સેટ કરવાની જરૂર પડશે."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"લૉક સેટ કરો"</string> </resources> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index fb2ed035c515..556600f146d1 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"आईपी पता और पोर्ट"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"क्यूआर कोड स्कैन करें"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"क्यूआर कोड स्कैन करके, वाई-फ़ाई से डिवाइस को जोड़ें"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"कृपया किसी वाई-फ़ाई नेटवर्क से कनेक्ट करें"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"गड़बड़ी की रिपोर्ट का शॉर्टकट"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"गड़बड़ी की रिपोर्ट लेने के लिए पावर मेन्यू में कोई बटन दिखाएं"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"लाल रंग पहचान न पाना (लाल-हरा)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"नीला रंग पहचान न पाना (नीला-पीला)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"रंग सुधार"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"रंग में सुधार करने की सुविधा, आपके डिवाइस पर दिखने वाले रंगों में बदलाव करने में मदद करती है"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> के द्वारा ओवरराइड किया गया"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"बैटरी करीब <xliff:g id="TIME_REMAINING">%1$s</xliff:g> में खत्म हो जाएगी"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"बैटरी करीब <xliff:g id="TIME">%1$s</xliff:g> चलेगी (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"बैटरी करीब <xliff:g id="TIME">%1$s</xliff:g> चलेगी"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> तक"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"बैटरी <xliff:g id="TIME">%1$s</xliff:g> तक खत्म हो जाएगी"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g> से कम समय बचा है"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g> से कम बैटरी बची है (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> से ज़्यादा चलने लायक बैटरी बची है (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"फ़ोन का स्पीकर"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"कनेक्ट करने में समस्या हो रही है. डिवाइस को बंद करके चालू करें"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"वायर वाला ऑडियो डिवाइस"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"सहायता और सुझाव"</string> + <string name="storage_category" msgid="2287342585424631813">"डिवाइस की मेमोरी"</string> + <string name="shared_data_title" msgid="1017034836800864953">"शेयर किया गया डेटा"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"शेयर किए गए डेटा को देखे और उसमें बदलाव करें"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"शेयर किए गए डेटा का आईडी: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"डेटा का ऐक्सेस <xliff:g id="DATE">%s</xliff:g> को खत्म हो जाएगा"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"ऐप्लिकेशन का शेयर किया गया डेटा"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"ऐप्लिकेशन से कोई जानकारी नहीं मिली."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"लीज़ <xliff:g id="DATE">%s</xliff:g> को खत्म होगी"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"शेयर किया गया डेटा मिटाएं"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"क्या आप वाकई शेयर किया गया यह डेटा मिटाना चाहते हैं?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"उपयोगकर्ताओं के उनके स्वयं के ऐप्लिकेशन और सामग्री होती है"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"आप अपने खाते से ऐप और सामग्री की पहुंच को रोक सकते हैं"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"उपयोगकर्ता"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"प्रतिबंधित प्रोफ़ाइल"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"नया उपयोगकर्ता जोड़ें?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"आप और ज़्यादा उपयोगकर्ता बनाकर इस डिवाइस को दूसरे लोगों के साथ शेयर कर सकते हैं. हर उपयोगकर्ता के पास अपनी जगह होती है, जिसमें वह मनपसंद तरीके से ऐप्लिकेशन, वॉलपेपर और दूसरी चीज़ों में बदलाव कर सकते हैं. उपयोगकर्ता वाई-फ़ाई जैसी डिवाइस सेटिंग में भी बदलाव कर सकते हैं, जिसका असर हर किसी पर पड़ेगा.\n\nजब आप कोई नया उपयोगकर्ता जोड़ते हैं तो उन्हें अपनी जगह सेट करनी होगी.\n\nकोई भी उपयोगकर्ता दूसरे सभी उपयोगकर्ताओं के लिए ऐप्लिकेशन अपडेट कर सकते हैं. हो सकता है कि सुलभता सेटिंग और सेवाएं नए उपयोगकर्ता को ट्रांसफ़र न हो पाएं."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"जब आप कोई नया उपयोगकर्ता जोड़ते हैं तो उसे अपनी जगह सेट करनी होती है.\n\nकोई भी उपयोगकर्ता बाकी सभी उपयोगकर्ताओं के लिए ऐप अपडेट कर सकता है."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"उपयोगकर्ता को अभी सेट करें?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"पक्का करें कि व्यक्ति डिवाइस का इस्तेमाल करने और अपनी जगह सेट करने के लिए मौजूद है"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"प्रोफ़ाइल अभी सेट करें?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"अभी सेट करें"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"रद्द करें"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"जोड़ें"</string> + <string name="user_new_user_name" msgid="60979820612818840">"नया उपयोगकर्ता"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"नई प्रोफ़ाइल"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"उपयोगकर्ता की जानकारी"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"प्रोफ़ाइल की जानकारी"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"इससे पहले कि आप कोई प्रतिबंधित प्रोफ़ाइल बनाएं, आपको अपने ऐप्लिकेशन और व्यक्तिगत डेटा की सुरक्षा करने के लिए एक स्क्रीन लॉक सेट करना होगा."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"लॉक सेट करें"</string> </resources> diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml index 49607357c670..35f3d388b7ac 100644 --- a/packages/SettingsLib/res/values-hr/strings.xml +++ b/packages/SettingsLib/res/values-hr/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP adresa i priključak"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skeniraj QR kôd"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Uparivanje uređaja putem Wi-Fija skeniranjem QR koda"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Povežite se s Wifi mrežom"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, otklanjanje pogrešaka, razvoj"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Prečac izvješća o pogreškama"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Prikaži gumb u izborniku napajanja za izradu izvješća o programskim pogreškama"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (crveno – zeleno)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (plavo – žuto)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekcija boje"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Korekcija boje omogućuje vam prilagodbu načina prikazivanja boja na vašem uređaju"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Premošćeno postavkom <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Još otprilike <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Otprilike bi trebalo trajati do <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Otprilike bi trebalo trajati do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Baterija bi se mogla isprazniti do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Preostalo je više od <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -513,26 +510,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Zvučnik telefona"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem s povezivanjem. Isključite i ponovo uključite uređaj"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žičani audiouređaj"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Pomoć i povratne informacije"</string> + <string name="storage_category" msgid="2287342585424631813">"Pohrana"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Dijeljeni podaci"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Prikaz i izmjena dijeljenih podataka"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID dijeljenih podataka: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Istječe <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplikacije koje dijele podatke"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"U aplikaciji nije naveden opis."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Najam istječe <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Izbriši dijeljene podatke"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Jeste li sigurni da želite izbrisati te dijeljene podatke?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Korisnici imaju vlastite aplikacije i sadržaj"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Možete ograničiti pristup aplikacijama i sadržaju sa svojeg računa"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Korisnik"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Ograničeni profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Dodati novog korisnika?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Da biste ovaj uređaj dijelili s drugima, možete napraviti dodatne korisnike. Svaki korisnik ima svoj prostor koji može prilagoditi pomoću vlastitih aplikacija, pozadine i tako dalje. Korisnici mogu prilagoditi i postavke uređaja koje utječu na sve ostale korisnike, na primjer Wi‑Fi.\n\nKada dodate novog korisnika, ta osoba mora postaviti svoj prostor.\n\nBilo koji korisnik može ažurirati aplikacije za sve ostale korisnike. Postavke i usluge pristupačnosti možda se neće prenijeti na novog korisnika."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Kada dodate novog korisnika, ta osoba mora postaviti vlastiti prostor.\n\nBilo koji korisnik može ažurirati aplikacije za sve ostale korisnike."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Postaviti korisnika sada?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Provjerite može li osoba uzeti uređaj i postaviti svoj prostor"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Želite li sada postaviti profil?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Postavi sada"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ne sad"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Dodavanje"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Novi korisnik"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Novi profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Podaci o korisniku"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profilni podaci"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Prije izrade ograničenog profila trebate postaviti zaključavanje zaslona radi zaštite svojih aplikacija i osobnih podataka."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Postavi zaključavanje"</string> </resources> diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml index 570b075cb930..71fd2e6f7504 100644 --- a/packages/SettingsLib/res/values-hu/strings.xml +++ b/packages/SettingsLib/res/values-hu/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-cím és port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR-kód beolvasása"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Párosítsa az eszközt Wi-Fi-n keresztül QR-kód beolvasásával"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Csatlakozzon Wi-Fi-hálózathoz"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Hibabejelentési gomb"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Gomb megjelenítése a bekapcsolási menüben hibajelentés készítéséhez"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomália (piros– zöld)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomália (kék–sárga)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Színkorrekció"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"A színkorrekcióval módosíthatja a színek megjelenítésének módját az eszközön"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Felülírva erre: <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Körülbelül <xliff:g id="TIME_REMAINING">%1$s</xliff:g> maradt hátra"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Nagyjából még ennyit bír: <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Nagyjából még ennyit bír: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Eddig: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Az akkumulátor lemerülhet a következő időpontig: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Kevesebb mint <xliff:g id="THRESHOLD">%1$s</xliff:g> van hátra"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Kevesebb mint <xliff:g id="THRESHOLD">%1$s</xliff:g> van hátra (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Kevesebb mint <xliff:g id="TIME_REMAINING">%1$s</xliff:g> van hátra (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefon hangszórója"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Sikertelen csatlakozás. Kapcsolja ki az eszközt, majd kapcsolja be újra."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Vezetékes audioeszköz"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Súgó és visszajelzés"</string> + <string name="storage_category" msgid="2287342585424631813">"Tárhely"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Megosztott adatok"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Megosztott adatok megtekintése és módosítása"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Megosztott adat azonosítója: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Lejárat időpontja: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Adatokat megosztó alkalmazások"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Nincs megadva leírás az alkalmazásnál."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"A bérlet a következő időpontban jár le: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Megosztott adat törlése"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Biztosan törli ezt a megosztott adatot?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"A felhasználóknak saját alkalmazásaik és tartalmaik vannak"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Korlátozhatja az alkalmazásokhoz és tartalmakhoz való hozzáférést a fiókjából"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Felhasználó"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Korlátozott profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Hozzáad új felhasználót?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"További felhasználók létrehozásával megoszthatja ezt az eszközt másokkal. Minden felhasználó saját felülettel rendelkezik, amelyet személyre szabhat saját alkalmazásaival, háttérképével stb. A felhasználók módosíthatják az eszköz beállításait is, például a Wi‑Fi használatát, amely mindenkit érint.\n\nHa új felhasználót ad hozzá, az illetőnek be kell állítania saját felületét.\n\nBármely felhasználó frissítheti az alkalmazásokat valamennyi felhasználó számára. Előfordulhat, hogy a kisegítő lehetőségekkel kapcsolatos beállításokat és szolgáltatásokat nem viszi át a rendszer az új felhasználóhoz."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Ha új felhasználót ad hozzá, az illetőnek be kell állítania saját tárterületét.\n\nBármely felhasználó frissítheti az alkalmazásokat valamennyi felhasználó számára."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Beállít most egy felhasználót?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Győződjön meg arról, hogy a személy hozzá tud férni az eszközhöz, hogy beállíthassa a területét"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Létrehoz most egy profilt?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Beállítás most"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Most nem"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Hozzáadás"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Új felhasználó"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Új profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Felhasználói adatok"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profiladatok"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Mielőtt létrehozhatna egy korlátozott profilt, be kell állítania egy képernyőzárat, hogy megvédje alkalmazásait és személyes adatait."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Képernyőzár beállítása"</string> </resources> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index 755a75f7bf1c..abc03a776eec 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP հասցե և միացք"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR կոդի սկանավորում"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Զուգակցեք սարքը՝ Wi‑Fi-ի օգնությամբ սկանավորելով QR կոդը"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Միացեք Wi-Fi ցանցի"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, վրիպազերծում, ծրագրավորող"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Սխալի հաղորդման դյուրանցում"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Գործարկման ցանկում ցույց տալ կոճակը՝ վրիպակների հաղորդման համար"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Պրոտանոմալիա (կարմիր-կանաչ)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Տրիտանոմալիա (կապույտ-դեղին)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Գունաշտկում"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Գունաշտկումը թույլ է տալիս կարգավորել գույների ցուցադրումն այս սարքում"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Գերազանցված է <xliff:g id="TITLE">%1$s</xliff:g>-ից"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Լիցքը կբավարարի մոտ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Լիցքը (<xliff:g id="LEVEL">%2$s</xliff:g>) պետք է որ բավականացնի մինչև <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Լիցքը պետք է որ բավականացնի մինչև <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Մինչև <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Մարտկոցի լիցքը կարող է սպառվել մինչև <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Մնացել է <xliff:g id="THRESHOLD">%1$s</xliff:g>-ից պակաս"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Մնացել է <xliff:g id="THRESHOLD">%1$s</xliff:g>-ից պակաս (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Մնացել է ավելի քան <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Հեռախոսի բարձրախոս"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Կապի խնդիր կա: Սարքն անջատեք և նորից միացրեք:"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Լարով աուդիո սարք"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Օգնություն և հետադարձ կապ"</string> + <string name="storage_category" msgid="2287342585424631813">"Տարածք"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Հասանելի դարձված տվյալներ"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Դիտեք և փոփոխեք հասանելի դարձված տվյալները"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Հասանելի դարձված տվյալների ID՝ <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Ժամկետը լրանում է՝ <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Տվյալներով կիսվող հավելվածներ"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Հավելվածի կողմից տրամադրված նկարագրություն չկա։"</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Վարձակալության ժակետն ավարտվում է՝ <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Ջնջել հասանելի դարձված տվյալները"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Իսկապե՞ս ուզում եք ջնջել հասանելի դարձված այս տվյալները։"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Օգտվողներն իրենց անձնական հավելվածներն ու բովանդակությունն ունեն"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Դուք կարող եք սահմանափակել մուտքի իրավունքը ծրագրեր և ձեր հաշվի բովանդակություն:"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Օգտատեր"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Սահմանափակված պրոֆիլ"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Ավելացնե՞լ նոր օգտատեր"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Այս սարքից կարող եք օգտվել մի քանի հոգով: Դրա համար անհրաժեշտ է ստեղծել լրացուցիչ պրոֆիլներ: Յուրաքանչյուր օգտատեր կարող է կարգավորել իր պրոֆիլը ըստ իր հայեցողության և ճաշակի (օր.՝ ընտրել իր ուզած պաստառը, տեղադրել անհրաժեշտ հավելվածները և այլն): Բացի այդ, օգտատերերը կարող են կարգավորել սարքի որոշ պարամետրեր (օր.՝ Wi-Fi-ը), որոնք կգործեն նաև մյուս պրոֆիլների համար:\n\nԵրբ նոր պրոֆիլ ավելացնեք, տվյալ օգտատերը պետք է կարգավորի այն:\n\nՅուրաքանչյուր օգտատեր կարող է թարմացնել մյուս օգտատերերի հավելվածները: Հատուկ գործառույթների և ծառայությունների կարգավորումները կարող են չփոխանցվել նոր օգտատերերին:"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Երբ նոր օգտատեր եք ավելացնում, նա պետք է կարգավորի իր պրոֆիլը:\n\nՑանկացած օգտատեր կարող է թարմացնել հավելվածները մյուս բոլոր հաշիվների համար:"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Կարգավորե՞լ պրոֆիլը"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Համոզվեք, որ անձը կարող է վերցնել սարքը և կարգավորել իր տարածքը"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Կարգավորե՞լ պրոֆիլը հիմա:"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Կարգավորել"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ոչ հիմա"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Ավելացնել"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Նոր օգտատեր"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Նոր պրոֆիլ"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Օգտատիրոջ տեղեկություններ"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Պրոֆիլի տեղեկություններ"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Նախքան դուք կկարողանաք ստեղծել սահմանափակ պրոֆիլ, դուք պետք է կարգավորեք էկրանի կողպումը` ձեր ծրագրերը և անձնական տվյալները պաշտպանելու համար:"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Կարգավորել կողպումը"</string> </resources> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index 7752f464dc77..27860e962bda 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Alamat IP & Port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Memindai kode QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Menyambungkan perangkat melalui Wi‑Fi dengan memindai Kode QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Harap sambungkan ke jaringan Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Pintasan laporan bug"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Tampilkan tombol di menu daya untuk mengambil laporan bug"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomali (merah-hijau)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomali (biru-kuning)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Koreksi warna"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Koreksi warna memungkinkan Anda untuk menyesuaikan cara warna ditampilkan pada perangkat Anda"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Digantikan oleh <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Sekitar <xliff:g id="TIME_REMAINING">%1$s</xliff:g> lagi"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Akan bertahan kira-kira sampai pukul <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Akan bertahan kira-kira sampai pukul <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Hingga <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Baterai mungkin habis pada <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Tersisa kurang dari <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Tersisa kurang dari <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Tersisa lebih dari <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Speaker ponsel"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ada masalah saat menghubungkan. Nonaktifkan perangkat & aktifkan kembali"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Perangkat audio berkabel"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Bantuan & masukan"</string> + <string name="storage_category" msgid="2287342585424631813">"Penyimpanan"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Data bersama"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Lihat dan ubah data bersama"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID data bersama: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Berlaku sampai <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplikasi yang berbagi data"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Tidak ada deskripsi yang disediakan oleh aplikasi."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Lease akan berakhir pada <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Hapus data bersama"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Yakin ingin menghapus data bersama ini?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Pengguna memiliki aplikasi dan konten mereka sendiri"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Anda dapat membatasi akses ke aplikasi dan konten dari akun Anda"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Pengguna"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Profil dibatasi"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Tambahkan pengguna baru?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Anda dapat berbagi penggunaan perangkat ini dengan orang lain dengan membuat pengguna tambahan. Setiap pengguna memiliki ruang sendiri, yang dapat disesuaikan dengan aplikasi, wallpaper, dan lainnya.\n\nSaat Anda menambahkan pengguna baru, pengguna tersebut perlu menyiapkan ruangnya.\n\nPengguna mana pun dapat mengupdate aplikasi untuk semua pengguna lainnya. Layanan dan setelan aksesibilitas mungkin tidak ditransfer ke pengguna baru."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Saat Anda menambahkan pengguna baru, orang tersebut perlu menyiapkan ruang mereka sendiri.\n\nPengguna mana pun dapat memperbarui aplikasi untuk semua pengguna lain."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Siapkan pengguna sekarang?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Pastikan orang tersebut ada untuk mengambil perangkat dan menyiapkan ruangnya"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Siapkan profil sekarang?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Siapkan sekarang"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Nanti saja"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Tambahkan"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Pengguna baru"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Profil baru"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Info pengguna"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Info profil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Sebelum dapat membuat profil yang dibatasi, Anda perlu menyiapkan kunci layar untuk melindungi aplikasi dan data pribadi Anda."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Setel kunci"</string> </resources> diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml index 28cd4c280974..f483587c3982 100644 --- a/packages/SettingsLib/res/values-is/strings.xml +++ b/packages/SettingsLib/res/values-is/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-tala og gátt"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skanna QR-kóða"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Tengja tæki með Wi-Fi með því að skanna QR-kóða"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Tengstu Wi-Fi neti"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, villuleit, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Flýtileið í villutilkynningu"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Sýna hnapp til að skrá villutilkynningu í valmynd aflrofans"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Litblinda (rauðgræn)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Litblinda (blágul)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Litaleiðrétting"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Litaleiðrétting gerir þér kleift að stilla hvernig litir birtast í tækinu þínu"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Hnekkt af <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Um það bil <xliff:g id="TIME_REMAINING">%1$s</xliff:g> eftir"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Ætti að endast til u.þ.b. <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Ætti að endast til u.þ.b. <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Til klukkan <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Rafhlaðan gæti tæmst kl. <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Minna en <xliff:g id="THRESHOLD">%1$s</xliff:g> eftir"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Minna en <xliff:g id="THRESHOLD">%1$s</xliff:g> eftir (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Meira en <xliff:g id="TIME_REMAINING">%1$s</xliff:g> eftir (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Símahátalari"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Vandamál í tengingu. Slökktu og kveiktu á tækinu"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Snúrutengt hljómtæki"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Hjálp og ábendingar"</string> + <string name="storage_category" msgid="2287342585424631813">"Geymsla"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Deild gögn"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Skoða og breyta deildum gögnum"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Deilt gagnaauðkenni: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Rennur út hinn <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Forrit sem deila gögnum"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Forritið er ekki með neina lýsingu."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Leiga rennur út <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Eyða deildum gögnum"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Ertu viss um að þú viljir eyða þessum deildu gögnum?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Notendur hafa sín eigin forrit og efni"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Hægt er að takmarka aðgang að forritum og efni á reikningnum þínum"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Notandi"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Takmarkað snið"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Bæta nýjum notanda við?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Þú getur búið til fleiri notendur til að deila þessu tæki með öðrum. Hver notandi hefur sitt eigið svæði sem viðkomandi getur sérsniðið með forritum, veggfóðri o.s.frv. Notendur geta einnig breytt þeim stillingum tækisins sem hafa áhrif á alla notendur, t.d. Wi-Fi.\n\nÞegar þú bætir nýjum notanda við þarf sá notandi að setja upp svæðið sitt.\n\nHvaða notandi sem er getur uppfært forrit fyrir alla aðra notendur. Ekki er tryggt að stillingar á aðgengi og þjónustu flytjist yfir á nýja notandann."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Þegar þú bætir nýjum notanda við þarf sá notandi að setja upp svæðið sitt.\n\nHvaða notandi sem er getur uppfært forrit fyrir alla aðra notendur."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Setja notanda upp núna?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Gakktu úr skugga um að notandinn geti tekið tækið og sett upp sitt svæði"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Setja upp snið núna?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Setja upp núna"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ekki núna"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Bæta við"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Nýr notandi"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Nýtt snið"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Notandaupplýsingar"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Upplýsingar um snið"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Áður en þú getur búið til takmarkað snið þarftu að setja upp skjálás til að vernda forritin þín og persónuleg gögn."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Velja lás"</string> </resources> diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index 09282dfe23e8..9e9415190576 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Indirizzo IP e porta"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Scansiona codice QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Accoppia il dispositivo tramite Wi-Fi eseguendo la scansione di un codice QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Collegati a una rete Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"ADB, debug, sviluppatori"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Scorciatoia segnalazione bug"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostra un pulsante per segnalare i bug nel menu di accensione"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalìa (rosso-verde)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalìa (blu-giallo)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correzione del colore"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"La correzione del colore ti consente di regolare la visualizzazione dei colori sul tuo dispositivo"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Valore sostituito da <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Tempo rimanente: <xliff:g id="TIME_REMAINING">%1$s</xliff:g> circa"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Tempo stimato rimanente: <xliff:g id="TIME">%1$s</xliff:g> circa (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Tempo stimato rimanente: <xliff:g id="TIME">%1$s</xliff:g> circa"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Fino alle ore <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"La batteria potrebbe esaurirsi entro <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Tempo rimanente: meno di <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Tempo rimanente: meno di <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Tempo rimanente: più di <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altoparlante telefono"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problema di connessione. Spegni e riaccendi il dispositivo"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo audio cablato"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Guida e feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Archiviazione"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Dati condivisi"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Visualizza e modifica i dati condivisi"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID dati condivisi: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Scadenza: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Dati delle app condivisi"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Nessuna descrizione fornita dall\'app."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Scadenza lease: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Elimina dati condivisi"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Eliminare dati condivisi?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Gli utenti hanno applicazioni e contenuti personali"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Puoi limitare l\'accesso alle applicazioni e ai contenuti dal tuo account"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Utente"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Profilo con limitazioni"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Aggiungere un nuovo utente?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Puoi condividere il dispositivo con altre persone creando altri utenti. Ogni utente ha un proprio spazio personalizzabile con app, sfondo e così via. Gli utenti possono anche regolare le impostazioni del dispositivo, come il Wi‑Fi, che riguardano tutti.\n\nQuando crei un nuovo utente, la persona in questione deve configurare il proprio spazio.\n\nQualsiasi utente può aggiornare le app per tutti gli altri utenti. I servizi e le impostazioni di accessibilità non potranno essere trasferiti al nuovo utente."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Il nuovo utente, una volta aggiunto, deve impostare il proprio spazio.\n\nQualsiasi utente può aggiornare le app per tutti gli altri."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurare l\'utente ora?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Assicurati che la persona sia disponibile a prendere il dispositivo e configurare il suo spazio"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurare il profilo ora?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configura ora"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Non ora"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Aggiungi"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Nuovo utente"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Nuovo profilo"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Dati utente"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Informazioni profilo"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Prima di poter creare un profilo con limitazioni, devi impostare un blocco schermo per proteggere le tue app e i tuoi dati personali."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Imposta blocco"</string> </resources> diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index 3c7fb3d435c3..e052cd74cb89 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"יציאה וכתובת IP"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"סריקת קוד QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"יש לסרוק קוד QR כדי להתאים מכשיר באמצעות Wi‑Fi"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"יש להתחבר לרשת Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, ניפוי באגים, פיתוח"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"קיצור של דוח באגים"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"כדי ליצור דוח באגים, הצג לחצן בתפריט לניהול צריכת החשמל"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"פרוטנומליה (אדום-ירוק)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"טריטנומליה (כחול-צהוב)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"תיקון צבע"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"תיקון צבעים מאפשר לשנות את האופן שבו צבעים מוצגים במכשיר שלך"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"נעקף על ידי <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"הזמן הנותר: בערך <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"אמורה להחזיק מעמד בערך עד <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"אמורה להחזיק מעמד בערך עד <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"עד <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"ייתכן שהסוללה תתרוקן עד <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"נותרו פחות מ-<xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"נותרו פחות מ-<xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"נותרו יותר מ-<xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -514,26 +511,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"רמקול של טלפון"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"יש בעיה בחיבור. עליך לכבות את המכשיר ולהפעיל אותו מחדש"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"התקן אודיו חוטי"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"עזרה ומשוב"</string> + <string name="storage_category" msgid="2287342585424631813">"אחסון"</string> + <string name="shared_data_title" msgid="1017034836800864953">"נתונים משותפים"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"הצגה ושינוי של נתונים משותפים"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"מזהה נתונים משותפים: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"התוקף יפוג ב-<xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"אפליקציות שמשתפות נתונים"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"האפליקציה לא סיפקה תיאור."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"תוקף החכירה (lease) יפוג ב-<xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"מחיקת הנתונים המשותפים"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"הנתונים המשותפים יימחקו. להמשיך?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"למשתמשים יש אפליקציות ותוכן משלהם"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"ניתן להגביל את הגישה לאפליקציות ולתוכן מהחשבון שלך"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"משתמש"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"פרופיל מוגבל"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"האם להוסיף משתמש חדש?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"ניתן לשתף מכשיר זה עם אנשים אחרים על ידי יצירת משתמשים נוספים. לכל משתמש מרחב משלו, שאותו אפשר להתאים אישית בעזרת אפליקציות, טפט ופריטים נוספים. המשתמשים יכולים גם להתאים הגדרות של המכשיר כגון Wi‑Fi, שמשפיעות על כולם.\n\nכשמוסיפים משתמש חדש, על משתמש זה להגדיר את המרחב שלו.\n\nכל אחד מהמשתמשים יכול לעדכן אפליקציות לכל שאר המשתמשים. ייתכן שהגדרות ושירותים של נגישות לא יועברו למשתמש החדש."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"בעת הוספת משתמש חדש, על משתמש זה להגדיר את השטח שלו.\n\nכל משתמש יכול לעדכן אפליקציות עבור כל המשתמשים האחרים."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"האם להגדיר משתמש עכשיו?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"כדאי לוודא שהמשתמש זמין ויכול לקחת את המכשיר ולהגדיר את המרחב שלו"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"האם להגדיר פרופיל עכשיו?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"הגדרה"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"לא עכשיו"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"הוספה"</string> + <string name="user_new_user_name" msgid="60979820612818840">"משתמש חדש"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"פרופיל חדש"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"פרטי משתמש"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"פרטי פרופיל"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"לפני שתוכל ליצור פרופיל מוגבל, תצטרך להגדיר נעילת מסך כדי להגן על האפליקציות ועל הנתונים האישיים שלך."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"הגדרת נעילה"</string> </resources> diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml index 5eccfd19cff9..1f1eb028f12c 100644 --- a/packages/SettingsLib/res/values-ja/strings.xml +++ b/packages/SettingsLib/res/values-ja/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP アドレスとポート"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR コードのスキャン"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR コードをスキャンして Wi-Fi 経由でデバイスをペア設定します"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Wi-Fi ネットワークに接続してください"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, デバッグ, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"バグレポートのショートカット"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"電源メニューにバグレポートを取得するボタンを表示する"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"第一色弱(赤緑)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"第三色弱(青黄)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"色補正"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"色補正機能を使用して、デバイスで色をどのように表示するかを調整できます"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g>によって上書き済み"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"残り時間: 約 <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"電池切れの推定時刻: <xliff:g id="TIME">%1$s</xliff:g>(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"電池切れの推定時刻: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> まで"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g> 頃に電池がなくなります"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"残り時間: <xliff:g id="THRESHOLD">%1$s</xliff:g>未満"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"残り時間: <xliff:g id="THRESHOLD">%1$s</xliff:g>未満(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"残り時間: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>以上(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"スマートフォンのスピーカー"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"接続エラーです。デバイスを OFF にしてから ON に戻してください"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有線オーディオ デバイス"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"ヘルプとフィードバック"</string> + <string name="storage_category" msgid="2287342585424631813">"ストレージ"</string> + <string name="shared_data_title" msgid="1017034836800864953">"共有データ"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"共有データの表示と変更"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"共有データ ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"有効期限: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"データ共有アプリ"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"アプリで説明は提供されていません。"</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"リースの有効期限: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"共有データを削除"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"この共有データを削除してもよろしいですか?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"ユーザーは自分のアプリとコンテンツを持っています"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"あなたのアカウントからアプリやコンテンツへのアクセスを制限できます"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"ユーザー"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"制限付きプロファイル"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"新しいユーザーを追加しますか?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"追加ユーザーを作成して、このデバイスを他のユーザーと共有できます。各ユーザーは各自のスペースを所有して、アプリや壁紙などのカスタマイズを行うことができます。Wi-Fi など、すべてのユーザーに影響するデバイス設定を変更することもできます。\n\n新しいユーザーを追加したら、そのユーザーは自分のスペースをセットアップする必要があります。\n\nすべてのユーザーは他のユーザーに代わってアプリを更新できます。ユーザー補助機能の設定とサービスは新しいユーザーに適用されないことがあります。"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"新しいユーザーを追加したら、そのユーザーは自分のスペースをセットアップする必要があります。\n\nすべてのユーザーは他のユーザーに代わってアプリを更新できます。"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"ユーザーを今すぐセットアップ"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"ユーザーがデバイスを使って各自のスペースをセットアップできるようにします"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"プロファイルを今すぐセットアップしますか?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"今すぐセットアップ"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"後で行う"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"追加"</string> + <string name="user_new_user_name" msgid="60979820612818840">"新しいユーザー"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"新しいプロファイル"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"ユーザー情報"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"プロファイル情報"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"制限付きプロファイルを作成する場合は、アプリや個人データを保護するように画面ロックを設定しておく必要があります。"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"ロックを設定"</string> </resources> diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml index ff7e59e54e11..9d05471fe93e 100644 --- a/packages/SettingsLib/res/values-ka/strings.xml +++ b/packages/SettingsLib/res/values-ka/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP მისამართი და პორტი"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR კოდის სკანირება"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"მოწყობილობის დაწყვილება Wi-Fi-ის მეშვეობით QR კოდის სკანირებით"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"დაუკავშირდით Wi-Fi ქსელს"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, შეცდომების გამართვა, დეველოპერული"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"ხარვეზის შეტყობინების მალსახმობი"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"ელკვების პარამეტრებში ხარვეზის შეტყობინების ღილაკის ჩვენება"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"პროტოანომალია (წითელი-მწვანე)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ტრიტანომალია (ლურჯი-ყვითელი)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ფერის კორექცია"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"ფერთა კორექცია საშუალებას გაძლევთ დაარეგულიროთ, თუ როგორ გამოჩნდება ფერები თქვენს მოწყობილობაზე"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"უკუგებულია <xliff:g id="TITLE">%1$s</xliff:g>-ის მიერ"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"დარჩა დაახლოებით <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"უნდა იმუშაოს დაახლოებით <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"უნდა იმუშაოს დაახლოებით <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g>-მდე"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"ბატარეა შესაძლოა ამოიწუროს <xliff:g id="TIME">%1$s</xliff:g>-ისთვის"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"დარჩენილია <xliff:g id="THRESHOLD">%1$s</xliff:g>-ზე ნაკლები"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"დარჩენილია <xliff:g id="THRESHOLD">%1$s</xliff:g>-ზე ნაკლები დრო (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"დარჩენილია <xliff:g id="TIME_REMAINING">%1$s</xliff:g>-ზე მეტი დრო (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ტელეფონის დინამიკი"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"დაკავშირებისას წარმოიქმნა პრობლემა. გამორთეთ და კვლავ ჩართეთ მოწყობილობა"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"სადენიანი აუდიო მოწყობილობა"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"დახმარება და გამოხმაურება"</string> + <string name="storage_category" msgid="2287342585424631813">"საცავი"</string> + <string name="shared_data_title" msgid="1017034836800864953">"გაზიარებული მონაცემები"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"გაზიარებული მონაცემების ნახვა და შეცვლა"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"გაზიარებულ მონაცემთა ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"ვადა ეწურება <xliff:g id="DATE">%s</xliff:g>-ში"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"აპები, რომლებიც მონაცემებს აზიარებენ"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"აპის მიერ აწერილობა არ არის მოწოდებული."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"დაქირავების ამოწურვის თარიღი: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"გაზიარებული მონაცემების წაშლა"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"ნამდვილად გსურთ ამ გაზიარებული მონაცემების წაშლა?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"მომხმარებლებს აქვთ მათი კუთვნილი აპები და შინაარსი"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"თქვენი ანგარიშიდან შეგიძლიათ შეზღუდოთ აპებზე და კონტენტზე წვდომა"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"მომხმარებელი"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"შეზღუდული პროფილი"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"დაემატოს ახალი მომხმარებელი?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"დამატებითი მომხმარებლების შექმნით, შეგიძლიათ ეს მოწყობილობა სხვებს გაუზიაროთ. ყოველ მომხმარებელს თავისი სივრცე აქვს, რომლის პერსონალიზება შეუძლია საკუთარი აპებით, ფონით და ა.შ. მომხმარებლებს აგრეთვე შეუძლიათ ისეთი პარამეტრების მორგება, როგორიცაა Wi‑Fi, რაც ყველაზე გავრცელდება.\n\nახალი მომხმარებლის დამატების შემდეგ, მომხმარებელმა საკუთარი სივრცე უნდა დააყენოს.\n\nყველა მომხმარებელი შეძლებს აპების ყველა სხვა მომხმარებლისთვის განახლებას. მარტივი წვდომის პარამეტრები/სერვისები შესაძლოა ახალ მომხმარებლებზე არ გავრცელდეს."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"ახალი მომხმარებლის დამატებისას, ამ მომხმარებელს საკუთარი სივრცის შექმნა მოუწევს.\n\nნებისმიერ მომხმარებელს შეუძლია აპები ყველა სხვა მომხმარებლისათვის განაახლოს."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"გსურთ მომხმარებლის პარამეტრების დაყენება?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"დარწმუნდით, რომ პირს შეუძლია მოწყობილობის აღება და საკუთარი სივრცის დაყენება"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"გსურთ დავაყენო პროფილი ახლა?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"დაყენება ახლა"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"ახლა არა"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"დამატება"</string> + <string name="user_new_user_name" msgid="60979820612818840">"ახალი მომხმარებელი"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"ახალი პროფილი"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"მომხმარებლის ინფორმაცია"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"ინფორმაცია პროფილზე"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"შეზღუდული პროფილის შექმნამდე, საკუთარი აპლიკაციებისა და პირადი მონაცემების დასაცავად, უნდა დაბლოკოთ ეკრანი."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"საკეტის დაყენება"</string> </resources> diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml index bb99d3a8e9a4..8d2efece795f 100644 --- a/packages/SettingsLib/res/values-kk/strings.xml +++ b/packages/SettingsLib/res/values-kk/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP мекенжайы және порт"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR кодын сканерлеу"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR кодын сканерлеп, құрылғыны Wi‑Fi арқылы жұптау"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Wi-Fi желісіне қосылыңыз."</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, түзету, әзірлеуші"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Қате туралы хабарлау"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Қуат мәзірінде қате туралы хабарлауға арналған түймені көрсету"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалия (қызыл-жасыл)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалия (көк-сары)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Түсті түзету"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Түсті түзету функциясының көмегімен құрылғыңызда көрсетілетін түстерді реттеуге болады."</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> үстінен басқан"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Шамамен <xliff:g id="TIME_REMAINING">%1$s</xliff:g> қалды"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Шамамен <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) уақытқа жетеді"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Шамамен <xliff:g id="TIME">%1$s</xliff:g> уақытқа жетеді"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> дейін"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Батарея заряды <xliff:g id="TIME">%1$s</xliff:g> сағатқа қарай бітуі мүмкін."</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g> шамасынан аз қалды"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g> шамасынан аз қалды (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> шамасынан көп уақыт қалды (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Телефон динамигі"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Байланыс орнату қатесі шығуып жатыр. Құрылғыны өшіріп, қайта қосыңыз."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Сымды аудио құрылғысы"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Анықтама және пікір"</string> + <string name="storage_category" msgid="2287342585424631813">"Жад"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Ортақ деректер"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Жалпы деректерді көру және өзгерту"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Жалпы деректер идентификаторы: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Аяқталу мерзімі: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Жалпы деректері бар қолданба"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Қолданба ешқандай сипаттама бермеді."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Рұқсаттың аяқталу мерзімі: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Жалпы деректерді жою"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Осы жалпы деректерді шынымен жойғыңыз келе ме?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Пайдаланушылардың өздерінің қолданбалары мен мазмұны болады"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Өз есептік жазбаңыздан қолданбалар мен мазмұнға қол жетімділікті шектеуіңізге болады"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Пайдаланушы"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Шектелген профайл"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Жаңа пайдаланушы қосылсын ба?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Қосымша профильдер жасай отырып, бұл құрылғыны басқалармен ортақ пайдалануға болады. Әр пайдаланушы қолданбаларды, тұсқағаздарды орнатып, профилін өз қалауынша реттей алады. Сондай-ақ барлығы ортақ қолданатын Wi‑Fi сияқты параметрлерді де реттеуге болады.\n\nЖаңа пайдаланушы енгізілгенде, ол өз профилін реттеуі керек болады.\n\nКез келген пайдаланушы барлық басқа пайдаланушылар үшін қолданбаларды жаңарта алады. Арнайы мүмкіндіктерге қатысты параметрлер мен қызметтер жаңа пайдаланушыға өтпейді."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Жаңа пайдаланушыны қосқанда сол адам өз кеңістігін реттеуі керек.\n\nКез келген пайдаланушы барлық басқа пайдаланушылар үшін қолданбаларды жаңарта алады."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Профиль құру керек пе?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Пайдаланушы құрылығыны алып, өз профилін реттеуі керек."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Профайл қазір жасақталсын ба?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Қазір құру"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Қазір емес"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Қосу"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Жаңа пайдаланушы"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Жаңа профайл"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Пайдаланушы туралы ақпарат"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Профильдік ақпарат"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Шектелген профайл жасақтауға дейін қолданбалар мен жеке деректерді қорғау үшін экран бекітпесін тағайындау қажет."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Бекітпе тағайындау"</string> </resources> diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml index b9ede1d398da..de63a8e3e317 100644 --- a/packages/SettingsLib/res/values-km/strings.xml +++ b/packages/SettingsLib/res/values-km/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"អាសយដ្ឋាន IP និងច្រក"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"ស្កេនកូដ QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"ផ្គូផ្គងឧបករណ៍តាមរយៈ Wi‑Fi ដោយស្កេនកូដ QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"សូមភ្ជាប់ទៅបណ្តាញ Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, ជួសជុល, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"ផ្លូវកាត់រាយការណ៍កំហុស"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"បង្ហាញប៊ូតុងក្នុងម៉ឺនុយប៊ូតុងថាមពលសម្រាប់ការទទួលយករបាយការណ៍កំហុស"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (ក្រហមពណ៌បៃតង)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (ពណ៌ខៀវ-លឿង)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ការកែពណ៌"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"ការកែតម្រូវពណ៌អនុញ្ញាតឱ្យអ្នកកែតម្រូវរបៀបបង្ហាញពណ៌នៅលើឧបករណ៍របស់អ្នក"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"បដិសេធដោយ <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"នៅសល់ប្រហែល <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ទៀត"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"គួរតែអាចប្រើបានរហូតដល់ម៉ោងប្រហែល <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"គួរតែអាចប្រើបានរហូតដល់ម៉ោងប្រហែល <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"រហូតដល់ម៉ោង <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"អាចនឹងអស់ថ្មត្រឹមម៉ោង <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"នៅសល់តិចជាង <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"នៅសល់តិចជាង <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"នៅសល់ច្រើនជាង <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ឧបករណ៍បំពងសំឡេងទូរសព្ទ"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"មានបញ្ហាក្នុងការភ្ជាប់។ បិទ រួចបើកឧបករណ៍វិញ"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ឧបករណ៍សំឡេងប្រើខ្សែ"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"ជំនួយ និងមតិកែលម្អ"</string> + <string name="storage_category" msgid="2287342585424631813">"ទំហំផ្ទុក"</string> + <string name="shared_data_title" msgid="1017034836800864953">"ទិន្នន័យដែលបានចែករំលែក"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"មើល និងកែទិន្នន័យដែលបានចែករំលែក"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"លេខសម្គាល់ទិន្នន័យដែលបានចែករំលែក៖ <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"ផុតកំណត់នៅថ្ងៃទី <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"កម្មវិធីដែលកំពុងចែករំលែកទិន្នន័យ"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"គ្មានការពណ៌នាដែលផ្ដល់ដោយកម្មវិធីទេ។"</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"ការជួលផុតកំណត់នៅថ្ងៃទី <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"លុបទិន្នន័យដែលបានចែករំលែក"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"តើអ្នកប្រាកដថាចង់លុបទិន្នន័យដែលបានចែករំលែកនេះដែរទេ?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"អ្នកប្រើមានកម្មវិធី និងមាតិកាផ្ទាល់របស់ពួកគេ"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"អ្នកអាចដាក់កម្រិតចូលដំណើរការកម្មវិធី និងមាតិកាពីគណនីរបស់អ្នក"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"អ្នកប្រើ"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"ប្រវត្តិបានដាក់កម្រិត"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"បញ្ចូលអ្នកប្រើប្រាស់ថ្មី?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"អ្នកអាចចែករំលែកឧបករណ៍នេះជាមួយមនុស្សផ្សេងទៀតបានដោយបង្កើតអ្នកប្រើប្រាស់បន្ថែម។ អ្នកប្រើប្រាស់ម្នាក់ៗមានទំហំផ្ទុកផ្ទាល់ខ្លួនរបស់គេ ដែលពួកគេអាចប្ដូរតាមបំណងសម្រាប់កម្មវិធី ផ្ទាំងរូបភាព និងអ្វីៗផ្សេងទៀត។ អ្នកប្រើប្រាស់ក៏អាចកែសម្រួលការកំណត់ឧបករណ៍ដូចជា Wi‑Fi ដែលប៉ះពាល់ដល់អ្នកប្រើប្រាស់ផ្សេងទៀតផងដែរ។\n\nនៅពេលដែលអ្នកបញ្ចូលអ្នកប្រើប្រាស់ថ្មី បុគ្គលនោះត្រូវតែរៀបចំទំហំផ្ទុករបស់គេ។\n\nអ្នកប្រើប្រាស់ណាក៏អាចដំឡើងកំណែកម្មវិធីសម្រាប់អ្នកប្រើប្រាស់ទាំងអស់ផ្សេងទៀតបានដែរ។ ការកំណត់ភាពងាយស្រួល និងសេវាកម្មមិនអាចផ្ទេរទៅកាន់អ្នកប្រើប្រាស់ថ្មីបានទេ។"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"ពេលអ្នកបញ្ចូលអ្នកប្រើប្រាស់ថ្មី អ្នកប្រើប្រាស់នោះត្រូវកំណត់ទំហំផ្ទាល់របស់គេ។\n\nអ្នកប្រើប្រាស់ណាក៏អាចដំឡើងជំនាន់កម្មវិធីសម្រាប់អ្នកប្រើប្រាស់ផ្សេងទាំងអស់បានដែរ។"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"រៀបចំអ្នកប្រើប្រាស់ឥឡូវនេះ?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"សូមប្រាកដថាអ្នកប្រើប្រាស់នេះអាចយកឧបករណ៍ និងរៀបចំទំហំផ្ទុករបស់គេបាន"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"រៀបចំប្រវត្តិរូបឥឡូវ?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"រៀបចំឥឡូវ"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"កុំអាល"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"បន្ថែម"</string> + <string name="user_new_user_name" msgid="60979820612818840">"អ្នកប្រើថ្មី"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"ប្រវត្តិរូបថ្មី"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"ព័ត៌មានអ្នកប្រើ"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"ព័ត៌មានប្រវត្តិរូប"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"មុនពេលអ្នកអាចបង្កើតប្រវត្តិរូបបានដាក់កម្រិត អ្នកត្រូវរៀបចំការចាក់សោអេក្រង់ ដើម្បីការពារកម្មវិធី និងទិន្នន័យផ្ទាល់ខ្លួនរបស់អ្នក។"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"កំណត់ការចាក់សោ"</string> </resources> diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml index 22c495040524..16ade75f510d 100644 --- a/packages/SettingsLib/res/values-kn/strings.xml +++ b/packages/SettingsLib/res/values-kn/strings.xml @@ -418,8 +418,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"ಪ್ರೊಟನೋಮಲಿ (ಕೆಂಪು-ಹಸಿರು)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ಟ್ರಿಟನೋಮಲಿ (ನೀಲಿ-ಹಳದಿ)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ಬಣ್ಣದ ತಿದ್ದುಪಡಿ"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಬಣ್ಣಗಳನ್ನು ಹೇಗೆ ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಹೊಂದಾಣಿಕೆ ಮಾಡಲು ಬಣ್ಣ ತಿದ್ದುಪಡಿಯು ಅವಕಾಶ ನೀಡುತ್ತದೆ"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ಮೂಲಕ ಅತಿಕ್ರಮಿಸುತ್ತದೆ"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ಸಮಯ ಬಾಕಿ ಉಳಿದಿದೆ"</string> @@ -520,10 +519,18 @@ <skip /> <!-- no translation found for shared_data_summary (5516326713822885652) --> <skip /> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <!-- no translation found for blob_id_text (8680078988996308061) --> <skip /> <!-- no translation found for blob_expires_text (7882727111491739331) --> <skip /> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <!-- no translation found for accessor_info_title (8289823651512477787) --> <skip /> <!-- no translation found for accessor_no_description_text (7510967452505591456) --> @@ -534,4 +541,23 @@ <skip /> <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> <skip /> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"ಬಳಕೆದಾರರು ತಮ್ಮದೇ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ವಿಷಯವನ್ನು ಹೊಂದಿದ್ದಾರೆ"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"ನಿಮ್ಮ ಖಾತೆಯಿಂದ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ವಿಷಯಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ನೀವು ನಿರ್ಬಂಧಿಸಬಹುದು"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"ಬಳಕೆದಾರ"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"ನಿರ್ಬಂಧಿಸಿದ ಪ್ರೊಫೈಲ್"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸುವುದೇ?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"ನೀವು ಹೆಚ್ಚುವರಿ ಬಳಕೆದಾರರನ್ನು ರಚಿಸುವ ಮೂಲಕ ಇತರ ಜನರ ಜೊತೆಗೆ ಈ ಸಾಧನವನ್ನು ಹಂಚಿಕೊಳ್ಳಬಹುದು. ಪ್ರತಿ ಬಳಕೆದಾರರು ತಮ್ಮದೇ ಸ್ಥಳವನ್ನು ಹೊಂದಿರುತ್ತಾರೆ, ಇದರಲ್ಲಿ ಅವರು ತಮ್ಮದೇ ಅಪ್ಲಿಕೇಶನ್ಗಳು, ವಾಲ್ಪೇಪರ್ ಮತ್ತು ಮುಂತಾದವುಗಳ ಮೂಲಕ ಕಸ್ಟಮೈಸ್ ಮಾಡಿಕೊಳ್ಳಬಹುದು. ಎಲ್ಲರ ಮೇಲೂ ಪರಿಣಾಮ ಬೀರುವಂತೆ ವೈ-ಫೈ ರೀತಿಯ ಸಾಧನ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬಳಕೆದಾರರು ಸರಿಹೊಂದಿಸಬಹುದು.\n\nನೀವು ಒಬ್ಬ ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿದಾಗ, ಆ ವ್ಯಕ್ತಿಯು ಅವರ ಸ್ಥಳವನ್ನು ಹೊಂದಿಸಬೇಕಾಗುತ್ತದೆ.\n\nಯಾವುದೇ ಬಳಕೆದಾರರು ಎಲ್ಲಾ ಇತರೆ ಬಳಕೆದಾರರಿಗೆ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಬಹುದು. ಪ್ರವೇಶಿಸುವಿಕೆ ಸೆಟ್ಟಿಂಗ್ಗಳು ಮತ್ತು ಸೇವೆಗಳು ಹೊಸ ಬಳಕೆದಾರರಿಗೆ ವರ್ಗಾವಣೆ ಆಗದಿರಬಹುದು."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"ನೀವು ಒಬ್ಬ ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿದಾಗ, ಆ ವ್ಯಕ್ತಿಯು ಅವರ ಸ್ಥಳವನ್ನು ಸ್ಥಾಪಿಸಬೇಕಾಗುತ್ತದೆ.\n\nಯಾವುದೇ ಬಳಕೆದಾರರು ಎಲ್ಲಾ ಇತರೆ ಬಳಕೆದಾರರಿಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಬಹುದು."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"ಈಗ ಬಳಕೆದಾರರನ್ನು ಸೆಟಪ್ ಮಾಡುವುದೇ?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"ಸಾಧನವನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಮತ್ತು ಅದರ ಸ್ಥಳವನ್ನು ಹೊಂದಿಸಲು ವ್ಯಕ್ತಿಯು ಲಭ್ಯವಿದ್ದಾರೆಯೇ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ಇದೀಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಹೊಂದಿಸುವುದೇ?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"ಇದೀಗ ಹೊಂದಿಸಿ"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"ಈಗಲೇ ಬೇಡ"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"ಸೇರಿಸಿ"</string> + <string name="user_new_user_name" msgid="60979820612818840">"ಹೊಸ ಬಳಕೆದಾರರು"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"ಹೊಸ ಪ್ರೊಫೈಲ್"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"ಬಳಕೆದಾರರ ಮಾಹಿತಿ"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"ಪ್ರೊಫೈಲ್ ಮಾಹಿತಿ"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"ನೀವು ನಿರ್ಬಂಧಿತ ಪ್ರೊಫೈಲ್ ಅನ್ನು ರಚಿಸಬಹುದಾದರ ಮೊದಲು, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ವೈಯಕ್ತಿಕ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಲು ನೀವು ಪರದೆಯ ಲಾಕ್ ಹೊಂದಿಸುವ ಅಗತ್ಯವಿದೆ."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"ಲಾಕ್ ಹೊಂದಿಸಿ"</string> </resources> diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index e0874a34ac1b..4fc865e51e5c 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP 주소 및 포트"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR 코드 스캔"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR 코드를 스캔하여 Wi‑Fi를 통해 기기 페어링"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Wi-Fi 네트워크에 연결하세요."</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, 디버그, 개발자"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"버그 신고 바로가기"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"전원 메뉴에 버그 신고 버튼 표시"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"적색약(적녹)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"청색약(청황)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"색보정"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"색상 보정을 사용하면 기기에 표시되는 색상을 조절할 수 있습니다."</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> 우선 적용됨"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>, <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"남은 시간 약 <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"약 <xliff:g id="TIME">%1$s</xliff:g>까지 사용 가능(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"약 <xliff:g id="TIME">%1$s</xliff:g>까지 사용 가능"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g>까지"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"예상 배터리 종료 시간: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g> 미만 남음"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g> 미만 남음(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> 이상 남음(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"휴대전화 스피커"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"연결 중에 문제가 발생했습니다. 기기를 껐다가 다시 켜 보세요."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"유선 오디오 기기"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"고객센터"</string> + <string name="storage_category" msgid="2287342585424631813">"저장용량"</string> + <string name="shared_data_title" msgid="1017034836800864953">"공유 데이터"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"공유 데이터 보기 및 수정"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"공유 데이터 ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"만료일: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"데이터 공유 앱"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"앱에서 제공한 설명이 없습니다."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"권한 만료일: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"공유 데이터 삭제"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"공유 데이터를 삭제하시겠습니까?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"사용자는 자신의 앱과 콘텐츠를 보유합니다."</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"내 계정의 앱 및 콘텐츠에 대한 액세스를 제한할 수 있습니다."</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"사용자"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"제한된 프로필"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"새 사용자를 추가할까요?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"추가 사용자를 만들어 다른 사용자와 기기를 공유할 수 있습니다. 각 사용자는 앱, 배경화면 등으로 맞춤설정할 수 있는 자신만의 공간을 갖게 됩니다. 또한 모든 사용자에게 영향을 미치는 Wi‑Fi와 같은 기기 설정도 조정할 수 있습니다.\n\n추가된 신규 사용자는 자신의 공간을 설정해야 합니다.\n\n모든 사용자가 앱을 업데이트할 수 있으며, 업데이트는 다른 사용자에게도 적용됩니다. 접근성 설정 및 서비스는 신규 사용자에게 이전되지 않을 수도 있습니다."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"추가된 새로운 사용자는 자신의 공간을 설정해야 합니다.\n\n모든 사용자는 다른 사용자들을 위하여 앱을 업데이트할 수 있습니다."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"지금 사용자를 설정하시겠습니까?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"사용자가 기기에서 자신의 공간을 설정하도록 하세요."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"지금 프로필을 설정하시겠습니까?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"지금 설정"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"나중에"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"추가"</string> + <string name="user_new_user_name" msgid="60979820612818840">"새 사용자"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"새 프로필"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"사용자 정보"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"프로필 정보"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"제한된 프로필을 만들기 전에 화면 잠금을 설정하여 앱과 개인 데이터를 보호해야 합니다."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"잠금 설정"</string> </resources> diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml index 6e28f0bd7b6a..bb6dfaddc765 100644 --- a/packages/SettingsLib/res/values-ky/strings.xml +++ b/packages/SettingsLib/res/values-ky/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP дареги жана Оюкча"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR кодун скандоо"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR кодун скандап, түзмөктү Wi‑Fi аркылуу жупташтырыңыз"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Wi-Fi тармагына туташыңыз"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, мүчүлүштүктөрдү оңдоо, иштеп чыгуу"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Ката жөнүндө кабарлоо"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Менюда ката жөнүндө кабарлоо баскычы көрүнүп турат"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалия (кызыл-жашыл)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалия (көк-сары)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Түсүн тууралоо"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Түстөрдү тууралоо менен, түзмөгүңүздүн экранынын түстөрүн өзгөртө аласыз"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> менен алмаштырылган"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Болжол менен <xliff:g id="TIME_REMAINING">%1$s</xliff:g> калды"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Болжол менен <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) кийин өчөт"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Болжол менен <xliff:g id="TIME">%1$s</xliff:g> кийин өчөт"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> чейин"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Батарея <xliff:g id="TIME">%1$s</xliff:g> отуруп калышы мүмкүн"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g> жетпеген убакыт калды"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g> жетпеген убакыт калды (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ашыгыраак убакыт калды (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Телефондун динамиги"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Туташууда маселе келип чыкты. Түзмөктү өчүрүп, кайра күйгүзүп көрүңүз"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Зымдуу аудио түзмөк"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Жардам/Пикир билдирүү"</string> + <string name="storage_category" msgid="2287342585424631813">"Сактагыч"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Бөлүшүлгөн маалымат"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Бөлүшүлгөн маалыматты көрүп, өзгөртүү"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Бөлүшүлгөн маалыматты идентификатору: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Мөөнөтү <xliff:g id="DATE">%s</xliff:g> бүтөт"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Маалыматты бөлүшкөн колдонмолор"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Колдонмодо эч кандай сүрөттөмө берилген жок."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Ижаранын мөөнөтү <xliff:g id="DATE">%s</xliff:g> бүтөт"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Бөлүшүлгөн маалыматты жок кылуу"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Бул бөлүшүлгөн маалыматты чын эле жок кыласызбы?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Колдонуучулардын өз колдонмолору жана мазмундары болот"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Аккаунтуңуздан колдонмолорго жана мазмундарга кирүүнү чектеп койсоңуз болот"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Колдонуучу"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Чектелген профайл"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Жаңы колдонуучу кошосузбу?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Эгер түзмөгүңүздү дагы бир адам колдонуп жаткан болсо, кошумча профилдерди түзүп коюңуз. Профилдин ээси аны өзү каалагандай жөндөп, тушкагаздарды коюп, керектүү колдонмолорду орнотуп алат. Мындан тышкары, колдонуучулар түзмөктүн Wi‑Fi´ды өчүрүү/күйгүзүү сыяктуу жалпы жөндөөлөрүн өзгөртө алат.\n\nПрофиль түзүлгөндөн кийин, аны жөндөп алуу керек.\n\nЖалпы колдонмолорду баары жаңырта алат, бирок атайын мүмкүнчүлүктөр өз-өзүнчө жөндөлөт."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Жаңы колдонуучу кошулганда, ал өз мейкиндигин түзүп алышы керек.\n\nКолдонмолорду бир колдонуучу жаңыртканда, ал калган бардык колдонуучулар үчүн да жаңырат."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Профилди жөндөйсүзбү?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Өз мейкиндигин жөндөп алышы үчүн түзмөктү колдонуучуга беришиңиз керек."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Профайл азыр түзүлсүнбү?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Азыр түзүү"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Азыр эмес"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Кошуу"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Жаңы колдонуучу"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Жаңы профайл"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Колдонуучу тууралуу"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Профилдин чоо-жайы"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Чектелген профайл түзөөрдөн мурун, сиз өзүңүздүн колдонмолоруңузду жана жеке маалыматтарыңызды коргош үчүн, бөгөттөө көшөгөсүн орнотушуңуз керек болот."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Бөгөт коюу"</string> </resources> diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml index f4077a19e6b6..c39891bb67de 100644 --- a/packages/SettingsLib/res/values-lo/strings.xml +++ b/packages/SettingsLib/res/values-lo/strings.xml @@ -418,8 +418,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (ສີແດງ-ສີຂຽວ)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (ສີຟ້າ-ສີເຫຼືອງ)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ການປັບແຕ່ງສີ"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"ການແກ້ໄຂສີຈະເຮັດໃຫ້ທ່ານສາມາດປັບແຕ່ງການສະແດງຜົນຂອງສີຢູ່ອຸປະກອນຂອງທ່ານໄດ້"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"ຖືກແທນໂດຍ <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"ເຫຼືອອີກປະມານ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -520,10 +519,18 @@ <skip /> <!-- no translation found for shared_data_summary (5516326713822885652) --> <skip /> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <!-- no translation found for blob_id_text (8680078988996308061) --> <skip /> <!-- no translation found for blob_expires_text (7882727111491739331) --> <skip /> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <!-- no translation found for accessor_info_title (8289823651512477787) --> <skip /> <!-- no translation found for accessor_no_description_text (7510967452505591456) --> @@ -534,4 +541,23 @@ <skip /> <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> <skip /> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"ຜູ່ໃຊ້ມີແອັບຯ ແລະເນື້ອຫາຂອງຕົນເອງ"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"ທ່ານສາມາດຈໍາກັດການເຂົ້າເຖິງແອັບຯ ແລະເນື້ອຫາຈາກບັນຊີຂອງທ່ານໄດ້"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"ຜູ້ໃຊ້"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"ໂປຣໄຟລ໌ທີ່ຖືກຈຳກັດ"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"ເພີ່ມຜູ້ໃຊ້ໃໝ່ບໍ?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"ທ່ານສາມາດໃຊ້ອຸປະກອນນີ້ຮ່ວມກັບຄົນອື່ນໄດ້ໂດຍການສ້າງຜູ້ໃຊ້ເພີ່ມເຕີມ. ຜູ້ໃຊ້ແຕ່ລະຄົນຈະມີພື້ນທີ່ຂອງຕົວເອງ, ເຊິ່ງເຂົາເຈົ້າສາມາດປັບແຕ່ງແອັບ, ຮູບພື້ນຫຼັງ ແລະ ອື່ນໆໄດ້. ຜູ້ໃຊ້ຕ່າງໆ ສາມາດປັບແຕ່ງການຕັ້ງຄ່າອຸປະກອນໄດ້ ເຊັ່ນ: Wi‑Fi ທີ່ມີຜົນກະທົບທຸກຄົນ.\n\nເມື່ອທ່ານເພີ່ມຜູ້ໃຊ້ໃໝ່, ບຸກຄົນນັ້ນຈະຕ້ອງຕັ້ງຄ່າພື້ນທີ່ຂອງເຂົາເຈົ້າກ່ອນ.\n\nຜູ້ໃຊ້ໃດກໍຕາມສາມາດອັບເດດແອັບສຳລັບຜູ້ໃຊ້ຄົນອື່ນທັງໝົດໄດ້. ການຕັ້ງຄ່າການຊ່ວຍເຂົ້າເຖິງອາດບໍ່ຖືກໂອນຍ້າຍໄປໃຫ້ຜູ້ໃຊ້ໃໝ່."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"ເມື່ອທ່ານເພີ່ມຜູ້ໃຊ້ໃໝ່, ຜູ້ໃຊ້ນັ້ນຈະຕ້ອງຕັ້ງຄ່າພື້ນທີ່ບ່ອນຈັດເກັບຂໍ້ມູນຂອງລາວ.\n\nຜູ້ໃຊ້ທຸກຄົນສາມາດອັບເດດແອັບຯສຳລັບຜູ້ໃຊ້ຄົນອື່ນທັງໝົດໄດ້."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"ຕັ້ງຄ່າຜູ້ໃຊ້ຕອນນີ້ບໍ?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"ກວດສອບໃຫ້ແນ່ໃຈວ່າບຸກຄົນດັ່ງກ່າວສາມາດຮັບອຸປະກອນ ແລະ ຕັ້ງຄ່າພື້ນທີ່ຂອງພວກເຂົາໄດ້"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ຕັ້ງຄ່າໂປຣໄຟລ໌ດຽວນີ້?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"ຕັ້ງຄ່າດຽວນີ້"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"ບໍ່ແມ່ນຕອນນີ້"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"ເພີ່ມ"</string> + <string name="user_new_user_name" msgid="60979820612818840">"ຜູ້ໃຊ້ໃໝ່"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"ໂປຣໄຟລ໌ໃໝ່"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"ຂໍ້ມູນຜູ້ໃຊ້"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"ຂໍ້ມູນໂປຣໄຟລ໌"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"ກ່ອນທ່ານຈະສ້າງໂປຣໄຟລ໌ທີ່ຖືກຈຳກັດນັ້ນ, ທ່ານຈະຕ້ອງຕັ້ງຄ່າການລັອກໜ້າຈໍ ເພື່ອປ້ອງກັນແອັບຯ ແລະຂໍ້ມູນສ່ວນໂຕຂອງທ່ານກ່ອນ."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"ຕັ້ງການລັອກ"</string> </resources> diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml index 1cb60a2559dc..b64f81800404 100644 --- a/packages/SettingsLib/res/values-lt/strings.xml +++ b/packages/SettingsLib/res/values-lt/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP adresas ir prievadas"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR kodo nuskaitymas"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Susiekite įrenginį „Wi‑Fi“ ryšiu nuskaitydami QR kodą"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Prisijunkite prie „Wi-Fi“ tinklo"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"ADB, derinti, kūrėjas"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Pranešimo apie riktą spartusis klavišas"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Rodyti pranešimo apie riktą mygtuką maitinimo meniu"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (raudona, žalia)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (mėlyna, geltona)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Spalvų taisymas"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Spalvų taisymo funkcija padės koreguoti, kaip spalvos rodomos jūsų įrenginyje"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Nepaisyta naudojant nuostatą „<xliff:g id="TITLE">%1$s</xliff:g>“"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Liko maždaug <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Turėtų išsikrauti maždaug po <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Turėtų išsikrauti maždaug po <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Iki <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Akumuliatoriaus energija gali išsekti <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Liko mažiau nei <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Liko mažiau nei <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Liko daugiau nei <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -514,26 +511,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefono garsiakalbis"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Prisijungiant kilo problema. Išjunkite įrenginį ir vėl jį įjunkite"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Laidinis garso įrenginys"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Pagalba ir atsiliepimai"</string> + <string name="storage_category" msgid="2287342585424631813">"Saugykla"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Bendrinami duomenys"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Peržiūrėti ir keisti bendrinamus duomenis"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Bendrinamų duomenų ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Galiojimas baigiasi <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Duomenis bendrinančios programos"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Programa nepateikė jokio aprašo."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Nuomos laikas baigiasi <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Ištrinti bendrinamus duomenis"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Ar tikrai norite ištrinti šiuos bendrinamus duomenis?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Naudotojai turi savo programas ir turinį"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Galite apriboti prieigą prie paskyros programų ir turinio"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Naudotojas"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Ribotas profilis"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Pridėti naują naudotoją?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Galite bendrinti šį įrenginį su kitais žmonėmis sukūrę papildomų naudotojų. Kiekvienam naudotojui suteikiama atskira erdvė, kurią jie gali tinkinti naudodami programas, ekrano foną ir kt. Be to, naudotojai gali koreguoti įrenginio nustatymus, pvz., „Wi‑Fi“, kurie taikomi visiems.\n\nKai pridedate naują naudotoją, šis asmuo turi nusistatyti savo erdvę.\n\nBet kuris naudotojas gali atnaujinti visų kitų naudotojų programas. Pasiekiamumo nustatymai ir paslaugos gali nebūti perkeltos naujam naudotojui."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Kai pridedate naują naudotoją, šis asmuo turi nustatyti savo vietą.\n\nBet kuris naudotojas gali atnaujinti visų kitų naudotojų programas."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Nustatyti naudotoją dabar?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Įsitikinkite, kad asmuo gali paimti įrenginį ir nustatyti savo vietą"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Nustatyti profilį dabar?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Nustatyti dabar"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ne dabar"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Pridėti"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Naujas naudotojas"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Naujas profilis"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Naudotojo inform."</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profilio informacija"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Prieš kuriant apribotą profilį reikės nustatyti ekrano užraktą, kad apsaugotumėte programas ir asmeninius duomenis."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Nustatyti užraktą"</string> </resources> diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml index 2ae3d6dcdcb9..e1e0a1207937 100644 --- a/packages/SettingsLib/res/values-lv/strings.xml +++ b/packages/SettingsLib/res/values-lv/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP adrese un ports"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR koda skenēšana"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Izveidojiet savienojumu pārī ar ierīci Wi‑Fi tīklā, skenējot QR kodu."</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Lūdzu, izveidojiet savienojumu ar Wi-Fi tīklu"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, atkļūdošana, izstrādātājiem"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Kļūdu pārskata saīsne"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Izslēgšanas izvēlnē rādīt kļūdu pārskata veidošanas pogu"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomālija (sarkans/zaļš)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomālija (zils/dzeltens)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Krāsu korekcija"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Izmantojot krāsu korekciju, varat koriģēt krāsu attēlojumu savā ierīcē"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Jaunā preference: <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> — <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Aptuvenais atlikušais laiks: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Darbosies aptuveni līdz <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Darbosies aptuveni līdz <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Līdz <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Iespējams, akumulators izlādēsies līdz <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Atlikušais laiks — mazāk nekā <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Atlicis mazāk nekā <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Atlicis vairāk nekā <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -513,26 +510,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Tālruņa skaļrunis"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Radās problēma ar savienojuma izveidi. Izslēdziet un atkal ieslēdziet ierīci."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Vadu audioierīce"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Palīdzība un atsauksmes"</string> + <string name="storage_category" msgid="2287342585424631813">"Krātuve"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Koplietotie dati"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Koplietoto datu skatīšana un modificēšana"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Koplietotu datu ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Termiņš beigsies: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Lietotņu koplietošanas dati"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Lietotne nav sniegusi aprakstu."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Nomas termiņš beigsies: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Dzēst koplietotos datus"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Vai tiešām vēlaties dzēst šos koplietotos datus?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Lietotājiem ir savas lietotnes un saturs."</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Varat ierobežot piekļuvi lietotnēm un saturam no sava konta."</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Lietotājs"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Ierobežots profils"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Vai pievienot jaunu lietotāju?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Varat koplietot šo ierīci ar citām personām, izveidojot papildu lietotājus. Katram lietotājam ir sava vide, kas ir pielāgojama, izmantojot lietotnes, fona tapetes u.c. Lietotāji var pielāgot arī ierīces iestatījumus, kas attiecas uz visiem lietotājiem, piemēram, Wi‑Fi.\n\nKad pievienosiet jaunu lietotāju, viņam būs jāizveido sava vide.\n\nIkviens lietotājs var atjaunināt lietotnes citu lietotāju vietā. Pieejamības iestatījumi un pakalpojumi var netikt pārsūtīti jaunajam lietotājam."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Kad pievienosiet jaunu lietotāju, viņam būs jāizveido sava vide.\n\nIkviens lietotājs var atjaunināt lietotnes citu lietotāju vietā."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Iestatīt kontu tūlīt?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Pārliecinieties, ka persona var izmantot ierīci un iestatīt savu vidi."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vai iestatīt profilu tūlīt?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Iestatīt tūlīt"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Vēlāk"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Pievienošana"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Jauns lietotājs"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Jauns profils"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Lietot. informācija"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profila informācija"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Lai varētu izveidot ierobežotu profilu, jums jāiestata ekrāna bloķēšana, kas aizsargās jūsu lietotni un personas datus."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Iestatīt bloķēšanu"</string> </resources> diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index 439cc114eb76..5bfc30cb862e 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-адреса и порта"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Скенирајте QR-код"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Спарете го уредот преку Wi‑Fi со скенирање QR-код"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Поврзете се на Wi-Fi-мрежа"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, отстранува грешка, програмер"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Кратенка за извештај за грешка"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Прикажи копче во менито за вклучување за да се направи извештај за грешка"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалија (слепило за црвена и зелена)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалија (слепило за сина и жолта)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Корекција на бои"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Корекцијата на боите ви овозможува да го приспособите начинот на прикажување на боите на вашиот уред"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Прескокнато според <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Уште околу <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Треба да трае до околу <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Треба да трае до околу <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"До <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Може да снема батерија до <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Уште помалку од <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Уште помалку од <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Уште повеќе од <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Телефонски звучник"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Проблем со поврзување. Исклучете го уредот и повторно вклучете го"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Жичен аудиоуред"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Помош и повратни информации"</string> + <string name="storage_category" msgid="2287342585424631813">"Капацитет"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Споделени податоци"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Прегледајте и изменете ги споделените податоци"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID на споделените податоци: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Истекуваат на <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Апликации што споделуваат податоци"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Апликацијата не дала опис."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Закупот истекува на <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Избриши ги споделените податоци"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Дали сигурно сакате да ги избришете споделениве податоци?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Корисниците имаат свои апликации и содржина"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Може да го ограничите пристапот кон апликациите и содржината од вашата сметка"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Корисник"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Ограничен профил"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Да се додаде нов корисник?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Уредов може да го споделувате со други лица преку создавање дополнителни корисници. Секој корисник има сопствен простор што може да го приспособува со апликации, тапети и слично. Корисниците може да приспособуваат и поставки на уредот, како на пр., Wi‑Fi, што се однесуваат на сите.\n\nКога додавате нов корисник, тоа лице треба да го постави својот простор.\n\nСекој корисник може да ажурира апликации за сите други корисници. Поставките и услугите за пристапност не може да се префрлат на новиот корисник."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Кога додавате нов корисник, тоа лице треба да го постави својот простор.\n\nСекој корисник може да ажурира апликации за сите други корисници."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Ќе поставите корисник сега?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Проверете дали лицето е достапно да го земе уредот и да го постави својот простор"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Постави профил сега?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Постави сега"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Не сега"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Додај"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Нов корисник"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Нов профил"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Информации за корисникот"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Информации за профил"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Пред да може да создадете ограничен профил, треба да поставите заклучување на екранот за да ги заштити вашите апликации и лични податоци."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Постави заклучување"</string> </resources> diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml index 9ac1f8de2431..fbdf682dbba4 100644 --- a/packages/SettingsLib/res/values-ml/strings.xml +++ b/packages/SettingsLib/res/values-ml/strings.xml @@ -418,8 +418,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"പ്രോട്ടാനോമലി (ചുവപ്പ്-പച്ച)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ട്രിട്ടാനോമലി (നീല-മഞ്ഞ)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"വർണ്ണം ക്രമീകരിക്കൽ"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"നിങ്ങളുടെ ഉപകരണത്തിൽ നിറങ്ങൾ എങ്ങനെ പ്രദർശിപ്പിക്കുന്നു എന്നത് ക്രമീകരിക്കാൻ നിറം തിരുത്തൽ അനുവദിക്കുന്നു"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ഉപയോഗിച്ച് അസാധുവാക്കി"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"ഏതാണ്ട് <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ശേഷിക്കുന്നു"</string> @@ -520,10 +519,18 @@ <skip /> <!-- no translation found for shared_data_summary (5516326713822885652) --> <skip /> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <!-- no translation found for blob_id_text (8680078988996308061) --> <skip /> <!-- no translation found for blob_expires_text (7882727111491739331) --> <skip /> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <!-- no translation found for accessor_info_title (8289823651512477787) --> <skip /> <!-- no translation found for accessor_no_description_text (7510967452505591456) --> @@ -534,4 +541,23 @@ <skip /> <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> <skip /> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"ഉപയോക്താക്കൾക്ക് സ്വന്തമായ അപ്ലിക്കേഷനുകളും ഉള്ളടക്കവും ഉണ്ടായിരിക്കും"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"നിങ്ങളുടെ അക്കൗണ്ടിൽ നിന്നും അപ്ലിക്കേഷനുകളിലേക്കും ഉള്ളടക്കത്തിലേക്കുമുള്ള ആക്സസ്സ് നിയന്ത്രിക്കാനാകും"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"ഉപയോക്താവ്"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"നിയന്ത്രിത പ്രൊഫൈൽ"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"പുതിയ ഉപയോക്താവിനെ ചേർക്കണോ?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"കൂടുതൽ ഉപയോക്താക്കളെ സൃഷ്ടിച്ചുകൊണ്ട് ഈ ഉപകരണം മറ്റുള്ളവരുമായി നിങ്ങൾക്ക് പങ്കിടാം. ആപ്പുകളും വാൾപേപ്പറുകളും മറ്റും ഉപയോഗിച്ച് ഇഷ്ടാനുസൃതമാക്കാൻ ഓരോ ഉപയോക്താവിനും സാധിക്കും. വൈഫൈ പോലെ എല്ലാവരെയും ബാധിക്കുന്ന ഉപകരണ ക്രമീകരണവും ഉപയോക്താക്കൾക്ക് ക്രമീകരിക്കാം.\n\nനിങ്ങളൊരു പുതിയ ഉപയോക്താവിനെ ചേർക്കുമ്പോൾ, ആ വ്യക്തിക്ക് സ്വന്തമായ ഇടം സജ്ജീകരിക്കേണ്ടതുണ്ട്.\n\n എല്ലാ ഉപയോക്താക്കൾക്കുമായി ആപ്പുകൾ അപ്ഡേറ്റ് ചെയ്യാൻ ഏതൊരു ഉപയോക്താവിനുമാവും. ഉപയോഗസഹായി ക്രമീകരണവും സേവനങ്ങളും പുതിയ ഉപയോക്താവിന് കൈമാറിയേക്കില്ല."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"നിങ്ങൾ ഒരു പുതിയ ഉപയോക്താവിനെ ചേർക്കുമ്പോൾ, ആ വ്യക്തിയ്ക്ക് അവരുടെ ഇടം സജ്ജീകരിക്കേണ്ടതുണ്ട്.\n\nമറ്റ് എല്ലാ ഉപയോക്താക്കൾക്കുമായി ഏതൊരു ഉപയോക്താവിനും അപ്ലിക്കേഷനുകൾ അപ്ഡേറ്റുചെയ്യാനാവും."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"ഉപയോക്താവിനെ ഇപ്പോൾ സജ്ജീകരിക്കണോ?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"ഉപകരണം എടുത്ത് ഇടം സജ്ജീകരിക്കുന്നതിന് വ്യക്തി ലഭ്യമാണെന്ന് ഉറപ്പാക്കുക"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ഇപ്പോൾ പ്രൊഫൈൽ സജ്ജീകരിക്കണോ?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"ഇപ്പോൾ സജ്ജീകരിക്കുക"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"ഇപ്പോൾ വേണ്ട"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"ചേര്ക്കുക"</string> + <string name="user_new_user_name" msgid="60979820612818840">"പുതിയ ഉപയോക്താവ്"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"പുതിയ പ്രൊഫൈൽ"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"ഉപയോക്തൃവിവരം"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"പ്രൊഫൈൽ വിവരം"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"ഒരു നിയന്ത്രിത പ്രൊഫൈൽ സൃഷ്ടിക്കുന്നതിനുമുമ്പ്, നിങ്ങളുടെ അപ്ലിക്കേഷനുകളും വ്യക്തിഗത ഡാറ്റയും പരിരക്ഷിക്കുന്നതിന് ഒരു സ്ക്രീൻ ലോക്ക് സജ്ജീകരിക്കേണ്ടതുണ്ട്."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"ലോക്ക് സജ്ജീകരിക്കുക"</string> </resources> diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml index 428d22cae2c2..debc85c76619 100644 --- a/packages/SettingsLib/res/values-mn/strings.xml +++ b/packages/SettingsLib/res/values-mn/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP хаяг ба порт"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Хурдан хариу үйлдлийн кодыг скан хийх"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Хурдан хариу үйлдлийн кодыг скан хийж Wi-Fi-р төхөөрөмжийг хослуулна уу"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Wi-Fi сүлжээнд холбогдоно уу"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, дебаг хийх, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Алдаа мэдээлэх товчлол"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Цэсэнд алдааны мэдэгдэл авахад зориулсан товчийг харуулах"</string> @@ -432,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Ойролцоогоор <xliff:g id="TIME">%1$s</xliff:g> хүртэл барих ёстой (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Ойролцоогоор <xliff:g id="TIME">%1$s</xliff:g> хүртэл барих ёстой"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> хүртэл"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Батерейн цэнэг <xliff:g id="TIME">%1$s</xliff:g> гээд дуусаж болзошгүй"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g>-с бага хугацаа үлдсэн"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g>-с бага хугацаа үлдсэн (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>-с их хугацаа үлдсэн (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -511,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Утасны чанга яригч"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Холбогдоход асуудал гарлаа. Төхөөрөмжийг унтраагаад дахин асаана уу"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Утастай аудио төхөөрөмж"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Тусламж, санал хүсэлт"</string> + <string name="storage_category" msgid="2287342585424631813">"Хадгалах сан"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Хуваалцсан өгөгдөл"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Хуваалцсан өгөгдлийг харах, өөрчлөх"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Хуваалцсан өгөгдлийн ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Хугацаа нь <xliff:g id="DATE">%s</xliff:g>-д дуусна"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Аппуудын хуваалцсан өгөгдөл"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Аппаас ямар ч тайлбар өгөөгүй."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Түрээсийн хугацаа <xliff:g id="DATE">%s</xliff:g>-д дуусна"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Хуваалцсан өгөгдлийг устгах уу?"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Та хуваалцсан энэ өгөгдлийг устгахдаа итгэлтэй байна уу?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Хэрэглэгчид өөрийн апп-ууд болон контенттэй"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Та өөрийн бүртгэлийн апп-ууд болон контентэд хандалт хийхийг хязгаарлаж болно"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Хэрэглэгч"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Хязгаарлагдсан профайл"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Шинэ хэрэглэгч нэмэх үү?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Та нэмэлт хэрэглэгч үүсгэх замаар бусад хүмүүстэй энэ төхөөрөмжийг хуваалцаж болно. Хэрэглэгч тус бүр апп, ханын цаас болон бусад зүйлээ өөрчлөх боломжтой хувийн орон зайтай байдаг. Түүнчлэн хэрэглэгч нь бүх хэрэглэгчид нөлөөлөх боломжтой Wi-Fi зэрэг төхөөрөмжийн тохиргоог өөрчлөх боломжтой.\n\nХэрэв та шинэ хэрэглэгч нэмэх бол тухайн хүн хувийн орон зайгаа бүрдүүлэх ёстой.\n\nХэрэглэгч бүр бусад бүх хэрэглэгчийн өмнөөс апп шинэчилж болно. Хүртээмжийн тохиргоо болон үйлчилгээг шинэ хэрэглэгчид шилжүүлэх боломжгүй байж болзошгүй."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Та шинэ хэрэглэгч нэмбэл тухайн хүн өөрийн профайлыг тохируулах шаардлагатай.\n\nАль ч хэрэглэгч бүх хэрэглэгчийн апп-уудыг шинэчлэх боломжтой."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Хэрэглэгчийг одоо тохируулах уу?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Хэрэглэгч төхөөрөмжийг авч өөрийн профайлыг тохируулах боломжтой эсэхийг шалгана уу"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Профайлыг одоо тохируулах уу?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Одоо тохируулах"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Одоо биш"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Нэмэх"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Шинэ хэрэглэгч"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Шинэ профайл"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Хэрэглэгчийн мэдээлэл"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Профайлын мэдээлэл"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Та хязгаарлагдсан профайл үүсгэхийн өмнө өөрийн апп-ууд болон хувийн өгөгдлийг хамгаалахын тулд дэлгэцийн түгжээг тохируулах шаардлагатай."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Түгжээг тохируулах"</string> </resources> diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml index 377fa89d4d6a..e7ae1c10eac9 100644 --- a/packages/SettingsLib/res/values-mr/strings.xml +++ b/packages/SettingsLib/res/values-mr/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"आयपी अॅड्रेस आणि पोर्ट"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR कोड स्कॅन करा"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR कोड स्कॅन करून वाय-फाय वापरून डिव्हाइस पेअर करा"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"कृपया एका वाय-फाय नेटवर्कशी कनेक्ट करा"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"ADB, डीबग, डेव्हलपर"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"बग रिपोर्ट शॉर्टकट"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"बग रिपोर्ट घेण्यासाठी पॉवर मेनूमध्ये एक बटण दर्शवा"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"क्षीण रक्तवर्णांधता (लाल-हिरवा)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"रंग दृष्टी कमतरता (निळा-पिवळा)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"रंग सुधारणा"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"कलर इन्व्हर्जन तुमच्या डिव्हाइसवर रंग कसे प्रदर्शित केले जातात ते अॅडजस्ट करू देते"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> द्वारे अधिलिखित"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"अंदाजे <xliff:g id="TIME_REMAINING">%1$s</xliff:g> बाकी आहे"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"सुमारे <xliff:g id="TIME">%1$s</xliff:g> पर्यंत टिकेल (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"सुमारे <xliff:g id="TIME">%1$s</xliff:g> पर्यंत टिकावी"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> पर्यंत"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g> वाजेपर्यंत बॅटरी संपू शकते"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g> पेक्षा कमी शिल्लक आहे"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g> पेक्षा कमी वेळ शिल्लक आहे (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> पेक्षा जास्त वेळ शिल्लक आहे (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"फोनचा स्पीकर"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"कनेक्ट करण्यात समस्या आली. डिव्हाइस बंद करा आणि नंतर सुरू करा"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"वायर असलेले ऑडिओ डिव्हाइस"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"मदत आणि फीडबॅक"</string> + <string name="storage_category" msgid="2287342585424631813">"स्टोरेज"</string> + <string name="shared_data_title" msgid="1017034836800864953">"शेअर केलेला डेटा"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"शेअर केलेला डेटा पहा आणि सुधारित करा"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"शेअर केलेल्या डेटाचा आयडी: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"<xliff:g id="DATE">%s</xliff:g> रोजी एक्स्पायर होईल"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"डेटा शेअर करणारी ॲप्स"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"अॅपद्वारे कोणतेही वर्णन पुरवलेले नाही."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"भाडेपट्टी <xliff:g id="DATE">%s</xliff:g> रोजी एक्स्पायर होईल"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"शेअर केलेला डेटा हटवा"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"तुम्हाला नक्की हा शेअर केलेला डेटा हटवायचा आहे का?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"वापरकर्त्यांकडे त्यांचे स्वत:चे अॅप्स आणि सामग्री आहे"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"तुम्ही आपल्या खात्यावरुन अॅप्स आणि सामग्रीमध्ये प्रवेश करण्यास प्रतिबंध करु शकता"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"वापरकर्ता"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"प्रतिबंधित प्रोफाईल"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"नवीन वापरकर्ता जोडायचा?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"अतिरिक्त वापरकर्ते तयार करून तुम्ही इतर लोकांसोबत हे डिव्हाइस शेअर करू शकता. प्रत्येक वापरकर्त्यास त्यांची स्वतःची स्पेस असते, जी ते अॅप्स, वॉलपेपर आणि यासारख्या गोष्टींनी कस्टमाइझ करू शकतात. वापरकर्ते प्रत्येकाला प्रभावित करणाऱ्या वाय-फाय सारख्या डिव्हाइस सेटिंग्ज अॅडजस्ट देखील करू शकतात.\n\nतुम्ही एक नवीन वापरकर्ता जोडता, तेव्हा त्या व्यक्तीला त्याची स्पेस सेट अप करण्याची आवश्यकता असते.\n\nकोणताही वापरकर्ता इतर सर्व वापरकर्त्यांसाठी अॅप अपडेट करू शकतो. अॅक्सेसिबिलिटी सेटिंग्ज आणि सेवा नवीन वापरकर्त्याला कदाचित ट्रान्सफर होणार नाहीत."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"तुम्ही एक नवीन वापरकर्ता जोडता तेव्हा, त्या व्यक्तीस त्यांचे स्थान सेट करण्याची आवश्यकता असते.\n\nकोणताही वापरकर्ता इतर सर्व वापरकर्त्यांसाठी अॅप्स अपडेट करू शकतो."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"आता वापरकर्ता सेट करायचा?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"डिव्हाइस घेण्यासाठी आणि त्यांचे स्थान सेट करण्यासाठी व्यक्ती उपलब्ध असल्याची खात्री करा"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"आता प्रोफाईल सेट करायचा?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"आता सेट करा"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"आत्ता नाही"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"जोडा"</string> + <string name="user_new_user_name" msgid="60979820612818840">"नवीन वापरकर्ता"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"नवीन प्रोफाईल"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"वापरकर्ता माहिती"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"प्रोफाइल माहिती"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"तुम्ही एक प्रतिबंधित प्रोफाईल तयार करु शकण्यापूर्वी तुम्हाला तुमचे अॅप्स आणि वैयक्तिक डेटा संरक्षित करण्यासाठी एक स्क्रीन लॉक सेट करण्याची आवश्यकता राहील."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"लॉक सेट करा"</string> </resources> diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml index b8e608f69c37..58cbc488752b 100644 --- a/packages/SettingsLib/res/values-ms/strings.xml +++ b/packages/SettingsLib/res/values-ms/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Alamat IP & Port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Imbas kod QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Gandingkan peranti melalui Wi-Fi dengan mengimbas Kod QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Sila sambungkan kepada rangkaian Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Pintasan laporan pepijat"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Tunjukkan butang dalam menu kuasa untuk mengambil laporan pepijat"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomali (merah-hijau)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomali (biru-kuning)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Pembetulan warna"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Pembetulan warna membolehkan anda melaraskan cara warna dipaparkan pada peranti anda"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Diatasi oleh <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Kira-kira <xliff:g id="TIME_REMAINING">%1$s</xliff:g> lagi"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Seharusnya boleh digunakan hingga kira-kira <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Seharusnya boleh digunakan hingga kira-kira <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Hingga <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Bateri mungkin kehabisan selewat-lewatnya <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Tinggal kurang daripada <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Kurang daripada <xliff:g id="THRESHOLD">%1$s</xliff:g> lagi (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Lebih daripada <xliff:g id="TIME_REMAINING">%1$s</xliff:g> lagi (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Pembesar suara telefon"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Masalah penyambungan. Matikan & hidupkan kembali peranti"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Peranti audio berwayar"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Bantuan & maklum balas"</string> + <string name="storage_category" msgid="2287342585424631813">"Storan"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Data dikongsi"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Lihat dan ubah suai data dikongsi"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID data dikongsi: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Tamat tempoh pada <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Data perkongsian apl"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Tiada perihalan yang diberikan oleh apl."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Pajak tamat tempoh pada <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Padamkan data dikongsi"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Adakah anda pasti mahu memadamkan data dikongsi ini?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Pengguna mempunyai apl dan kandungan mereka sendiri"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Anda boleh menyekat akses kepada apl dan kandungan dari akaun anda"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Pengguna"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Profil terhad"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Tambah pengguna baharu?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Anda boleh berkongsi peranti ini dengan orang lain dengan membuat pengguna tambahan. Setiap pengguna mempunyai ruang mereka sendiri, yang boleh diperibadikan dengan apl, kertas dinding dan sebagainya. Pengguna juga boleh melaraskan tetapan peranti seperti Wi-Fi yang akan memberi kesan kepada semua orang.\n\nApabila anda menambah pengguna baharu, orang itu perlu menyediakan ruang mereka.\n\nMana-mana pengguna boleh mengemas kini apl untuk semua pengguna lain. Tetapan dan perkhidmatan kebolehaksesan tidak boleh dipindahkan kepada pengguna baharu."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Apabila anda menambah pengguna baharu, orang itu perlu menyediakan ruang mereka.\n\nMana-mana pengguna boleh mengemas kini apl untuk semua pengguna lain."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Sediakan pengguna sekarang?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Pastikan orang itu tersedia untuk mengambil peranti dan menyediakan ruangan"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Sediakan profil sekarang?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Sediakan sekarang"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Bukan sekarang"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Tambah"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Pengguna baharu"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Profil baharu"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Maklumat pengguna"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Maklumat profil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Sebelum anda boleh membuat profil yang terhad, anda perlu menyediakan kunci skrin untuk melindungi apl dan data peribadi anda."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Tetapkan kunci"</string> </resources> diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml index 75c4aa17fad1..bc97a9fca0a5 100644 --- a/packages/SettingsLib/res/values-my/strings.xml +++ b/packages/SettingsLib/res/values-my/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"အိုင်ပီ (IP) လိပ်စာနှင့် ပို့တ်"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR ကုဒ်ကို စကင်ဖတ်ပါ"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR ကုဒ် စကင်ဖတ်ခြင်းဖြင့် Wi-Fi ပေါ်တွင် စက်ပစ္စည်းကို အတူတွဲပါ"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Wi-Fi ကွန်ရက်သို့ ချိတ်ဆက်ပါ"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"ချွတ်ယွင်းမှု အစီရင်ခံရန် ဖြတ်လမ်း"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"ချွတ်ယွင်းမှု အစီရင်ခံစာကို တင်ရန် ပါဝါမီနူးမှ ခလုတ်ကို ပြပါ"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (အနီ-အစိမ်း)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (အပြာ-အဝါ)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"အရောင်ပြင်ဆင်မှု"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"အရောင်အမှန်ပြင်ခြင်းက သင့်စက်ပေါ်တွင် အရောင်များပြနေပုံကို ချိန်ညှိခွင့်ပြုသည်"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> မှ ကျော်၍ လုပ်ထားသည်။"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ခန့် ကျန်သည်"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"<xliff:g id="TIME">%1$s</xliff:g> ခန့်အထိ သုံးနိုင်သည် (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"<xliff:g id="TIME">%1$s</xliff:g> ခန့်အထိ သုံးနိုင်သည်"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> အထိ"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g> တွင် ဘက်ထရီကုန်သွားနိုင်သည်"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ခန့်သာ ကျန်တော့သည်"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g> အောက်သာ ကျန်သည် (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ကျော် ကျန်သည် (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ဖုန်းစပီကာ"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"ချိတ်ဆက်ရာတွင် ပြဿနာရှိပါသည်။ စက်ကိုပိတ်ပြီး ပြန်ဖွင့်ပါ"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ကြိုးတပ် အသံစက်ပစ္စည်း"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"အကူအညီနှင့် အကြံပြုချက်"</string> + <string name="storage_category" msgid="2287342585424631813">"သိုလှောင်ခန်း"</string> + <string name="shared_data_title" msgid="1017034836800864953">"မျှဝေထားသော ဒေတာ"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"မျှဝေထားသောဒေတာကို ကြည့်ပြီး မွမ်းမံရန်"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"မျှဝေထားသော ဒေတာ ID- <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"<xliff:g id="DATE">%s</xliff:g> တွင် သက်တမ်းကုန်ပါမည်"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"အက်ပ်များ မျှဝေသောဒေတာ"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"အက်ပ်ကပေးထားသော အကြောင်းအရာ မရှိပါ။"</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"ငှားရမ်းမှု <xliff:g id="DATE">%s</xliff:g> သက်တမ်းကုန်မည်"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"မျှဝေထားသော ဒေတာကို ဖျက်ရန်"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"ဤမျှဝေထားသောဒေတာကို ဖျက်လိုသည်မှာ သေချာသလား။"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"သုံးစွဲသူများတွင် ၎င်းတို့ ကိုယ်ပိုင်အပလီကေးရှင်းများနှင့် မာတိကာရှိသည်။"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"သင့်အကောင့်မှ အပလီကေးရှင်းများ နှင့် ပါရှိချက်များ ရယူသုံးစွဲခွင့်ကို သင်ကန့်သတ်ထိန်းချုပ်နိုင်သည်။"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"အသုံးပြုသူ"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"ကန့်သတ်ထားသော ကိုယ်ရေးအချက်အလက်များ"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"အသုံးပြုသူအသစ် ထည့်မလား။"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"နောက်ထပ် အသုံးပြုသူများ ထည့်သွင်းခြင်းဖြင့် ဤစက်ပစ္စည်းကို အခြားသူများနှင့် မျှဝေအသုံးပြုနိုင်သည်။ အသုံးပြုသူတိုင်းသည် မိမိတို့ကိုယ်ပိုင်နေရာ ရရှိမည်ဖြစ်ပြီး အက်ပ်၊ နောက်ခံပုံနှင့် အခြားအရာတို့ဖြင့် စိတ်ကြိုက်ပြင်ဆင်နိုင်ပါမည်။ အားလုံးကို အကျိုးသက်ရောက်မှု ရှိစေနိုင်သည့် Wi-Fi ကဲ့သို့ ဆက်တင်များကိုလည်း ချိန်ညှိနိုင်ပါမည်။\n\nအသုံးပြုသူအသစ် ထည့်သည့်အခါ ထိုသူသည် မိမိ၏ကိုယ်ပိုင်နေရာကို သတ်မှတ်ရပါမည်။\n\nအသုံးပြုသူ မည်သူမဆို အခြားအသုံးပြုသူများအတွက် အက်ပ်များကို အပ်ဒိတ်လုပ်နိုင်သည်။ အများသုံးစွဲနိုင်မှုဆက်တင်များနှင့် ဝန်ဆောင်မှုများကို အသုံးပြုသူအသစ်ထံသို့ လွှဲပြောင်းပေးမည် မဟုတ်ပါ။"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"သင်က အသုံးပြုသူ အသစ် တစ်ဦးကို ထည့်ပေးလိုက်လျှင်၊ ထိုသူသည် ၎င်း၏ နေရာကို သတ်မှတ်စီစဉ်ရန် လိုအပ်မည်။\n\n အသုံးပြုသူ မည်သူမဆို ကျန်အသုံးပြုသူ အားလုံးတို့အတွက် အက်ပ်များကို အပ်ဒိတ်လုပ်ပေးနိုင်သည်။"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"အသုံးပြုသူကို ယခုသတ်မှတ်မလား။"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"ထိုသူသည် ကိရိယာကိုယူ၍ ၎င်းတို့၏နေရာများကို ယခုသတ်မှတ်နိုင်ရမည်"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ယခု ကိုယ်ရေးအချက်အလက်ကို အစီအမံလုပ်မည်လား?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"ယခု သတ်မှတ်ပါမည်"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"ယခုမလုပ်ပါ"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"ထပ်ထည့်ရန်"</string> + <string name="user_new_user_name" msgid="60979820612818840">"အသုံးပြုသူအသစ်"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"ကိုယ်ရေးအချက်အလက်အသစ်"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"သုံးစွဲသူအကြောင်း"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"ကိုယ်ရေးအချက်အလက်"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"ကန့်သတ်ကိုယ်ရေးအချက်အလက်တစ်ခုကို မပြုလုပ်မီ သင်၏ အပလီကေးရှင်းများနှင့် ကိုယ်ပိုင်အချက်အလက်များကို ကာကွယ်ရန် မျက်နှာပြင်သော့ချခြင်းကို စီမံရန် လိုအပ်လိမ့်မည်"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"သော့ချရန် သတ်မှတ်ပါ"</string> </resources> diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml index 82b327076b4b..cd2a42603f0f 100644 --- a/packages/SettingsLib/res/values-nb/strings.xml +++ b/packages/SettingsLib/res/values-nb/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-adresse og port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skann QR-koden"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Koble til enheten via Wi-Fi ved å skanne en QR-kode"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Koble til et Wi-Fi-nettverk"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, feilsøking, utvikler"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Snarvei til feilrapport"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Vis en knapp for generering av feilrapport i batterimenyen"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomali (rød-grønn)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomali (blå-gul)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Fargekorrigering"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Med fargekorrigering kan du justere hvordan farger vises på enheten din"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Overstyres av <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Omtrent <xliff:g id="TIME_REMAINING">%1$s</xliff:g> gjenstår"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Skal vare til omtrent <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Skal vare til omtrent <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Til <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Batteriet kan gå tomt <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Mindre enn <xliff:g id="THRESHOLD">%1$s</xliff:g> gjenstår"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Mindre enn <xliff:g id="THRESHOLD">%1$s</xliff:g> gjenstår (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Mer enn <xliff:g id="TIME_REMAINING">%1$s</xliff:g> gjenstår (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefonhøyttaler"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Tilkoblingsproblemer. Slå enheten av og på igjen"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Lydenhet med kabel"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Hjelp og tilbakemelding"</string> + <string name="storage_category" msgid="2287342585424631813">"Lagring"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Delte data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Se og endre delte data"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Delte data-ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Utløper <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apper deler data"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Apper gir ingen beskrivelse."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Leieperioden utløper <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Slett delte data"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Er du sikker på at du vil slette disse delte dataene?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Brukere har sine egne apper og eget innhold"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Du kan begrense tilgangen til apper og innhold fra kontoen din"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Bruker"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Begrenset profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Vil du legge til en ny bruker?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Du kan dele denne enheten med andre folk ved å opprette flere brukere. Hver bruker har sin egen plass de kan tilpasse med apper, bakgrunner og annet. Brukere kan også justere enhetsinnstillinger, for eksempel Wi-Fi, som påvirker alle.\n\nNår du legger til en ny bruker, må vedkommende angi innstillinger for plassen sin.\n\nAlle brukere kan oppdatere apper for alle andre brukere. Innstillinger og tjenester for tilgjengelighet overføres kanskje ikke til den nye brukeren."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Når du legger til en ny bruker, må vedkommende konfigurere sitt eget område.\n\nAlle brukere kan oppdatere apper for alle andre brukere."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Konfigurere brukeren nå?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Sørg for at brukeren er tilgjengelig for å konfigurere området sitt på enheten"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vil du konfigurere profilen nå?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Konfigurer nå"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ikke nå"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Legg til"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Ny bruker"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Ny profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Brukerinformasjon"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profilinformasjon"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Før du kan opprette en begrenset profil, må du konfigurere skjermlåsen for å beskytte appene og de personlige dataene dine."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Angi lås"</string> </resources> diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml index c694db91b397..d7a39cc889dc 100644 --- a/packages/SettingsLib/res/values-ne/strings.xml +++ b/packages/SettingsLib/res/values-ne/strings.xml @@ -418,8 +418,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"प्रोटानेमली (रातो, हरियो)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ट्रिटानोमेली (निलो-पंहेलो)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"रङ्ग सुधार"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"रङ सच्याउने सुविधाले तपाईंलाई आफ्नो यन्त्रमा रङहरू कस्ता देखिन्छन् भन्ने कुरा समायोजन गर्न दिन्छ"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> द्वारा अधिरोहित"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"लगभग <xliff:g id="TIME_REMAINING">%1$s</xliff:g> बाँकी छ"</string> @@ -520,10 +519,18 @@ <skip /> <!-- no translation found for shared_data_summary (5516326713822885652) --> <skip /> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <!-- no translation found for blob_id_text (8680078988996308061) --> <skip /> <!-- no translation found for blob_expires_text (7882727111491739331) --> <skip /> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <!-- no translation found for accessor_info_title (8289823651512477787) --> <skip /> <!-- no translation found for accessor_no_description_text (7510967452505591456) --> @@ -534,4 +541,23 @@ <skip /> <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> <skip /> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"प्रयोगकर्ताहरूसँग आफ्नै अनुप्रयोगहरू र सामग्री हुन्छ"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"तपाईं आफ्नो खाताबाट अनुप्रयोगहरू र सामग्रीहरूको पहुँचलाई प्रतिबन्ध गर्न सक्नुहुन्छ"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"प्रयोगकर्ता"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"प्रतिबन्धित प्रोफाइल"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"नयाँ प्रयोगकर्ता थप्ने हो?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"तपाईं थप प्रयोगकर्ताहरू सिर्जना गरेर यो यन्त्र अन्य मान्छेहरूसँग साझा रूपमा प्रयोग गर्न सक्नुहुन्छ। हरेक प्रयोगकर्ताको आफ्नै ठाउँ हुन्छ, जसलाई उनीहरू अनुप्रयोग, वालपेपर इत्यादिमार्फत आफू अनुकूल पार्न सक्छन्। प्रयोगकर्ताहरू सबैजनालाई असर पार्ने Wi-Fi जस्ता यन्त्रका सेटिङहरू पनि समायोजन गर्न सक्छन्।\n\nतपाईंले नयाँ प्रयोगकर्ता थप्दा उक्त व्यक्तिले आफ्नो ठाउँ सेटअप गर्नु पर्ने हुन्छ।\n\nकुनै पनि प्रयोगकर्ताले अन्य सबै प्रयोगकर्ताहरूका लागि अनुप्रयोगहरू अद्यावधिक गर्न सक्छन्। पहुँचसम्बन्धी सेटिङ तथा सेवाहरू नयाँ प्रयोगकर्तामा स्थानान्तरण नहुन सक्छन्।"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"जब तपाईंले नयाँ प्रयोगकर्ता थप्नुहुन्छ, त्यो व्यक्तिले आफ्नो ठाउँ सेट गर्न आवश्यक छ।\n\nकुनै पनि प्रयोगकर्ताले सबै अन्य प्रयोगकर्ताहरूका लागि अनुप्रयोगहरू अद्यावधिक गर्न सक्छन्।"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"अहिले प्रयोगकर्ता सेटअप गर्ने हो?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"यन्त्र लिन र आफ्नो ठाउँ बनाउन व्यक्ति उपलब्ध छ भन्ने कुराको निश्चित गर्नुहोस्"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"अहिले प्रोफाइल सेटअप गर्ने हो?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"अब सेटअप गर्नुहोस्"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"अहिले होइन"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"थप्नुहोस्"</string> + <string name="user_new_user_name" msgid="60979820612818840">"नयाँ प्रयोगकर्ता"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"नयाँ प्रोफाइल"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"प्रयोगकर्ता जानकारी"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"प्रोफाइल जानकारी"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"निषेधयुक्त प्रोफाइल बनाउनु अघि तपाईँको अनुप्रयोग र व्यक्तिगत डेटा सुरक्षा गर्नाका लागि तपाईँले स्क्रिन लक सेटअप गर्नु पर्दछ ।"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"लक सेट गर्नुहोस्"</string> </resources> diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml index 30e1c135c37f..a8dda1821b23 100644 --- a/packages/SettingsLib/res/values-nl/strings.xml +++ b/packages/SettingsLib/res/values-nl/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-adres en poort"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR-code scannen"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Apparaat koppelen via wifi door een QR-code te scannen"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Maak verbinding met een wifi-netwerk"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, foutopsporing, ontwikkeling"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Snelle link naar bugrapport"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Een knop in het voedingsmenu weergeven om een bugrapport te maken"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (rood-groen)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (blauw-geel)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Kleurcorrectie"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Met kleurcorrectie kun je aanpassen hoe kleuren op je apparaat worden weergegeven"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Overschreven door <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Nog ongeveer <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Is nog genoeg tot ongeveer <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Is nog genoeg tot ongeveer <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Tot <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Batterij is waarschijnlijk leeg om <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Nog minder dan <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Nog minder dan <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Nog meer dan <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefoonspeaker"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Probleem bij verbinding maken. Schakel het apparaat uit en weer in."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Bedraad audioapparaat"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Hulp en feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Opslag"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Gedeelde gegevens"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Gedeelde gegevens bekijken en aanpassen"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID gedeelde gegevens: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Vervalt op <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apps die gegevens delen"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Geen beschrijving geleverd door de app."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Toegangsperiode vervalt op <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Gedeelde gegevens verwijderen"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Weet je zeker dat je deze gedeelde gegevens wilt verwijderen?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Gebruikers hebben hun eigen apps en content"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Je kunt toegang tot apps en content vanuit je account beperken"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Gebruiker"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Beperkt profiel"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Nieuwe gebruiker toevoegen?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Je kunt dit apparaat met anderen delen door extra gebruikers te maken. Elke gebruiker heeft een eigen profiel met zelf gekozen apps, achtergrond, enzovoort. Gebruikers kunnen ook apparaatinstellingen aanpassen die van invloed zijn op alle gebruikers, zoals wifi.\n\nWanneer je een nieuwe gebruiker toevoegt, moet die persoon een eigen profiel instellen.\n\nElke gebruiker kan apps updaten voor alle andere gebruikers. Toegankelijkheidsinstellingen en -services worden mogelijk niet overgezet naar de nieuwe gebruiker."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Wanneer je een nieuwe gebruiker toevoegt, moet die persoon zijn eigen profiel instellen.\n\nElke gebruiker kan apps updaten voor alle andere gebruikers."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Gebruiker nu instellen?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Zorg ervoor dat de persoon het apparaat kan overnemen om een profiel in te stellen"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profiel nu instellen?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Nu instellen"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Niet nu"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Toevoegen"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Nieuwe gebruiker"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Nieuw profiel"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Gebruikersgegevens"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profielinfo"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Voordat je een beperkt profiel kunt maken, moet je een schermvergrendeling instellen om je apps en persoonsgegevens te beschermen."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Vergrendeling instellen"</string> </resources> diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml index 9179125521f1..9d93f44f04c1 100644 --- a/packages/SettingsLib/res/values-or/strings.xml +++ b/packages/SettingsLib/res/values-or/strings.xml @@ -418,8 +418,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"ପ୍ରୋଟାନୋମାଲି (ଲାଲ୍-ସବୁଜ)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (ନୀଳ-ହଳଦିଆ)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ରଙ୍ଗ ସଠିକତା"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"ଆପଣଙ୍କ ଡିଭାଇସରେ ରଙ୍ଗଗୁଡ଼ିକ କିପରି ଡିସପ୍ଲେ ହୁଏ ତାହା ଆଡଜଷ୍ଟ କରିବାକୁ ’କଲର୍ କରେକ୍ସନ୍’ ଆପଣଙ୍କୁ ଅନୁମତି ଦିଏ"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ଦ୍ୱାରା ଓଭର୍ରାଇଡ୍ କରାଯାଇଛି"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"ପାଖାପାଖି <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ବଳକା ଅଛି"</string> @@ -520,10 +519,18 @@ <skip /> <!-- no translation found for shared_data_summary (5516326713822885652) --> <skip /> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <!-- no translation found for blob_id_text (8680078988996308061) --> <skip /> <!-- no translation found for blob_expires_text (7882727111491739331) --> <skip /> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <!-- no translation found for accessor_info_title (8289823651512477787) --> <skip /> <!-- no translation found for accessor_no_description_text (7510967452505591456) --> @@ -534,4 +541,23 @@ <skip /> <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> <skip /> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"ଉପଯୋଗକର୍ତ୍ତାମାନଙ୍କ ପାଖରେ ନିଜର ଆପ୍ ଓ କଣ୍ଟେଣ୍ଟ ଅଛି"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"ନିଜ ଆକାଉଣ୍ଟରୁ ଆପ୍ ତଥା କଣ୍ଟେଣ୍ଟକୁ ଆପଣ ଆକ୍ସେସ୍ ରୋକିପାରିବେ"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"ଉପଯୋଗକର୍ତ୍ତା"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"ସୀମିତ ସୁବିଧା ଥିବା ପ୍ରୋଫାଇଲ୍"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"ନୂତନ ୟୁଜର୍ ଯୋଡ଼ିବେ?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"ଅତିରିକ୍ତ ୟୁଜର୍ ତିଆରିକରି ଆପଣ ଏହି ଡିଭାଇସ୍କୁ ଅନ୍ୟ ଲୋକମାନଙ୍କ ସହିତ ସେୟାର୍ କରିପାରିବେ। ପ୍ରତ୍ୟେକ ୟୁଜର୍ଙ୍କର ନିଜର ସ୍ପେସ୍ ଅଛି ଯାହାକୁ ସେମାନେ ଆପ୍, ୱାଲପେପର୍ ଓ ଏପରି ଅନେକ ସହିତ କଷ୍ଟମାଇଜ୍ କରିପାରିବେ। ୟୁଜର୍ ୱାଇ-ଫାଇ ଭଳି ଡିଭାଇସ୍ ସେଟିଙ୍ଗକୁ ମଧ୍ୟ ଆଡଜଷ୍ଟ କରିପାରିବେ ଯାହା ସମସ୍ତଙ୍କୁ ପ୍ରଭାବିତ କରିଥାଏ। \n\nଯେତେବେଳେ ଆପଣ ଗୋଟିଏ ନୂଆ ୟୁଜର୍ଙ୍କୁ ଯୋଡ଼ିବେ ସେତେବେଳେ ସେହି ବ୍ୟକ୍ତି ଜଣଙ୍କୁ ନିଜର ସ୍ପେସ୍କୁ ସେଟଅପ୍ କରିବାକୁ ପଡ଼ିବ। \n\nଅନ୍ୟ ୟୁଜରଙ୍କ ପାଇଁ ଯେକୌଣସି ୟୁଜର୍ ଆପ୍କୁ ଅପଡେଟ୍ କରିପାରିବେ। ଆକ୍ସେସ୍ କରିବା ପାଇଁ ସେଟିଙ୍ଗ ଏବଂ ସେବା ନୂଆ ୟୁଜର୍ଙ୍କୁ ଟ୍ରନ୍ସଫର୍ ନହୋଇପାରେ।"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"ଜଣେ ନୂଆ ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ଯୋଡ଼ିବାବେଳେ, ସେହି ବ୍ୟକ୍ତିଙ୍କୁ ସ୍ଥାନ ସେଟ୍ କରିବାକୁ ପଡ଼ିବ।\n\nଅନ୍ୟ ସମସ୍ତ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ପାଇଁ ଯେକୌଣସି ଉପଯୋଗକର୍ତ୍ତା ଆପ୍ଗୁଡ଼ିକୁ ଅପ୍ଡେଟ୍ କରିପାରିବେ।"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"ଏବେ ୟୁଜର୍ଙ୍କୁ ସେଟ୍ କରିବେ?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"ସୁନିଶ୍ଚିତ କରନ୍ତୁ ଯେ, ବ୍ୟକ୍ତି ଜଣକ ଡିଭାଇସ୍ ଓ ନିଜର ସ୍ଥାନ ସେଟ୍ କରିବା ପାଇଁ ଉପଲବ୍ଧ ଅଛନ୍ତି।"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ପ୍ରୋଫାଇଲ୍କୁ ଏବେ ସେଟ୍ କରିବେ?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"ଏବେ ସେଟ୍ କରନ୍ତୁ"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"ଏବେ ନୁହେଁଁ"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"ଯୋଡନ୍ତୁ"</string> + <string name="user_new_user_name" msgid="60979820612818840">"ନୂଆ ୟୁଜର୍"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"ନୂଆ ପ୍ରୋଫାଇଲ୍"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"ଉପଯୋଗକର୍ତ୍ତା ସୂଚନା"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"ପ୍ରୋଫାଇଲ୍ ସୂଚନା"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"ପ୍ରତିବନ୍ଧିତ ପ୍ରୋଫାଇଲ୍ ତିଆରି କରିବାବେଳେ, ନିଜ ଆପ୍ ଓ ବ୍ୟକ୍ତିଗତ ତଥ୍ୟର ସୁରକ୍ଷା ପାଇଁ ଏକ ସ୍କ୍ରୀନ୍ ଲକ୍ ସେଟ୍ କରନ୍ତୁ।"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"ଲକ୍ ସେଟ୍ କରନ୍ତୁ"</string> </resources> diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index 34a836f2b93c..6ed8d1b93654 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -418,8 +418,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (ਲਾਲ-ਹਰਾ)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (ਨੀਲਾ-ਪੀਲਾ)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ਰੰਗ ਸੁਧਾਈ"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"ਰੰਗ ਸੁਧਾਈ ਨਾਲ ਤੁਹਾਨੂੰ ਆਪਣੇ ਡੀਵਾਈਸ \'ਤੇ ਰੰਗਾਂ ਦੇ ਪ੍ਰਦਰਸ਼ਿਤ ਹੋਣ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰਨ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ਦੁਆਰਾ ਓਵਰਰਾਈਡ ਕੀਤਾ"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"ਲਗਭਗ <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ਬਾਕੀ"</string> @@ -520,10 +519,18 @@ <skip /> <!-- no translation found for shared_data_summary (5516326713822885652) --> <skip /> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <!-- no translation found for blob_id_text (8680078988996308061) --> <skip /> <!-- no translation found for blob_expires_text (7882727111491739331) --> <skip /> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <!-- no translation found for accessor_info_title (8289823651512477787) --> <skip /> <!-- no translation found for accessor_no_description_text (7510967452505591456) --> @@ -534,4 +541,23 @@ <skip /> <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> <skip /> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"ਉਪਭੋਗਤਾਵਾਂ ਕੋਲ ਉਹਨਾਂ ਦੀਆਂ ਆਪਣੀਆਂ ਐਪਾਂ ਅਤੇ ਸਮੱਗਰੀ ਹੁੰਦੀਆਂ ਹਨ"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"ਤੁਸੀਂ ਆਪਣੇ ਖਾਤੇ ਤੋਂ ਐਪਾਂ ਅਤੇ ਸਮੱਗਰੀ ਲਈ ਪਹੁੰਚ ਪ੍ਰਤਿਬੰਧ ਕਰ ਸਕਦੇ ਹੋ"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"ਵਰਤੋਂਕਾਰ"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"ਪ੍ਰਤਿਬੰਧਿਤ ਪ੍ਰੋਫਾਈਲ"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"ਕੀ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"ਤੁਸੀਂ ਵਾਧੂ ਵਰਤੋਂਕਾਰ ਬਣਾ ਕੇ ਹੋਰਾਂ ਲੋਕਾਂ ਨਾਲ ਇਹ ਡੀਵਾਈਸ ਸਾਂਝਾ ਕਰ ਸਕਦੇ ਹੋ। ਹਰੇਕ ਵਰਤੋਂਕਾਰ ਦੀ ਆਪਣੀ ਖੁਦ ਦੀ ਜਗ੍ਹਾ ਹੁੰਦੀ ਹੈ, ਜਿਸਨੂੰ ਉਹ ਐਪਾਂ ਅਤੇ ਵਾਲਪੇਪਰ ਆਦਿ ਨਾਲ ਵਿਉਂਤਬੱਧ ਕਰ ਸਕਦੇ ਹਨ। ਵਰਤੋਂਕਾਰ ਡੀਵਾਈਸ ਸੈਟਿੰਗਾਂ ਵੀ ਵਿਵਸਥਿਤ ਕਰ ਸਕਦੇ ਹਨ ਜਿਵੇਂ ਵਾਈ‑ਫਾਈ ਜੋ ਹਰੇਕ \'ਤੇ ਅਸਰ ਪਾਉਂਦੀ ਹੈ।\n\nਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਦੇ ਹੋ, ਉਸ ਵਿਅਕਤੀ ਨੂੰ ਆਪਣੀ ਜਗ੍ਹਾ ਸੈੱਟ ਅੱਪ ਕਰਨੀ ਪੈਂਦੀ ਹੈ।\n\nਕੋਈ ਵੀ ਵਰਤੋਂਕਾਰ ਬਾਕੀ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ ਐਪਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਸਕਦਾ ਹੈ। ਸ਼ਾਇਦ ਪਹੁੰਚਯੋਗਤਾ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਨੂੰ ਕਿਸੇ ਨਵੇਂ ਵਰਤੋਂਕਾਰ ਨੂੰ ਟ੍ਰਾਂਸਫਰ ਨਾ ਕੀਤਾ ਜਾ ਸਕੇ।"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਦੇ ਹੋ, ਉਸ ਵਿਅਕਤੀ ਨੂੰ ਆਪਣੀ ਜਗ੍ਹਾ ਸੈੱਟਅੱਪ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।\n\nਕੋਈ ਵੀ ਵਰਤੋਂਕਾਰ ਹੋਰ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ ਐਪਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਸਕਦਾ ਹੈ।"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"ਕੀ ਹੁਣ ਵਰਤੋਂਕਾਰ ਸੈੱਟ ਅੱਪ ਕਰਨਾ ਹੈ?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਵਿਅਕਤੀ ਡੀਵਾਈਸ ਵਰਤਣ ਅਤੇ ਆਪਣੀ ਜਗ੍ਹਾ ਦੇ ਸੈੱਟ ਅੱਪ ਲਈ ਉਪਲਬਧ ਹੈ"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ਕੀ ਹੁਣ ਪ੍ਰੋਫਾਈਲ ਸੈੱਟ ਅੱਪ ਕਰਨੀ ਹੈ?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"ਹੁਣੇ ਸੈੱਟ ਅੱਪ ਕਰੋ"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"ਅਜੇ ਨਹੀਂ"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"ਸ਼ਾਮਲ ਕਰੋ"</string> + <string name="user_new_user_name" msgid="60979820612818840">"ਨਵਾਂ ਵਰਤੋਂਕਾਰ"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"ਨਵੀਂ ਪ੍ਰੋਫਾਈਲ"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"ਉਪਭੋਗਤਾ ਜਾਣਕਾਰੀ"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"ਪ੍ਰੋਫਾਈਲ ਜਾਣਕਾਰੀ"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"ਇਸਤੋਂ ਪਹਿਲਾਂ ਕਿ ਤੁਸੀਂ ਇੱਕ ਪ੍ਰਤਿਬੰਧਿਤ ਪ੍ਰੋਫਾਈਲ ਬਣਾ ਸਕੋ, ਤੁਹਾਨੂੰ ਆਪਣੀਆਂ ਐਪਾਂ ਅਤੇ ਨਿੱਜੀ ਡਾਟਾ ਸੁਰੱਖਿਅਤ ਕਰਨ ਲਈ ਇੱਕ ਸਕ੍ਰੀਨ ਲਾਕ ਸੈੱਟ ਅੱਪ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">" ਲਾਕ ਸੈੱਟ ਕਰੋ"</string> </resources> diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index 193b30707ac2..cfd0d7002f69 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Adres IP i port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Zeskanuj kod QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Sparuj urządzenia przez Wi-Fi, skanując kod QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Połącz się z siecią Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Skrót do zgłoszenia błędu"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Pokaż w menu zasilania przycisk zgłaszania błędu"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (czerwony-zielony)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (niebieski-żółty)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekcja kolorów"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Korekcja kolorów pozwala na dostosowanie sposobu wyświetlania kolorów na urządzeniu"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Nadpisana przez <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Jeszcze około <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Powinno wystarczyć do <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Powinno wystarczyć do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Bateria może się wyczerpać do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Pozostało mniej niż <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Pozostało mniej niż <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Pozostało ponad: <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -514,26 +511,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Głośnik telefonu"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem z połączeniem. Wyłącz i ponownie włącz urządzenie"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Przewodowe urządzenie audio"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Pomoc i opinie"</string> + <string name="storage_category" msgid="2287342585424631813">"Pamięć"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Udostępniane dane"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Wyświetl i zmień udostępniane dane"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Identyfikator udostępnianych danych: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Wygasają: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplikacje, które udostępniają dane"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Aplikacja nie zapewnia opisu."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Dzierżawa wygasa: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Usuń udostępniane dane"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Czy na pewno chcesz usunąć te udostępniane dane?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Użytkownicy mają własne aplikacje i treści"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Możesz ograniczyć dostęp do aplikacji i zawartości z poziomu swojego konta"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Użytkownik"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Profil ograniczony"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Dodać nowego użytkownika?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Z tego urządzenia możesz korzystać wraz z innymi osobami, dodając na nim konta użytkowników. Każdy użytkownik ma własne miejsce na swoje aplikacje, tapety i inne dane. Może też zmieniać ustawienia, które wpływają na wszystkich użytkowników urządzenia (np. Wi‑Fi).\n\nGdy dodasz nowego użytkownika, musi on skonfigurować swoje miejsce na dane.\n\nKażdy użytkownik może aktualizować aplikacje w imieniu wszystkich pozostałych użytkowników. Ułatwienia dostępu i usługi mogą nie zostać przeniesione na konto nowego użytkownika."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Gdy dodasz nowego użytkownika, musi on skonfigurować swoją przestrzeń.\n\nKażdy użytkownik może aktualizować aplikacje wszystkich innych użytkowników."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Skonfigurować ustawienia dla użytkownika?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Upewnij się, że ta osoba jest w pobliżu i może skonfigurować swój profil."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Skonfigurować teraz profil?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Skonfiguruj"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Nie teraz"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Dodaj"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Nowy użytkownik"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Nowy profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Użytkownik – informacje"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Informacje o profilu"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Zanim utworzysz profil z ograniczeniami, musisz skonfigurować ekran blokady, by chronić aplikacje i osobiste dane."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Ustaw blokadę"</string> </resources> diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml index a083a03ab804..59f6bab75a6d 100644 --- a/packages/SettingsLib/res/values-pt-rBR/strings.xml +++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Endereço IP e porta"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Ler código QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Parear dispositivo na rede Wi‑Fi fazendo a leitura do código QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Conecte-se a uma rede Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Atalho para relatório de bugs"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostrar um botão para gerar relatórios de bugs no menu do botão liga/desliga"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (vermelho-verde)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (azul-amarelo)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correção de cor"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"A correção de cor permite ajustar como as cores são exibidas no dispositivo"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Substituído por <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Tempo restante aproximado: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Deve durar até cerca de <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Deve durar até cerca de <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Até <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"A bateria pode acabar neste horário: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> restante(s)"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> restante(s) (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Mais de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> restante(s) (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Alto-falante do smartphone"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ocorreu um problema na conexão. Desligue o dispositivo e ligue-o novamente"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de áudio com fio"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Ajuda e feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Armazenamento"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Dados compartilhados"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Ver e modificar dados compartilhados"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Código dos dados compartilhados: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Expira em <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apps que compartilham dados"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Nenhuma descrição fornecida pelo app."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"O lease expira em <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Excluir dados compartilhados"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Você quer mesmo excluir esses dados compartilhados?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Usuários padrão têm seus próprios apps e conteúdo"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"É possível restringir o acesso a apps e conteúdo a partir de sua conta"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Usuário"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Perfil restrito"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Adicionar novo usuário?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Você pode compartilhar este dispositivo com outras pessoas, adicionando usuários. Cada usuário tem o próprio espaço, que pode ser personalizado com apps, planos de fundo, etc. Os usuários também podem ajustar as configurações do dispositivo, como o Wi‑Fi, que afetam a todos.\n\nQuando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para todos os outros. Serviços e configurações de acessibilidade podem não ser transferidos para novos usuários."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Quando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para os demais usuários."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o usuário agora?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Certifique-se de que a pessoa está disponível para acessar o dispositivo e fazer as próprias configurações"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar perfil agora?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configurar agora"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Agora não"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Adicionar"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Novo usuário"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Novo perfil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Dados do usuário"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Informações do perfil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Antes de criar um perfil restrito, configure um bloqueio de tela para proteger seus apps e seus dados pessoais."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Definir bloqueio"</string> </resources> diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml index 7dd4dfbe78c6..b946f7adad42 100644 --- a/packages/SettingsLib/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Porta e endereço IP"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Leia o código QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Sincronize o dispositivo através de Wi-Fi ao ler um código QR."</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Estabeleça ligação a uma rede Wi-Fi."</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, depurar, programador"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Atalho para relatório de erro"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostrar um botão no menu ligar/desligar para criar um relatório de erro"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (vermelho-verde)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (azul-amarelo)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correção da cor"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"A correção da cor permite-lhe ajustar a forma como as cores são apresentadas no seu dispositivo."</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Substituído por <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Resta(m) cerca de <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Deve durar até cerca da(s) <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Deve durar até cerca da(s) <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Até à(s) <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Poderá ficar sem bateria à(s) <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Resta(m) menos de <xliff:g id="THRESHOLD">%1$s</xliff:g>."</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Resta(m) menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)."</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Resta(m) mais de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)."</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altifalante do telemóvel"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problema ao ligar. Desligue e volte a ligar o dispositivo."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de áudio com fios"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Ajuda e comentários"</string> + <string name="storage_category" msgid="2287342585424631813">"Armazenamento"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Dados partilhados"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Ver e modificar dados partilhados"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID de dados partilhados: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Expira a <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apps a partilhar dados"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Nenhuma descrição fornecida pela app."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"A alocação expira a <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Eliminar dados partilhados"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Tem a certeza de que pretende eliminar estes dados partilhados?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Os utilizadores têm as suas próprias aplicações e conteúdos"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Pode restringir o acesso às aplicações e conteúdos da sua conta"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Utilizador"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Perfil restrito"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Adicionar novo utilizador?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Pode partilhar este dispositivo com outras pessoas ao criar utilizadores adicionais. Cada utilizador possui o seu próprio espaço, que pode ser personalizado com aplicações, imagens de fundo, etc. Os utilizadores também podem ajustar as definições do dispositivo, como o Wi‑Fi, que afetam os restantes utilizadores.\n\nAo adicionar um novo utilizador, essa pessoa tem de configurar o respetivo espaço.\n\nQualquer utilizador pode atualizar aplicações para todos os outros utilizadores. Os serviços e as definições de acessibilidade podem não ser transferidos para o novo utilizador."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Ao adicionar um novo utilizador, essa pessoa tem de configurar o respetivo espaço.\n\nQualquer utilizador pode atualizar aplicações para todos os outros utilizadores."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o utilizador agora?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Certifique-se de que a pessoa está disponível para levar o dispositivo e configurar o seu espaço"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar perfil agora?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configurar agora"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Agora não"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Adicionar"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Novo utilizador"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Novo perfil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Info. utilizador"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Informação do perfil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Antes de poder criar um perfil restrito, tem de configurar um bloqueio de ecrã para proteger as suas aplicações e dados pessoais."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Definir bloqueio"</string> </resources> diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index a083a03ab804..59f6bab75a6d 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Endereço IP e porta"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Ler código QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Parear dispositivo na rede Wi‑Fi fazendo a leitura do código QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Conecte-se a uma rede Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Atalho para relatório de bugs"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostrar um botão para gerar relatórios de bugs no menu do botão liga/desliga"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (vermelho-verde)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (azul-amarelo)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correção de cor"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"A correção de cor permite ajustar como as cores são exibidas no dispositivo"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Substituído por <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Tempo restante aproximado: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Deve durar até cerca de <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Deve durar até cerca de <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Até <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"A bateria pode acabar neste horário: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> restante(s)"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> restante(s) (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Mais de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> restante(s) (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Alto-falante do smartphone"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ocorreu um problema na conexão. Desligue o dispositivo e ligue-o novamente"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de áudio com fio"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Ajuda e feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Armazenamento"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Dados compartilhados"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Ver e modificar dados compartilhados"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Código dos dados compartilhados: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Expira em <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Apps que compartilham dados"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Nenhuma descrição fornecida pelo app."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"O lease expira em <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Excluir dados compartilhados"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Você quer mesmo excluir esses dados compartilhados?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Usuários padrão têm seus próprios apps e conteúdo"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"É possível restringir o acesso a apps e conteúdo a partir de sua conta"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Usuário"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Perfil restrito"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Adicionar novo usuário?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Você pode compartilhar este dispositivo com outras pessoas, adicionando usuários. Cada usuário tem o próprio espaço, que pode ser personalizado com apps, planos de fundo, etc. Os usuários também podem ajustar as configurações do dispositivo, como o Wi‑Fi, que afetam a todos.\n\nQuando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para todos os outros. Serviços e configurações de acessibilidade podem não ser transferidos para novos usuários."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Quando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para os demais usuários."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o usuário agora?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Certifique-se de que a pessoa está disponível para acessar o dispositivo e fazer as próprias configurações"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar perfil agora?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configurar agora"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Agora não"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Adicionar"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Novo usuário"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Novo perfil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Dados do usuário"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Informações do perfil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Antes de criar um perfil restrito, configure um bloqueio de tela para proteger seus apps e seus dados pessoais."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Definir bloqueio"</string> </resources> diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml index 1d68fb7a798a..55881b932e10 100644 --- a/packages/SettingsLib/res/values-ro/strings.xml +++ b/packages/SettingsLib/res/values-ro/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Adresa IP și portul"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Scanați codul QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Asociați dispozitivul prin Wi-Fi scanând un cod QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Conectați-vă la o rețea Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, remedierea erorilor, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Comandă rapidă pentru raportul de erori"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Afișați un buton în meniul de pornire pentru a realiza un raport de erori"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (roșu-verde)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (albastru-galben)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Corecția culorii"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Folosind corecția culorii, puteți ajusta modul în care se afișează culorile pe dispozitiv"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Valoare înlocuită de <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Timp aproximativ rămas: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Ar trebui să reziste până la <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Ar trebui să reziste până la <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Până la <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Bateria se poate descărca până la <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"a mai rămas mai puțin de <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"A mai rămas mai puțin de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"A mai rămas mai mult de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -513,26 +510,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Difuzorul telefonului"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problemă la conectare. Opriți și reporniți dispozitivul."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispozitiv audio cu fir"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Ajutor și feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Stocare"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Date la care se permite accesul"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Vedeți și modificați datele la care se permite accesul"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID-ul datelor la care se permite accesul: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Expiră pe <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplicații care permit accesul la date"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Aplicația nu oferă nicio descriere."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Închirierea expiră pe <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Ștergeți datele la care se permite accesul"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Sigur ștergeți aceste date la care se permite accesul?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Utilizatorii dețin aplicații și materiale proprii"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Puteți restricționa accesul la aplicații și la conținut din contul dvs."</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Utilizator"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Profil limitat"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Adăugați un utilizator nou?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Puteți să permiteți accesul la acest dispozitiv altor persoane creând utilizatori suplimentari. Fiecare utilizator are propriul spațiu, pe care îl poate personaliza cu aplicații, imagini de fundal etc. De asemenea, utilizatorii pot ajusta setările dispozitivului, cum ar fi setările pentru Wi-Fi, care îi afectează pe toți ceilalți utilizatori.\n\nDupă ce adăugați un utilizator nou, acesta trebuie să-și configureze spațiul.\n\nOricare dintre utilizatori poate actualiza aplicațiile pentru toți ceilalți utilizatori. Este posibil ca setările de accesibilitate și serviciile să nu se transfere la noul utilizator."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Când adăugați un utilizator nou, acesta trebuie să-și configureze spațiul.\n\nOrice utilizator poate actualiza aplicațiile pentru toți ceilalți utilizatori."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurați utilizatorul acum?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Asigurați-vă că utilizatorul are posibilitatea de a prelua dispozitivul și de a-și configura spațiul"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurați profilul acum?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configurați acum"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Nu acum"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Adăugați"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Utilizator nou"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Profil nou"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Info. utilizator"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Informații de profil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Înainte de a putea crea un profil cu permisiuni limitate, va trebui să configurați blocarea ecranului pentru a vă proteja aplicațiile și datele personale."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Configurați blocarea"</string> </resources> diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml index 6857dd73576b..88e94a53cdfb 100644 --- a/packages/SettingsLib/res/values-ru/strings.xml +++ b/packages/SettingsLib/res/values-ru/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-адрес и порт"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Сканировать QR-код"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Подключение устройства через Wi‑Fi с использованием QR-кода"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Подключите устройство к сети Wi-Fi."</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, отладка, разработчик"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Отчет об ошибке"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Показывать в меню кнопки питания пункт для отправки отчета об ошибке"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалия (красный/зеленый)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалия (синий/желтый)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Коррекция цвета"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Коррекция цвета позволяет изменить настройки цветопередачи на экране устройства."</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Новая настройка: <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"Уровень заряда – <xliff:g id="PERCENTAGE">%1$s</xliff:g>. <xliff:g id="TIME_STRING">%2$s</xliff:g>."</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Заряда хватит примерно на <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Заряда (<xliff:g id="LEVEL">%2$s</xliff:g>) хватит примерно до <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Заряда хватит примерно до <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"До <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Батарея может разрядиться к <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Осталось менее <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Уровень заряда батареи: <xliff:g id="LEVEL">%2$s</xliff:g> (хватит менее чем на <xliff:g id="THRESHOLD">%1$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Уровень заряда батареи: <xliff:g id="LEVEL">%2$s</xliff:g> (хватит более чем на <xliff:g id="TIME_REMAINING">%1$s</xliff:g>)"</string> @@ -514,26 +511,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Встроенный динамик"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ошибка подключения. Выключите и снова включите устройство."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Проводное аудиоустройство"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Справка/отзыв"</string> + <string name="storage_category" msgid="2287342585424631813">"Хранилище"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Общие данные"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Просмотр и изменение общих данных"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Идентификатор общих данных: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Срок действия истекает <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Приложения с общими данными"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Описание не предоставлено приложением."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Разрешение истекает <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Удалить общие данные"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Удалить общие данные?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"У пользователей есть свои приложения и контент"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Вы можете ограничить доступ к приложениям и контенту из вашего аккаунта"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Добавить пользователя"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Профиль с огр. доступом"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Добавить пользователя?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Если этим устройством пользуются сразу несколько человек, для каждого из них можно создать отдельный профиль – практически собственное пространство со своими приложениями, обоями и т. д. При этом из профиля можно поменять и настройки устройства, общие для всех, например выбрать сеть Wi-Fi.\n\nКогда вы добавляете нового пользователя, ему нужно настроить свой профиль.\n\nОбновлять общие приложения может любой пользователь, однако специальные возможности настраиваются индивидуально."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"После создания профиля его потребуется настроить.\n\nЛюбой пользователь устройства может обновлять приложения для всех аккаунтов."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Настроить профиль?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Вам потребуется передать устройство пользователю, чтобы он мог настроить свое личное пространство."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Настроить профиль?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Настроить"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Не сейчас"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Добавление"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Новый пользователь"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Новый профиль"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Сведения о пользователе"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Информация о профиле"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Чтобы создать профиль с ограниченным доступом, необходимо предварительно настроить блокировку экрана для защиты приложений и личных данных"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Включить блокировку"</string> </resources> diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml index 2c732ed5401d..5aff308dcdfd 100644 --- a/packages/SettingsLib/res/values-si/strings.xml +++ b/packages/SettingsLib/res/values-si/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP ලිපිනය & තොට"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR කේතය ස්කෑන් කරන්න"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR කේතය ස්කෑන් කිරීමෙන් Wi‑Fi හරහා උපාංගය යුගල කරන්න"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"කරුණාකර Wi-Fi ජාලයකට සම්බන්ධ වන්න"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, දෝෂාවෙක්ෂණ, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"දෝෂය වාර්තා කිරීමේ කෙටිමඟ"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"දෝෂ වාර්තාවක් ගැනීම සඳහා බල මෙනුව තුළ බොත්තම පෙන්වන"</string> @@ -432,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"<xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) පමණ වන තෙක් තිබිය යුතුය"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"<xliff:g id="TIME">%1$s</xliff:g> පමණ වන තෙක් තිබිය යුතුය"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> දක්වා"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"බැටරි බලය <xliff:g id="TIME">%1$s</xliff:g> වන විට අවසන් විය හැකිය"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g>ට වඩා අඩුවෙන් ඉතිරිව ඇත"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g>ට වඩා අඩුවෙන් ඉතිරිය (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>ට වඩා වැඩියෙන් ඉතිරිය (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -511,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"දුරකථන ස්පීකරය"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"සම්බන්ධ කිරීමේ ගැටලුවකි උපාංගය ක්රියාවිරහිත කර & ආපසු ක්රියාත්මක කරන්න"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"රැහැන්ගත කළ ඕඩියෝ උපාංගය"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"උදවු & ප්රතිපෝෂණ"</string> + <string name="storage_category" msgid="2287342585424631813">"ගබඩාව"</string> + <string name="shared_data_title" msgid="1017034836800864953">"බෙදා ගත් දත්ත"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"බෙදා ගත් දත්ත බලා වෙනස් කරන්න"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"බෙදා ගත් දත්ත ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"<xliff:g id="DATE">%s</xliff:g> දින කල් ඉකුත් වේ"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"යෙදුම් බෙදා ගැනීමේ දත්ත"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"යෙදුම මගින් විස්තර කිසිවක් ලබා දී නැත."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"කල් බද්ද <xliff:g id="DATE">%s</xliff:g> දින කල් ඉකුත් වේ"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"බෙදා ගත් දත්ත මකන්න"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"ඔබට මෙම බෙදා ගත් දත්ත මැකීමට අවශ්ය බව විශ්වාසද?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"පරිශීලකයින්ට ඔවුන්ගේ යෙදුම් සහ අන්තර්ගත ඇත"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"ඔබගේ ගිණුමෙන් යෙදුම් සහ අන්තර්ගත වෙත පිවිසීම ඔබට සීමා කළ හැක"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"පරිශීලක"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"සීමිත පැතිකඩ"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"අලුත් පරිශීලකයෙක් එක් කරන්නද?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"අමතර පරිශීලකයින් නිර්මාණය කිරීම මඟින් වෙනත් පුද්ගලයන් සමඟ මෙම උපාංගය ඔබට බෙදා ගත හැකිය. සෑම පරිශීලකයෙක්ටම ඔවුන්ගේම යෙදුම්, වෝල්පේපර, සහ වෙනත් ඒවා අභිරුචි කළ හැකි තමන්ට අයිති ඉඩක් ඇත. පරිශීලකයින්ට Wi‑Fi වැනි සෑම දෙනාටම බලපාන උපාංග සැකසීම්ද සීරුමාරු කළ හැක.\n\nඔබ නව පරිශීලකයෙකු එක් කළ විට ඔවුන්ගේ ඉඩ එම පුද්ගලයා සකසා ගත යුතු වේ.\n\nඕනෑම පරිශීලකයෙකුට අනෙක් සියලු පරිශීලකයන් සඳහා යෙදුම් යාවත්කාලීන කළ හැකිය. ප්රවේශයතා සැකසීම් සහ සේවා නව පරිශීලකයා වෙත මාරු නොකරනු ඇත."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"ඔබ අලුත් පරිශීලකයෙක් එකතු කරන විට, එම පුද්ගලයා ඔහුගේ වැඩ කරන ඉඩ සකසා ගත යුතුය.\n\nසියළුම අනෙක් පරිශීලකයින් සඳහා ඕනෑම පරිශීලකයෙකුට යාවත්කාලීන කළ හැක."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"දැන් පරිශීලකයා සකසන්නද?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"උපාංගය ලබාගෙන තමන්ගේ ඉඩ සකසා ගැනීමට අදාළ පුද්ගලයා සිටින බව තහවුරු කරගන්න"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"දැන් පැතිකඩ සකසන්නද?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"දැන් සකසන්න"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"දැන් නොවේ"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"එක් කරන්න"</string> + <string name="user_new_user_name" msgid="60979820612818840">"නව පරිශීලකයා"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"නව පැතිකඩ"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"පරිශීලක තොරතුරු"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"පැතිකඩ තොරතුරු"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"සීමිත පැතිකඩක් නිර්මාණය කිරීමට කලින්. ඔබගේ යෙදුම් සහ පෞද්ගලික දත්ත ආරක්ෂා කිරීමට තිර අගුලක් සැකසිය යුතුයි."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"අගුල සකසන්න"</string> </resources> diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml index 1032fd841261..05e8a3f6d306 100644 --- a/packages/SettingsLib/res/values-sk/strings.xml +++ b/packages/SettingsLib/res/values-sk/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Adresa IP a port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Naskenujte QR kód"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Spárujte zariadenie cez sieť Wi-Fi naskenovaním QR kódu"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Pripojte sa k sieti Wi‑Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, ladenie, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Skratka hlásenia chyby"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Zobraziť v hlavnej ponuke tlačidlo na vytvorenie hlásenia chyby"</string> @@ -432,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Vydrží asi do <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Vydrží asi do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Batéria sa môže do <xliff:g id="TIME">%1$s</xliff:g> minúť"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Zostáva menej ako <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Zostáva menej ako <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Zostáva viac ako <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -513,26 +511,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Reproduktor telefónu"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Pri pripájaní sa vyskytol problém. Zariadenie vypnite a znova zapnite."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Audio zariadenie s káblom"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Pomocník a spätná väzba"</string> + <string name="storage_category" msgid="2287342585424631813">"Priestor"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Zdieľané údaje"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Zobrazenie a úprava zdieľaných údajov"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Identifikátor zdieľaných údajov: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Platnosť vyprší <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplikácie zdieľajúce údaje"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Aplikácia neposkytla žiadny popis."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Platnosť prenájmu vyprší <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Odstrániť zdieľané údaje"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Naozaj chcete odstrániť tieto zdieľané údaje?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Používatelia majú svoje vlastné aplikácie a obsah"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Môžete obmedziť prístup k aplikáciám a obsahu z vášho účtu"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Používateľ"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Obmedzený profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Pridať nového používateľa?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Vytvorením ďalších používateľov môžete toto zariadenie zdieľať s inými ľuďmi. Každý používateľ má svoje prostredie, ktoré si môže prispôsobiť vlastnými aplikáciami, tapetou atď. Používatelia tiež môžu upraviť nastavenia zariadenia (napr. Wi-Fi), ktoré ovplyvnia všetkých používateľov.\n\nKeď pridáte nového používateľa, musí si nastaviť vlastný priestor.\n\nAkýkoľvek používateľ môže aktualizovať aplikácie všetkých používateľov. Nastavenia dostupnosti a služby sa nemusia preniesť novému používateľovi."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Keď pridáte nového používateľa, musí si nastaviť vlastný priestor.\n\nAkýkoľvek používateľ môže aktualizovať aplikácie všetkých ostatných používateľov."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Chcete teraz nastaviť používateľa?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Uistite sa, že je daná osoba k dispozícii a môže si na zariadení nastaviť svoj priestor."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Nastaviť profil?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Nastaviť teraz"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Teraz nie"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Pridať"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Nový používateľ"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Nový profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Inf. o používateľovi"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Informácie o profile"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Pred vytvorením obmedzeného profilu je nutné najprv nastaviť zámku obrazovky na ochranu aplikácií a osobných údajov."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Nastaviť uzamknutie"</string> </resources> diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml index a25cdd0f1b87..1ddf5ddffb4f 100644 --- a/packages/SettingsLib/res/values-sl/strings.xml +++ b/packages/SettingsLib/res/values-sl/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Naslov IP in vrata"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Optično branje kode QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Seznanitev naprave prek Wi‑Fi-ja z optičnim branjem kode QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Vzpostavite povezavo z omrežjem Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, odpravljanje napak, razvoj"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Bližnjica za poročanje o napakah"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Prikaz gumba za ustvarjanje poročila o napakah v meniju za vklop/izklop"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (rdeča – zelena)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (modra – rumena)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Popravljanje barv"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Popravljanje barv vam omogoča prilagajanje prikaza barv v napravi"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Preglasila nastavitev: <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Še približno <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Naprava bi morala delovati do približno <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Moralo bi zadostovati do približno <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Energije baterije lahko zmanjka do <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Preostalo manj kot <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Preostanek: manj kot <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Preostali čas delovanja: manj kot <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -514,26 +511,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Zvočnik telefona"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Težava pri povezovanju. Napravo izklopite in znova vklopite."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žična zvočna naprava"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Pomoč in povratne informacije"</string> + <string name="storage_category" msgid="2287342585424631813">"Shramba"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Deljeni podatki"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Ogled in sprememba deljenih podatkov"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID deljenih podatkov: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Poteče dne <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplikacije, ki si delijo podatke"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Aplikacija ni posredovala opisa."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Zakup poteče dne <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Izbriši deljene podatke"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Ali ste prepričani, da želite odstraniti te deljene podatke?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Uporabniki imajo svoje aplikacije in vsebino"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Dostop do aplikacij in vsebine iz vašega računa lahko omejite"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Uporabnik"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Omejen profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Dodajanje novega uporabnika?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"To napravo lahko daste v skupno rabo z drugimi tako, da ustvarite dodatne uporabnike. Vsak ima svoj prostor, ki ga lahko prilagodi z aplikacijami, ozadji in drugim. Uporabniki lahko tudi prilagodijo nastavitve naprave, ki vplivajo na vse, na primer nastavitve omrežja Wi-Fi.\n\nKo dodate novega uporabnika, mora ta nastaviti svoj prostor.\n\nVsak uporabnik lahko posodobi aplikacije za vse druge uporabnike. Nastavitve in storitve funkcij za ljudi s posebnimi potrebami morda ne bodo prenesene v prostor novega uporabnika."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Ko dodate novega uporabnika, mora ta nastaviti svoj prostor.\n\nVsak uporabnik lahko posodobi aplikacije za vse druge uporabnike."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Želite uporabnika nastaviti zdaj?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Prepričajte se, da ima oseba čas za nastavitev svojega prostora."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Želite zdaj nastaviti profil?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Želim nastaviti zdaj"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ne zdaj"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Dodaj"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Nov uporabnik"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Nov profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Podatki o uporabniku"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Podatki za profil"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Preden lahko ustvarite profil z omejitvami, morate nastaviti zaklepanje zaslona, da zaščitite aplikacije in osebne podatke."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Nastavi zaklepanje"</string> </resources> diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml index 0ebfef8445dd..c1469c415248 100644 --- a/packages/SettingsLib/res/values-sq/strings.xml +++ b/packages/SettingsLib/res/values-sq/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Adresa e IP-së dhe porta"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skano kodin QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Çifto pajisjen përmes Wi‑Fi duke skanuar një kod QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Lidhu me një rrjet Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, korrigjimi, zhvilluesi"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Shkurtorja e raportit të defektit në kod"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Shfaq një buton në menynë e fikjes për marrjen e raportit të defekteve"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomali (e kuqe - e gjelbër)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomali (e kaltër - e verdhë)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korrigjimi i ngjyrës"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Korrigjimi i ngjyrave të lejon të rregullosh mënyrën se si shfaqen ngjyrat në pajisjen tënde"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Mbivendosur nga <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Rreth <xliff:g id="TIME_REMAINING">%1$s</xliff:g> të mbetura"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Duhet të zgjasë deri në rreth <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Duhet të zgjasë deri në rreth <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Deri në <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Bateria mund të mbarojë deri në <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Më pak se <xliff:g id="THRESHOLD">%1$s</xliff:g> të mbetura"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Mbeten më pak se <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Mbeten më shumë se <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altoparlanti i telefonit"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem me lidhjen. Fike dhe ndize përsëri pajisjen"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Pajisja audio me tel"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Ndihma dhe komentet"</string> + <string name="storage_category" msgid="2287342585424631813">"Hapësira ruajtëse"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Të dhënat e ndara"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Shiko dhe modifiko të dhënat e ndara"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID-ja e të dhënave të ndara: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Skadon më <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Aplikacionet që ndajnë të dhënat"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Nuk jepet asnjë përshkrim nga aplikacioni."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Qiraja skadon në <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Fshi të dhënat e ndara"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Je i sigurt që dëshiron ta fshish këto të dhëna të ndara?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Përdoruesit kanë aplikacionet dhe përmbajtjet e tyre"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Mund të kufizosh qasjen në aplikacione dhe përmbajtje nga llogaria jote"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Përdoruesi"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Profil i kufizuar"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Të shtohet përdorues i ri?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Mund ta ndash këtë pajisje me persona të tjerë duke krijuar përdorues shtesë. Çdo përdorues ka hapësirën e vet, të cilën mund ta personalizojë me aplikacione, me imazhin e sfondit etj. Përdoruesit mund të rregullojnë po ashtu cilësimet e pajisjes, si Wi‑Fi, të cilat ndikojnë te të gjithë.\n\nKur shton një përdorues të ri, ai person duhet të konfigurojë hapësirën e vet.\n\nÇdo përdorues mund t\'i përditësojë aplikacionet për të gjithë përdoruesit e tjerë. Cilësimet e qasshmërisë dhe shërbimet mund të mos transferohen te përdoruesi i ri."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Kur shton një përdorues të ri, ai person duhet të konfigurojë hapësirën e vet.\n\nÇdo përdorues mund t\'i përditësojë aplikacionet për të gjithë përdoruesit e tjerë."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Të konfig. përdoruesi tani?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Sigurohu që personi të jetë i gatshëm të marrë pajisjen dhe të caktojë hapësirën e vet"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Të konfigurohet tani profili?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Konfiguro tani"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Jo tani"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Shto"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Përdorues i ri"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Profili i ri"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Informacioni i përdoruesit"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Inform. i profilit"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Para se të mund të krijosh një profil të kufizuar, duhet të konfigurosh një kyçje të ekranit për të mbrojtur aplikacionet dhe të dhënat e tua personale."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Cakto kyçjen"</string> </resources> diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml index 109a93a7793f..285e2b661fe7 100644 --- a/packages/SettingsLib/res/values-sr/strings.xml +++ b/packages/SettingsLib/res/values-sr/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP адреса и порт"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Скенирај QR кôд"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Упарите уређај помоћу Wi‑Fi мреже или тако што ћете скенирати QR кôд"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Повежите се на Wi-Fi мрежу"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, отклањање грешака, програмер"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Пречица за извештај о грешкама"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Прикажи дугме у менију напајања за прављење извештаја о грешкама"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалија (црвено-зелено)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалија (плаво-жуто)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Корекција боја"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Корекција боја вам омогућава да прилагодите начин на који се боје приказују на уређају"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Замењује га <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>–<xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Преостало је око <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Трајаће приближно до <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Трајаће приближно до <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"До <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Батерија ће се можда испразнити до <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Преостало је мање од <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Преостало је мање од <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Преостало је више од <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -513,26 +510,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Звучник телефона"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Проблем при повезивању. Искључите уређај, па га поново укључите"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Жичани аудио уређај"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Помоћ и повратне информације"</string> + <string name="storage_category" msgid="2287342585424631813">"Меморијски простор"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Дељени подаци"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Прегледајте и измените дељене податке"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ИД дељених података: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Истиче: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Апликације које деле податке"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"У апликацији није наведен ниједан опис."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Изнајмљивање истиче: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Избриши дељене податке"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Желите ли стварно да избришете ове дељене податке?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Корисници имају сопствене апликације и садржај"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Можете да ограничите приступ на апликације и садржај са налога"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Корисник"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Ограничени профил"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Додајете новог корисника?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Овај уређај можете да делите са другим људима ако направите још корисника. Сваки корисник има сопствени простор, који може да прилагођава помоћу апликација, позадине и слично. Корисници могу да прилагођавају и подешавања уређаја која утичу на свакога, попут Wi‑Fi-ја.\n\nКада додате новог корисника, та особа треба да подеси сопствени простор.\n\nСваки корисник може да ажурира апликације за све остале кориснике. Подешавања и услуге приступачности не могу да се преносе на новог корисника."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Када додате новог корисника, та особа треба да подеси сопствени простор.\n\nСваки корисник може да ажурира апликације за све остале кориснике."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Подешавате корисника?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Та особа треба да узме уређај и подеси свој простор"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Желите ли да одмах подесите профил?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Подеси"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Не сада"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Додавање"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Нови корисник"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Нови профил"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Подаци о кориснику"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Подаци о профилу"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Да бисте могли да направите ограничени профил, треба да подесите закључавање екрана да бисте заштитили апликације и личне податке."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Подеси закључавање"</string> </resources> diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml index 5a74966f7ab0..b9db69e20a62 100644 --- a/packages/SettingsLib/res/values-sv/strings.xml +++ b/packages/SettingsLib/res/values-sv/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-adress och port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skanna QR-kod"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Parkoppla enheten via Wi-Fi genom att skanna en QR-kod"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Anslut till ett Wi-Fi-nätverk"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev, felsöka, felsökning"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Genväg till felrapport"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Visa en knapp för felrapportering i extramenyn"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomali (rött-grönt)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomali (blått-gult)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Färgkorrigering"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Med färgkorrigering kan du ändra hur färger visas på enheten"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Har åsidosatts av <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Cirka <xliff:g id="TIME_REMAINING">%1$s</xliff:g> kvar"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Bör räcka ungefär till klockan <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Bör räcka ungefär till klockan <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Till kl. <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Batteriet kan ta slut klockan <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Mindre än <xliff:g id="THRESHOLD">%1$s</xliff:g> återstår"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Mindre än <xliff:g id="THRESHOLD">%1$s</xliff:g> återstår (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Mer än <xliff:g id="TIME_REMAINING">%1$s</xliff:g> återstår (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefonens högtalare"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Det gick inte att ansluta. Stäng av enheten och slå på den igen"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Ljudenhet med kabelanslutning"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Hjälp och feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Lagring"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Delad data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Visa och ändra delad data"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Id för delad data: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Upphör den <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Appar som delar data"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Ingen beskrivning har tillhandahållits av appen."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Lånetiden upphör den <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Radera delad data"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Vill du radera denna delade data?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Användare har egna appar och eget innehåll"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Du kan begränsa åtkomsten till appar och innehåll i ditt konto"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Användare"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Begränsad profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Lägga till ny användare?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Du kan dela enheten med andra om du skapar flera användare. Alla användare får sitt eget utrymme som de kan anpassa som de vill med appar, bakgrund och så vidare. Användarna kan även ändra enhetsinställningar som påverkar alla, till exempel Wi‑Fi.\n\nNär du lägger till en ny användare måste han eller hon konfigurera sitt utrymme.\n\nAlla användare kan uppdatera appar för samtliga användares räkning. Tillgänglighetsinställningar och tjänster kanske inte överförs till den nya användaren."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"När du lägger till en ny användare måste den personen konfigurera sitt utrymme.\n\nAlla användare kan uppdatera appar för samtliga användares räkning."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Konfigurera användare nu?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Kontrollera att personen finns tillgänglig för att konfigurera sitt utrymme på enheten"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vill du konfigurera en profil nu?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Konfigurera nu"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Inte nu"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Lägg till"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Ny användare"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Ny profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Användarinfo"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profilinfo"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Innan du skapar en begränsad profil måste du konfigurera ett skärmlås för att skydda dina appar och personliga data."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Konfigurera lås"</string> </resources> diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml index 6d52cc780d45..33f2041f94af 100644 --- a/packages/SettingsLib/res/values-sw/strings.xml +++ b/packages/SettingsLib/res/values-sw/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Anwani ya IP na Mlango"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Changanua msimbo wa QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Oanisha kifaa kupitia Wi-Fi kwa kuchanganua Msimbo wa QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Tafadhali unganisha kwenye mtandao wa Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, tatua, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Njia ya mkato ya kuripoti hitilafu"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Onyesha kitufe cha kuripoti hitilafu katika menyu ya kuzima/kuwasha kifaa"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (nyekundu-kijani)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (samawati-manjano)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Usahihishaji wa rangi"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Urekebishaji rangi hukuruhusu ubadilishe jinsi rangi zinavyoonyeshwa kwenye kifaa chako"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Imetanguliwa na <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Zimesalia takribani <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Inapaswa kudumu kwa takribani <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Inapaswa kudumu hadi <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Hadi <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Huenda chaji ikaisha kufikia <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Zimesalia chini ya <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Zimesalia chini ya <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Zimesalia zaidi ya <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Spika ya simu"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Kuna tatizo la kuunganisha kwenye Intaneti. Zima kisha uwashe kifaa"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Kifaa cha sauti kinachotumia waya"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Usaidizi na maoni"</string> + <string name="storage_category" msgid="2287342585424631813">"Hifadhi"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Data iliyoshirikiwa"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Angalia na ubadilishe data iliyoshirikiwa"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Kitambulisho cha data iliyoshirikiwa: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Muda wake utaisha<xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Programu zinazoshiriki data"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Hakuna maelezo yaliyotolewa na programu."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Muda wa kukodisha utaisha <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Futa data iliyoshirikiwa"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Una uhakika unataka kufuta data hii iliyoshirikiwa?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Watumiaji wana programu na maudhui yao binafsi"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Unaweza kudhibiti ufikiaji kwa programu na maudhui kutoka kwenye akaunti yako"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Mtumiaji"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Wasifu uliozuiwa"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Ungependa kuongeza mtumiaji?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Unaweza kutumia kifaa hiki pamoja na watu wengine kwa kuongeza watumiaji wa ziada. Kila mtumiaji ana nafasi yake mwenyewe, ambayo anaweza kuweka programu, mandhari na vipengee vingine anavyopenda. Watumiaji pia wanaweza kurekebisha mipangilio ya kifaa inayoathiri kila mtu kama vile Wi-Fi.\n\nUnapomwongeza mtumiaji mpya, mtu huyo anahitaji kujitayarishia nafasi yake.\n\nMtumiaji yeyote anaweza kuwasasishia watumiaji wengine wote programu. Huenda mipangilio na huduma za walio na matatizo ya kuona na kusikia zisihamishiwe mtumiaji mgeni."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Mtumiaji mpya utakayemwongeza atahitaji kuongeza akaunti yake.\n\nMtumiaji yoyote anaweza kusasisha programu kwa niaba ya wengine wote."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Mtumiaji aongezwe sasa?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Hakikisha kuwa mtu huyu anaweza kuchukua kifaa na kuweka mapendeleo yake"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Ungependa kuweka wasifu sasa?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Mwongeze sasa"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Si sasa"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Ongeza"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Mtumiaji mpya"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Wasifu mpya"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Maelezo ya mtumiaji"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Maelezo ya wasifu"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Kabla uunde wasifu uliowekekwa vikwazo, utahitajika kuweka skrini iliyofungwa ili kulinda programu zako na data binafsi."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Weka ufunguo"</string> </resources> diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml index 63faee62046f..3826e61baeb8 100644 --- a/packages/SettingsLib/res/values-ta/strings.xml +++ b/packages/SettingsLib/res/values-ta/strings.xml @@ -520,10 +520,18 @@ <skip /> <!-- no translation found for shared_data_summary (5516326713822885652) --> <skip /> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <!-- no translation found for blob_id_text (8680078988996308061) --> <skip /> <!-- no translation found for blob_expires_text (7882727111491739331) --> <skip /> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <!-- no translation found for accessor_info_title (8289823651512477787) --> <skip /> <!-- no translation found for accessor_no_description_text (7510967452505591456) --> @@ -534,4 +542,23 @@ <skip /> <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> <skip /> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"பயனர்கள் தங்களுக்குச் சொந்தமான ஆப்ஸ் மற்றும் உள்ளடக்கத்தை வைத்திருக்க வேண்டும்"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"உங்கள் கணக்கிலிருந்து ஆப்ஸ் மற்றும் உள்ளடக்கத்திற்கான அணுகலை நீங்கள் வரையறுக்கலாம்"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"பயனர்"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"கட்டுப்படுத்தப்பட்ட சுயவிவரம்"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"புதியவரைச் சேர்க்கவா?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"கூடுதல் பயனர்களை உருவாக்குவதன் மூலம், பிறருடன் இந்தச் சாதனத்தைப் பகிர்ந்துகொள்ளலாம். ஒவ்வொரு பயனருக்கும் அவர்களுக்கென ஒரு இடம் இருக்கும், அதில் அவர்கள் ஆப்ஸ், வால்பேப்பர் மற்றும் பலவற்றைப் பயன்படுத்திப் பிரத்தியேகப்படுத்தலாம். வைஃபை போன்ற மற்ற சாதன அமைப்புகளைப் பயனர்கள் மாற்றலாம், இந்த மாற்றம் அனைவருக்கும் பொருந்தும்.\n\nநீங்கள் புதிய பயனரைச் சேர்க்கும்போது, அவர் தனக்கான இடத்தை அமைக்க வேண்டும்.\n\nஎந்தவொரு பயனரும், பிற எல்லாப் பயனர்களுக்குமான ஆப்ஸைப் புதுப்பிக்கலாம். அணுகல்தன்மை அமைப்புகளையும் சேவைகளையும், புதிய பயனருக்கு இடமாற்ற முடியாமல் போகலாம்."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"புதியவரைச் சேர்க்கும் போது, அவர் தனக்கான இடத்தை அமைக்க வேண்டும்.\n\nஇருக்கும் ஆப்ஸை எவரும் புதுப்பிக்கலாம்."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"இப்போது பயனரை அமைக்கவா?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"இந்தச் சாதனத்தை இவர் பயன்படுத்தும் நிலையிலும், அவருக்கான அமைப்புகளை அவரே செய்து கொள்பவராகவும் இருக்க வேண்டும்."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"இப்போது சுயவிவரத்தை அமைக்கவா?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"இப்போது அமை"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"இப்போது இல்லை"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"சேர்"</string> + <string name="user_new_user_name" msgid="60979820612818840">"புதியவர்"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"புதிய சுயவிவரம்"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"பயனர் தகவல்"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"சுயவிவரத் தகவல்"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"நீங்கள் வரையறுக்கப்பட்டச் சுயவிவரத்தை உருவாக்குவதற்கு முன்பு, உங்கள் ஆப்ஸ் மற்றும் தனிப்பட்ட தரவைப் பாதுகாக்கும் வகையில் நீங்கள் திரைப் பூட்டை அமைக்க வேண்டும்."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"பூட்டை அமை"</string> </resources> diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml index 9cfe541f8240..fe18c836c508 100644 --- a/packages/SettingsLib/res/values-te/strings.xml +++ b/packages/SettingsLib/res/values-te/strings.xml @@ -520,10 +520,18 @@ <skip /> <!-- no translation found for shared_data_summary (5516326713822885652) --> <skip /> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> + <skip /> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> + <skip /> <!-- no translation found for blob_id_text (8680078988996308061) --> <skip /> <!-- no translation found for blob_expires_text (7882727111491739331) --> <skip /> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> + <skip /> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> + <skip /> <!-- no translation found for accessor_info_title (8289823651512477787) --> <skip /> <!-- no translation found for accessor_no_description_text (7510967452505591456) --> @@ -534,4 +542,23 @@ <skip /> <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> <skip /> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"వినియోగదారులు వారి స్వంత అనువర్తనాలను మరియు కంటెంట్ను కలిగి ఉన్నారు"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"మీరు మీ ఖాతా నుండి అనువర్తనాలకు మరియు కంటెంట్కు ప్రాప్యతను పరిమితం చేయవచ్చు"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"వినియోగదారు"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"పరిమితం చేయబడిన ప్రొఫైల్"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"కొత్త వినియోగదారుని జోడించాలా?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"అదనపు వినియోగదారులను సృష్టించడం ద్వారా మీరు ఈ పరికరాన్ని ఇతరులతో షేర్ చేయవచ్చు. ప్రతి వినియోగదారుకు వారికంటూ ప్రత్యేక స్థలం ఉంటుంది, వారు ఆ స్థలాన్ని యాప్లు, వాల్పేపర్ మొదలైనవాటితో అనుకూలీకరించవచ్చు. వినియోగదారులు ప్రతి ఒక్కరిపై ప్రభావం చూపే Wi‑Fi వంటి పరికర సెట్టింగ్లను కూడా సర్దుబాటు చేయవచ్చు.\n\nమీరు కొత్త వినియోగదారును జోడించినప్పుడు, ఆ వ్యక్తి వారికంటూ స్వంత స్థలం సెట్ చేసుకోవాలి.\n\nఏ వినియోగదారు అయినా మిగిలిన అందరు వినియోగదారుల కోసం యాప్లను అప్డేట్ చేయవచ్చు. యాక్సెస్ సామర్ధ్యం సెట్టింగ్లు మరియు సేవలు కొత్త వినియోగదారుకి బదిలీ కాకపోవచ్చు."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"మీరు కొత్త వినియోగదారుని జోడించినప్పుడు, ఆ వ్యక్తి తన స్థలాన్ని సెటప్ చేసుకోవాలి.\n\nఏ వినియోగదారు అయినా మిగతా అందరు వినియోగదారుల కోసం యాప్లను అప్డేట్ చేయగలరు."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"ఇప్పుడు వినియోగదారుని సెటప్ చేయాలా?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"పరికరాన్ని తీసుకోవడానికి వ్యక్తి అందుబాటులో ఉన్నారని నిర్ధారించుకొని, ఆపై వారికి నిల్వ స్థలాన్ని సెటప్ చేయండి"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ఇప్పుడు ప్రొఫైల్ను సెటప్ చేయాలా?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"ఇప్పుడే సెటప్ చేయి"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"ఇప్పుడు కాదు"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"జోడించండి"</string> + <string name="user_new_user_name" msgid="60979820612818840">"కొత్త వినియోగదారు"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"కొత్త ప్రొఫైల్"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"వినియోగదారు సమాచారం"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"ప్రొఫైల్ సమాచారం"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"మీరు పరిమితం చేయబడిన ప్రొఫైల్ను సృష్టించడానికి ముందు, మీ అనువర్తనాలు మరియు వ్యక్తిగత డేటాను రక్షించడానికి స్క్రీన్ లాక్ను సెటప్ చేయాల్సి ఉంటుంది."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"లాక్ను సెట్ చేయి"</string> </resources> diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index 05633ca50324..31c6051ab6b3 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"ที่อยู่ IP และพอร์ต"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"สแกนคิวอาร์โค้ด"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"จับคู่อุปกรณ์ผ่าน Wi‑Fi ด้วยการสแกนคิวอาร์โค้ด"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"โปรดเชื่อมต่อเครือข่าย Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, แก้ไขข้อบกพร่อง, พัฒนา"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"ทางลัดรายงานข้อบกพร่อง"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"แสดงปุ่มในเมนูเปิด/ปิดสำหรับการใช้รายงานข้อบกพร่อง"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"ตาบอดจางสีแดง (สีแดง/เขียว)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ตาบอดจางสีน้ำเงิน (สีน้ำเงิน/เหลือง)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"การแก้สี"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"การแก้สีช่วยให้คุณปรับการแสดงสีในอุปกรณ์ได้"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"แทนที่โดย <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"เหลืออีกประมาณ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"น่าจะใช้งานได้ถึงเวลาประมาณ <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"น่าจะใช้งานได้ถึงเวลาประมาณ <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"จนถึง <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"แบตเตอรี่อาจหมดภายใน <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"เหลืออีกไม่ถึง <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"เหลือเวลาอีกไม่ถึง <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"เหลือเวลามากกว่า <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ลำโพงโทรศัพท์"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"เกิดปัญหาในการเชื่อมต่อ ปิดอุปกรณ์แล้วเปิดใหม่อีกครั้ง"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"อุปกรณ์เสียงแบบมีสาย"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"ความช่วยเหลือและความคิดเห็น"</string> + <string name="storage_category" msgid="2287342585424631813">"พื้นที่เก็บข้อมูล"</string> + <string name="shared_data_title" msgid="1017034836800864953">"ข้อมูลที่แชร์"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"ดูและแก้ไขข้อมูลที่แชร์"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"รหัสข้อมูลที่แชร์: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"จะหมดอายุในวันที่ <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"แอปที่แชร์ข้อมูล"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"แอปไม่ได้ให้คำอธิบายไว้"</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"เวลาได้รับสิทธิ์จะสิ้นสุดในวันที่ <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"ลบข้อมูลที่แชร์"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"คุณแน่ใจไหมว่าต้องการลบข้อมูลที่แชร์นี้"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"ผู้ใช้มีแอปและเนื้อหาของตัวเอง"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"คุณสามารถจำกัดการเข้าถึงแอปและเนื้อหาจากบัญชีของคุณได้"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"ผู้ใช้"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"โปรไฟล์ที่ถูกจำกัด"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"ต้องการเพิ่มผู้ใช้ใหม่ใช่ไหม"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"คุณมีสิทธิ์แชร์อุปกรณ์นี้กับผู้อื่นได้โดยการเพิ่มผู้ใช้ ซึ่งแต่ละคนจะมีพื้นที่ของตนเองและปรับใช้กับแอป วอลเปเปอร์ และรายการอื่นๆ ได้ อีกทั้งยังปรับการตั้งค่าอุปกรณ์ได้ด้วย เช่น Wi‑Fi ซึ่งจะมีผลกับทุกคน\n\nเมื่อคุณเพิ่มผู้ใช้ใหม่ ผู้ใช้ดังกล่าวจะต้องตั้งค่าพื้นที่ของตน\n\nผู้ใช้ทุกคนมีสิทธิ์อัปเดตแอปให้กับผู้ใช้รายอื่น การตั้งค่าและบริการสำหรับการช่วยเหลือพิเศษอาจโอนไปยังผู้ใช้ใหม่ไม่ได้"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"เมื่อคุณเพิ่มผู้ใช้ใหม่ ผู้ใช้ดังกล่าวจะต้องตั้งค่าพื้นที่ของตนเอง\n\nผู้ใช้ทุกคนสามารถอัปเดตแอปสำหรับผู้ใช้รายอื่นได้"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"ตั้งค่าผู้ใช้เลยไหม"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"ตรวจสอบว่าบุคคลดังกล่าวสามารถนำอุปกรณ์ไปตั้งค่าพื้นที่ของตนได้"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"หากต้องการตั้งค่าโปรไฟล์ทันที"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"ตั้งค่าทันที"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"ข้ามไปก่อน"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"เพิ่ม"</string> + <string name="user_new_user_name" msgid="60979820612818840">"ผู้ใช้ใหม่"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"โปรไฟล์ใหม่"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"ข้อมูลผู้ใช้"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"ข้อมูลโปรไฟล์"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"ก่อนที่คุณจะสามารถสร้างโปรไฟล์ที่ถูกจำกัดได้ คุณจะต้องตั้งค่าล็อกหน้าจอเพื่อปกป้องแอปและข้อมูลส่วนตัวของคุณ"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"ตั้งค่าล็อก"</string> </resources> diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml index ac682f572b78..a3ae082288c8 100644 --- a/packages/SettingsLib/res/values-tl/strings.xml +++ b/packages/SettingsLib/res/values-tl/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP address at Port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"I-scan ang QR code"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Ipares ang device gamit ang Wi‑Fi sa pamamagitan ng pag-scan ng isang QR Code"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Kumonekta sa Wi-Fi network"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Shortcut ng ulat sa bug"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Magpakita ng button sa power menu sa pagkuha ng ulat sa bug"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (pula-berde)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (asul-dilaw)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Pagtatama ng kulay"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Nagbibigay-daan sa iyo ang pagtatama ng kulay na maisaayos kung paano ipinapakita ang mga kulay sa iyong device"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Na-override ng <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Humigit-kumulang <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ang natitira"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Tatagal dapat nang hanggang humigit-kumulang <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Tatagal hanggang mga <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Hanggang <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Posibleng maubos ang baterya sa loob ng <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Wala nang <xliff:g id="THRESHOLD">%1$s</xliff:g> ang natitira"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Wala nang <xliff:g id="THRESHOLD">%1$s</xliff:g> ang natitira (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Mahigit <xliff:g id="TIME_REMAINING">%1$s</xliff:g> pa ang natitira (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Speaker ng telepono"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Nagkaproblema sa pagkonekta. I-off at pagkatapos ay i-on ang device"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired na audio device"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Tulong at feedback"</string> + <string name="storage_category" msgid="2287342585424631813">"Storage"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Pinaghahatiang data"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Tingnan at baguhin ang pinaghahatiang data"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"ID ng pinaghahatiang data: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Mag-e-expire sa <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Mga app na nagbabahagi ng data"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Walang paglalarawang ibinigay ang app."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Mag-e-expire ang lease sa <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"I-delete ang pinaghahatiang data"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Sigurado ka bang gusto mong i-delete ang pinaghahatiang data na ito?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"May sariling apps at nilalaman ang mga user"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Maaari mong paghipitan ang access sa apps at nilalaman mula sa iyong account"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"User"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Pinaghihigpitang profile"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Magdagdag ng bagong user?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Puwede mong ibahagi ang device na ito sa ibang tao sa pamamagitan ng paggawa ng mga karagdagang user. May sariling espasyo ang bawat user na maaari nilang i-customize gamit ang mga app, wallpaper, at iba pa. Puwede ring isaayos ng mga user ang mga setting ng device tulad ng Wi‑Fi na nakakaapekto sa lahat.\n\nKapag nagdagdag ka ng bagong user, kailangang i-set up ng taong iyon ang kanyang espasyo.\n\nMaaaring mag-update ng mga app ang sinumang user para sa lahat ng iba pang user. Maaaring hindi malipat sa bagong user ang mga setting at serbisyo sa pagiging naa-access."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Kapag nagdagdag ka ng bagong user, kailangang i-set up ng taong iyon ang kanyang espasyo.\n\nAng sinumang user ay maaaring mag-update ng mga app para sa lahat ng iba pang user."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"I-set up ang user ngayon?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Tiyaking available ang tao na kunin ang device at i-set up ang kanyang space"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Mag-set up ng profile ngayon?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"I-set up ngayon"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Huwag ngayon"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Idagdag"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Bagong user"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Bagong profile"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Impormasyon ng user"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Info sa profile"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Bago ka makakalikha ng pinaghihigpitang profile, kakailanganin mong mag-set up ng screen lock upang protektahan ang iyong apps at personal na data."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Itakda ang lock"</string> </resources> diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml index 908409b8c6c5..21f10c60e399 100644 --- a/packages/SettingsLib/res/values-tr/strings.xml +++ b/packages/SettingsLib/res/values-tr/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP adresi ve Bağlantı noktası"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR kodunu tara"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR kodu tarayarak kablosuz ağ üzerinden cihaz eşleyin"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Lütfen Kablosuz bir ağa bağlanın"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, hata ayıklama, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Hata raporu kısayolu"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Hata raporu almak için güç menüsünde bir düğme göster"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Kırmızı renk körlüğü (kırmızı-yeşil)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Mavi renk körlüğü (mavi-sarı)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Renk düzeltme"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Renk düzeltme, renklerin cihazınızda nasıl görüntüleneceğini düzenlemenize olanak sağlar."</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> tarafından geçersiz kılındı"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Yaklaşık <xliff:g id="TIME_REMAINING">%1$s</xliff:g> kaldı"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Saat yaklaşık <xliff:g id="TIME">%1$s</xliff:g> olana kadar kullanılabilmelidir (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Saat yaklaşık <xliff:g id="TIME">%1$s</xliff:g> olana kadar kullanılabilmelidir"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Şu saate kadar: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Pilin tahmini bitiş zamanı: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"En fazla <xliff:g id="THRESHOLD">%1$s</xliff:g> kaldı"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"En çok <xliff:g id="THRESHOLD">%1$s</xliff:g> kaldı (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"En az <xliff:g id="TIME_REMAINING">%1$s</xliff:g> kaldı (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefon hoparlörü"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Bağlanırken sorun oluştu. Cihazı kapatıp tekrar açın"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Kablolu ses cihazı"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Yardım ve geri bildirim"</string> + <string name="storage_category" msgid="2287342585424631813">"Depolama"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Paylaşılan veri"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Paylaşılan verileri görüntüleyin ve değiştirin"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Paylaşılan veri kimliği: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Son kullanım tarihi: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Veri paylaşan uygulamalar"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Uygulama tarafından sağlanan açıklama yok."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Kiralama süresinin bitiş zamanı: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Paylaşılan verileri sil"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Bu paylaşılan verileri silmek istediğinizden emin misiniz?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Kullanıcıların kendi uygulamaları ve içerikleri var"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Hesabınızdaki uygulamalara ve içeriğe erişimi kısıtlayabilirsiniz"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Kullanıcı"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Kısıtlı profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Yeni kullanıcı eklensin mi?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Ek kullanıcılar oluşturarak bu cihazı başkalarıyla paylaşabilirsiniz. Her kullanıcının uygulamalarla, duvar kağıdıyla ve başka ayarlarla özelleştirebileceği kendi alanı olur. Kullanıcılar ayrıca kablosuz ağ gibi herkesi etkileyen cihaz ayarlarını değiştirebilirler.\n\nYeni bir kullanıcı eklediğinizde, ilgili kişinin kendi alanını ayarlaması gerekir.\n\nHer kullanıcı diğer tüm kullanıcılar için uygulamaları güncelleyebilir."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Yeni bir kullanıcı eklediğinizde, bu kişinin kendi alanını ayarlaması gerekir.\n\nHerhangi bir kullanıcı, diğer tüm kullanıcılar için uygulamaları güncelleyebilir."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Kullanıcı şimdi ayarlansın mı?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"İlgili kişinin cihazı almak ve kendi alanını ayarlamak için müsait olduğundan emin olun"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil şimdi yapılandırılsın mı?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Şimdi ayarla"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Şimdi değil"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Ekle"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Yeni kullanıcı"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Yeni profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Kullanıcı bilgileri"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profil bilgisi"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Kısıtlanmış bir profil oluşturabilmeniz için uygulamalarınızı ve kişisel verilerinizi korumak üzere bir ekran kilidi oluşturmanız gerekir."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Kilidi ayarla"</string> </resources> diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml index c9a785f5133f..f2a7492c6d93 100644 --- a/packages/SettingsLib/res/values-uk/strings.xml +++ b/packages/SettingsLib/res/values-uk/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-адреса та порт"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Сканувати QR-код"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Підключати пристрій через Wi‑Fi за допомогою QR-коду"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Підключіть пристрій до мережі Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, налагодження, розробка"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Ярлик звіту про помилки"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Показувати в меню живлення кнопку створення звіту про помилки"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалія (червоний – зелений)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалія (синій – жовтий)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Корекція кольору"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Корекція кольору дає змогу регулювати відтінки зображення на екрані пристрою"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Замінено на <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Залишилося приблизно <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Вистачить приблизно до <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Вистачить приблизно до <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"До <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Акумулятор може розрядитися до <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Залишилося менше ніж <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Залишилося менше ніж <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Залишилося понад <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -514,26 +511,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Динамік телефона"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Не вдається підключитися. Перезавантажте пристрій."</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Дротовий аудіопристрій"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Довідка й відгуки"</string> + <string name="storage_category" msgid="2287342585424631813">"Пам\'ять"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Спільні дані"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Переглянути та змінити спільні дані"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Ідентифікатор спільних даних: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Термін дії завершується <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Додатки зі спільним доступом до даних"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Немає опису, наданого додатком."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Період оренди закінчується <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Видалити спільні дані"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Видалити ці спільні дані?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Користувачі мають власні програми та вміст"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Ви можете обмежити доступ до програм і вмісту з вашого облікового запису"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Користувач"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Профіль з обмеженням"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Додати нового користувача?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Цим пристроєм можуть користуватися кілька людей. Для цього потрібно створити додаткові профілі. Власник профілю може налаштувати його на свій смак: вибрати фоновий малюнок, установити потрібні додатки тощо. Користувачі також можуть налаштовувати певні параметри пристрою (як-от Wi-Fi), які застосовуватимуться до решти профілів.\n\nПісля створення новий профіль потрібно налаштувати.\n\nБудь-який користувач пристрою може оновлювати додатки для решти користувачів. Налаштування спеціальних можливостей і сервісів можуть не передаватися новому користувачеві."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Користувач має налаштувати свій профіль після створення.\n\nБудь-який користувач пристрою може оновлювати додатки для решти користувачів."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Створити користувача зараз?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Переконайтеся, що користувач може взяти пристрій і налаштувати профіль"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Налаштувати профіль зараз?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Створити зараз"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Не зараз"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Додавання"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Новий користувач"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Новий профіль"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Дані користувача"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Інформація профілю"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Перш ніж створювати обмежений профіль, потрібно налаштувати блокування екрана, щоб захистити свої програми та особисті дані."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Налаштувати блокування"</string> </resources> diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml index 335808d2638c..85b3e5c4ca30 100644 --- a/packages/SettingsLib/res/values-ur/strings.xml +++ b/packages/SettingsLib/res/values-ur/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP پتہ اور پورٹ"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR کوڈ اسکین کریں"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR کوڈ اسکین کر کے Wi-Fi پر آلہ کا جوڑا بنائیں"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"براہ کرم ایک Wi-Fi نیٹ ورک سے منسلک ہوں"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb، ڈیبگ، dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"بگ رپورٹ کا شارٹ کٹ"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"بگ رپورٹ لینے کیلئے پاور مینو میں ایک بٹن دکھائیں"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (سرخ سبز)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (نیلا پیلا)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"رنگ کی اصلاح"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"رنگ کی اصلاح آپ کو یہ ایڈجسٹ کرنے کی سہولت دیتی ہے کہ آپ کے آلے پر رنگ کیسے ڈسپلے کئے جاتے ہیں"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> کے ذریعہ منسوخ کردیا گیا"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"تقریباً <xliff:g id="TIME_REMAINING">%1$s</xliff:g> باقی ہے"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"تقریباً <xliff:g id="TIME">%1$s</xliff:g> تک بیٹری چلے گی (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"تقریباً <xliff:g id="TIME">%1$s</xliff:g> تک بیٹری چلے گی"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> تک"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g> تک بیٹری ختم ہو سکتی ہے"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g> سے کم باقی ہے"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g> سے کم باقی ہے (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> سے زیادہ باقی ہے (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"فون اسپیکر"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"منسلک کرنے میں مسئلہ پیش آ گیا۔ آلہ کو آف اور بیک آن کریں"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"وائرڈ آڈیو آلہ"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"مدد اور تاثرات"</string> + <string name="storage_category" msgid="2287342585424631813">"اسٹوریج"</string> + <string name="shared_data_title" msgid="1017034836800864953">"اشتراک کردہ ڈیٹا"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"اشتراک کردہ ڈیٹا میں ترمیم اور ملاحظہ کریں"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"اشتراک کردہ ڈیٹا کی ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"میعاد کے اختتام کی تاریخ <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"ڈیٹا کا اشتراک کرنے والی ایپس"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"ایپ کے ذریعے کوئی بھی تفصیل فراہم نہیں کی گئی۔"</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"لیز کی میعاد <xliff:g id="DATE">%s</xliff:g> کو ختم ہونے والی ہے"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"اشتراک کردہ ڈیٹا کو حذف کریں"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"کیا آپ واقعی اس اشتراک کردہ ڈیٹا کو حذف کرنا چاہتے ہیں؟"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"صارفین کے پاس اپنی خود کی ایپس اور مواد ہیں"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"آپ اپنے اکاؤنٹ سے ایپس اور مواد تک رسائی کو محدود کر سکتے ہیں"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"صارف"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"محدود پروفائل"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"نیا صارف شامل کریں؟"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"آپ اضافی صارفین تخلیق کر کے دوسرے لوگوں کے ساتھ اس آلہ کا اشتراک کر سکتے ہیں۔ ہر صارف کے پاس اپنی جگہ ہوتی ہے، جسے وہ ایپس، وال پیپر وغیرہ کے ساتھ حسب ضرورت بنا سکتا ہے۔ صارفین Wi‑Fi جیسی آلے کی ترتیبات کو ایڈجسٹ بھی کر سکتے ہیں جس کا اثر ہر کسی پر ہوتا ہے۔\n\nجب آپ ایک نیا صارف شامل کرتے ہیں، تو اسے اپنی جگہ سیٹ اپ کرنا پڑتی ہے۔\n\nکوئی بھی صارف دیگر تمام صارفین کیلئے ایپس اپ ڈیٹ کر سکتا ہے۔ رسائی کی ترتیبات اور سروسز کو نئے صارف کو منتقل نہیں کیا جا سکتا۔"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"جب آپ ایک نیا صارف شامل کرتے ہیں تو اس شخص کو اپنی جگہ کو ترتیب دینے کی ضرورت ہوتی ہے\n\nکوئی بھی صارف دیگر سبھی صارفین کیلئے ایپس کو اپ ڈیٹ کر سکتا ہے۔"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"صارف کو ابھی سیٹ اپ کریں؟"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"یقینی بنائیں کہ وہ شخص آلہ لینے اور اپنی جگہ کو سیٹ اپ کرنے کیلئے دستیاب ہے"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"پروفائل کو ابھی ترتیب دیں؟"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"ابھی ترتیب دیں"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"ابھی نہیں"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"شامل کریں"</string> + <string name="user_new_user_name" msgid="60979820612818840">"نیا صارف"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"نیا پروفائل"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"صارف کی معلومات"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"پروفائل کی معلومات"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"ایک محدود پروفائل بنانے سے پہلے، آپ کو اپنی ایپس اور ذاتی ڈیٹا کو محفوظ کرنے کیلئے ایک اسکرین لاک سیٹ اپ کرنا ہوگا۔"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"لاک سیٹ کریں"</string> </resources> diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml index c321d85a32a3..9578124e5d14 100644 --- a/packages/SettingsLib/res/values-uz/strings.xml +++ b/packages/SettingsLib/res/values-uz/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP manzil va port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR kodni skanerlash"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR kodni skanerlab, Wi-Fi orqali qurilmani ulang"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Wi-Fi tarmoqqa ulaning"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debag, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Xatoliklar hisoboti"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Menyuda xatoliklar hisobotini yuborish tugmasi ko‘rsatilsin"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaliya (qizil/yashil)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaliya (ko‘k/sariq)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Rangni tuzatish"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Ranglarni tuzatish orqali qurilmangizda ranglar qanday chiqishini tuzatish mumkin"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> bilan almashtirildi"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Taxminan <xliff:g id="TIME_REMAINING">%1$s</xliff:g> qoldi"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Taxminan <xliff:g id="TIME">%1$s</xliff:g> gacha davom etadi (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Taxminan <xliff:g id="TIME">%1$s</xliff:g> gacha davom etadi"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> gacha"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Batareya quvvati tugash vaqti: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"<xliff:g id="THRESHOLD">%1$s</xliff:g>dan kamroq vaqt qoldi"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g>dan kamroq vaqt qoldi (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>dan ko‘proq vaqt qoldi (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefon karnayi"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ulanishda muammo yuz berdi. Qurilmani oʻchiring va yoqing"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Simli audio qurilma"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Yordam va fikr-mulohaza"</string> + <string name="storage_category" msgid="2287342585424631813">"Xotira"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Umumiy maʼlumotlar"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Umumiy maʼlumotlarni ochish va oʻzgartirish"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Umumiy maʼlumotlar identifikatori: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Amal qilish muddati: <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Umumiy maʼlumotlar bor ilovalar"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Ilova hech qanday tavsif bermagan."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Ruxsat eskirish sanasi: <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Umumiy maʼlumotlarni oʻchirish"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Umumiy maʼlumotlarni oʻchirishni xohlaysizmi?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Foydalanuvchilar o‘zlarining ilovalari va kontenlariga egalar"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Hisobingizdan ilovalar va kontentlarga kirishga cheklov o‘rnatishingiz mumkin"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Foydalanuvchi"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Cheklangan profil"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Foydalanuvchi qo‘shilsinmi?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Bu qurilmadan bir necha kishi alohida foydalanuvchilar qo‘shib foydalanishi mumkin. Har bir foydalanuvchiga diskda joy ajratiladi, tayinlangan hajm ilovalar, ekran foni rasmi, va hokazolarga taqsimlanishi mumkin. Foydalanuvchilar Wi-Fi kabi sozlamalarni o‘zgartirsa, qolganlarda ham aks etishi mumkin. \n\nYangi profil qo‘shilgach, uni sozlash lozim.\n\nQurilmaning istalgan foydalanuvchisi ilovalarni barcha hisoblar uchun yangilashi mumkin. Maxsus imkoniyatlar sozlamalari va xizmatlar yangi foydalanuvchiga o‘tkazilmasligi mumkin."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Yangi profil qo‘shilgach, uni sozlash lozim.\n\nQurilmaning istalgan foydalanuvchisi ilovalarni barcha hisoblar uchun yangilashi mumkin."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Profil hozir sozlansinmi?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Agar foydalanuvchi profilini hozir sozlay olmasa, keyinroq ham sozlab olishi mumkin."</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil hozir sozlansinmi?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Hozir sozlash"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Hozir emas"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Qo‘shish"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Yangi foydalanuvchi"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Yangi profil"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Foydalanuvchi ma‘lumoti"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Profil haqida axborot"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Cheklangan profil yaratish uchun, shaxsiy ilovlar va ma‘lumotlarni himoyalash maqsadida avval ekran qulfini yaratish lozim."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Qulf o‘rnatish"</string> </resources> diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml index 61f99fe69413..4af1b4f0b176 100644 --- a/packages/SettingsLib/res/values-vi/strings.xml +++ b/packages/SettingsLib/res/values-vi/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Địa chỉ IP và cổng"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Quét mã QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Ghép nối thiết bị qua Wi-Fi bằng cách quét mã QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Hãy kết nối mạng Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, gỡ lỗi, nhà phát triển"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Phím tắt báo cáo lỗi"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Hiển thị một nút trong menu nguồn để báo cáo lỗi"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Mù màu đỏ không hoàn toàn (đỏ-xanh lục)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Mù màu (xanh lam-vàng)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Sửa màu"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Với chế độ hiệu chỉnh màu sắc, bạn có thể điều chỉnh cách các màu hiển thị trên thiết bị"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Bị ghi đè bởi <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Còn khoảng <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Sẽ hết pin cho tới khoảng <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Sẽ hết pin cho tới khoảng <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Cho đến <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Điện thoại có thể hết pin vào <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Còn lại không đến <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Còn lại không đến <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Còn lại hơn <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Loa điện thoại"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Sự cố kết nối. Hãy tắt thiết bị rồi bật lại"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Thiết bị âm thanh có dây"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Trợ giúp và phản hồi"</string> + <string name="storage_category" msgid="2287342585424631813">"Bộ nhớ"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Dữ liệu được chia sẻ"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Xem và sửa đổi dữ liệu được chia sẻ"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Mã dữ liệu được chia sẻ: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Hết hạn vào <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Những ứng dụng chia sẻ dữ liệu"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Ứng dụng này không cung cấp thông tin mô tả nào."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Thời gian thuê kết thúc vào ngày <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Xóa dữ liệu được chia sẻ"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Bạn có chắc chắn muốn xóa dữ liệu được chia sẻ này không?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Người dùng có ứng dụng và nội dung riêng của mình"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Bạn có thể hạn chế quyền truy cập vào ứng dụng và nội dung từ tài khoản của bạn"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Người dùng"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Tiểu sử bị hạn chế"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Thêm người dùng mới?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Bạn có thể chia sẻ thiết bị này với người khác bằng cách tạo thêm người dùng. Mỗi người dùng sẽ có không gian riêng của mình. Họ có thể tùy chỉnh không gian riêng đó bằng các ứng dụng, hình nền, v.v. Người dùng cũng có thể điều chỉnh các tùy chọn cài đặt thiết bị có ảnh hưởng đến tất cả mọi người, chẳng hạn như Wi‑Fi.\n\nKhi bạn thêm người dùng mới, họ cần thiết lập không gian của mình.\n\nMọi người dùng đều có thể cập nhật ứng dụng cho tất cả người dùng khác. Các dịch vụ và các tùy chọn cài đặt hỗ trợ tiếp cận có thể không chuyển sang người dùng mới."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Khi bạn thêm người dùng mới, họ cần thiết lập không gian của mình.\n\nMọi người dùng đều có thể cập nhật ứng dụng cho tất cả người dùng khác."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Thiết lập người dùng ngay bây giờ?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Đảm bảo người dùng có mặt để tự thiết lập không gian của mình trên thiết bị"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Thiết lập tiểu sử ngay bây giờ?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Thiết lập ngay"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Không phải bây giờ"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Thêm"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Người dùng mới"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Tiểu sử mới"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Thông tin người dùng"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Thông tin hồ sơ"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Trước khi bạn có thể tạo tiểu sử bị hạn chế, bạn sẽ cần thiết lập một màn hình khóa để bảo vệ các ứng dụng và dữ liệu cá nhân của bạn."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Thiết lập khóa"</string> </resources> diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml index 56be76f398e4..d5425b2d5fdf 100644 --- a/packages/SettingsLib/res/values-zh-rCN/strings.xml +++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP 地址和端口"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"扫描二维码"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"扫描二维码即可通过 WLAN 配对设备"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"请连接到 WLAN 网络"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, 调试, debug, 开发, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"错误报告快捷方式"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"在电源菜单中显示用于提交错误报告的按钮"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"红色弱视(红绿不分)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"蓝色弱视(蓝黄不分)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"色彩校正"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"借助颜色校正功能,您可以调整设备上的颜色显示方式"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"已被“<xliff:g id="TITLE">%1$s</xliff:g>”覆盖"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"大约还可使用 <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"目前电量为 <xliff:g id="LEVEL">%2$s</xliff:g>,估计能用到<xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"估计能用到<xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"直到<xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"电池电量可能在<xliff:g id="TIME">%1$s</xliff:g> 耗尽"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"剩余电池续航时间不到 <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"电量剩余使用时间不到 <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"电量剩余使用时间超过 <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"手机扬声器"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"连接时遇到问题。请关闭并重新开启设备"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有线音频设备"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"帮助和反馈"</string> + <string name="storage_category" msgid="2287342585424631813">"存储"</string> + <string name="shared_data_title" msgid="1017034836800864953">"共享数据"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"查看和修改共享数据"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"共享数据 ID:<xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"到期时间是 <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"共享数据的应用"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"该应用未提供任何说明。"</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"租约到期时间是 <xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"删除共享数据"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"确定要删除这些共享数据吗?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"用户拥有个人专属的应用和内容"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"您可以限制其他人使用来自您的帐号的应用和内容"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"用户"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"受限个人资料"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"要添加新用户吗?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"创建新用户后,您就能够与其他人共用此设备。每位用户都有自己的专属空间,而且在自己的个人空间内还可以自行安装自己想要的应用、设置壁纸等。此外,用户还可以调整会影响所有用户的设备设置(例如 WLAN 设置)。\n\n当您添加新用户后,该用户需要自行设置个人空间。\n\n任何用户都可以为所有其他用户更新应用。无障碍功能设置和服务可能无法转移给新用户。"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"您添加新用户后,该用户必须设置自己的空间。\n\n任何用户均可为其他所有用户更新应用。"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"要现在设置该用户吗?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"请让相应用户操作设备并设置他们自己的空间。"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"要立即设置个人资料吗?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"立即设置"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"以后再说"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"添加"</string> + <string name="user_new_user_name" msgid="60979820612818840">"新用户"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"新的个人资料"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"用户信息"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"个人资料信息"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"您需要先设置锁定屏幕来保护您的应用和个人数据,然后才可以创建受限个人资料。"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"设置屏幕锁定方式"</string> </resources> diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml index cfb86b946acd..07e4070dfc9f 100644 --- a/packages/SettingsLib/res/values-zh-rHK/strings.xml +++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP 位址和連接埠"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"掃瞄二維條碼"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"掃瞄二維條碼即可透過 Wi-Fi 配對裝置"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"請連線至 Wi-Fi 網絡"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"ADB, 偵錯, 開發"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"錯誤舉報捷徑"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"在電源選單中顯示提交錯誤舉報的按鈕"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"紅色弱視 (紅綠)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"藍色弱視 (藍黃)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"色彩校正"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"你可以用色彩校正調整裝置顯示嘅顏色"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"已由「<xliff:g id="TITLE">%1$s</xliff:g>」覆寫"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"還有大約 <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"電量剩餘約 <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"電量剩餘約 <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"還可用到<xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"電池電量可能將於<xliff:g id="TIME">%1$s</xliff:g>耗盡"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"剩餘電量時間少於 <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"還有少於 <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"還有超過 <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"手機喇叭"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"無法連接,請關閉裝置然後重新開機"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有線音響裝置"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"說明與意見反映"</string> + <string name="storage_category" msgid="2287342585424631813">"儲存空間"</string> + <string name="shared_data_title" msgid="1017034836800864953">"共用資料"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"查看和修改共用資料"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"共用資料 ID:<xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"有效期至 <xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"應用程式共用資料"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"應用程式未提供描述。"</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"租用到期日:<xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"刪除共用資料"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"確定要刪除此共用資料嗎?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"使用者擁有自己的應用程式和內容"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"您可以限制透過您的帳戶存取應用程式和內容"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"使用者"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"限制存取的個人檔案"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"新增使用者?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"您可以建立其他使用者,與他人共用這部裝置。每位使用者都有專屬的空間,並可使用應用程式、桌布等項目自訂個人空間。此外,使用者也可以調整會影響所有人的裝置設定,例如 Wi‑Fi 設定。\n\n新增的使用者需要自行設定個人空間。\n\n任何使用者都可以為所有其他使用者更新應用程式。無障礙功能設定和服務可能無法轉移至新的使用者。"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"新增的使用者需要自行設定個人空間。\n\n任何使用者都可以為其他所有使用者更新應用程式。"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"立即設定使用者?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"請確定對方現在可以使用裝置設定自己的空間"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"立即設定個人檔案?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"立即設定"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"暫時不要"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"新增"</string> + <string name="user_new_user_name" msgid="60979820612818840">"新使用者"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"新個人檔案"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"使用者資訊"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"個人檔案資料"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"建立限制存取的個人檔案前,您必須先設定上鎖畫面來保護您的應用程式和個人資料。"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"設定上鎖畫面"</string> </resources> diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml index cf3f343cd7d2..bf6265b62ede 100644 --- a/packages/SettingsLib/res/values-zh-rTW/strings.xml +++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP 位址和通訊埠"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"掃描 QR 圖碼"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"掃描 QR 圖碼即可透過 Wi-Fi 配對裝置"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"請連上 Wi-Fi 網路"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"ADB, 偵錯, 開發"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"錯誤回報捷徑"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"在電源選單中顯示取得錯誤報告的按鈕"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"紅色弱視 (紅-綠)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"藍色弱視 (藍-黃)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"色彩校正"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"色彩校正可讓你調整裝置上顯示的顏色"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"已改為<xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"還能使用約 <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"目前電量 <xliff:g id="LEVEL">%2$s</xliff:g>,預估還能持續使用到<xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"預估還能持續使用到<xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"還能持續使用到<xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"電池電力可能於<xliff:g id="TIME">%1$s</xliff:g> 前耗盡"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"電池可用時間不到 <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"電池可用時間不到 <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"電池可用時間超過 <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"手機喇叭"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"無法連線,請關閉裝置後再重新開啟"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有線音訊裝置"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"說明與意見回饋"</string> + <string name="storage_category" msgid="2287342585424631813">"儲存空間"</string> + <string name="shared_data_title" msgid="1017034836800864953">"共用資料"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"查看及修改共用資料"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"共用資料 ID:<xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"到期時間:<xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"分享資料的應用程式"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"應用程式未提供任何說明。"</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"租用到期時間:<xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"刪除共用資料"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"確定要刪除這項共用資料嗎?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"使用者擁有個人專屬的應用程式和內容"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"你可以限制他人透過你的帳戶存取應用程式和內容"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"使用者"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"設有限制的個人資料"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"新增使用者?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"你可以建立其他使用者,藉此與他人共用這個裝置。每位使用者都有自己的專屬空間,並可使用應用程式、桌布等項目自訂個人空間。此外,使用者也可以調整會影響所有人的裝置設定,例如 Wi‑Fi 設定。\n\n新增的使用者需要自行設定個人空間。\n\n任何使用者都可以為所有其他使用者更新應用程式。無障礙設定和服務可能無法轉移到新的使用者。"</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"新增的使用者需要自行設定個人空間。\n\n任何使用者皆可為其他所有使用者更新應用程式。"</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"立即設定使用者?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"請確保對方可以使用裝置並設定自己的空間"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"立即建立個人資料?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"立即設定"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"暫時不要"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"新增"</string> + <string name="user_new_user_name" msgid="60979820612818840">"新使用者"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"新的個人資料"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"使用者資訊"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"設定檔資訊"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"如要建立設有限制的個人資料,你必須先設定螢幕鎖定來保護你的應用程式和個人資料。"</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"設定鎖定"</string> </resources> diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml index 78e2099a4cb2..0e0805372df6 100644 --- a/packages/SettingsLib/res/values-zu/strings.xml +++ b/packages/SettingsLib/res/values-zu/strings.xml @@ -232,8 +232,7 @@ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Ikheli le-IP nembobo"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skena ikhodi ye-QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Bhangqa idivayisi nge-Wi‑Fi ngokuskena ikhodi ye-QR"</string> - <!-- no translation found for adb_wireless_no_network_msg (2365795244718494658) --> - <skip /> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Sicela uxhume kunethiwekhi ye-Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"i-adb, ukulungisa amaphutha, i-dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Isinqamuleli sombiko wesiphazamisi"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Bonisa inkinobho kwimenyu yamandla ngokuthatha umbiko wesiphazamiso"</string> @@ -418,8 +417,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"I-Protanomaly (bomvu-luhlaza)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"I-Tritanomaly (luhlaza okwesibhakabhaka-phuzi)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Ukulungiswa kombala"</string> - <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (1284746051652993443) --> - <skip /> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1284746051652993443">"Ukulungisa umbala kukuvumela ukuthi ulungise indlela imibala eboniswa ngayo kudivayisi yakho"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Igitshezwe ngaphezulu yi-<xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Cishe u-<xliff:g id="TIME_REMAINING">%1$s</xliff:g> osele"</string> @@ -433,8 +431,7 @@ <string name="power_discharge_by" msgid="4113180890060388350">"Kumele ihlale cishe kube ngu-<xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Kumele ihlale cishe kube ngu-<xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Kuze kube ngu-<xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_suggestion_battery_run_out (6332089307827787087) --> - <skip /> + <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Ibhethri lingaphela ngo-<xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="5802195288324091585">"Kusele okungaphansi kunokungu-<xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="1812668275239801236">"Ngaphansi kuka-<xliff:g id="THRESHOLD">%1$s</xliff:g> osele (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"Ngaphezu kuka-<xliff:g id="TIME_REMAINING">%1$s</xliff:g> osele (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -512,26 +509,42 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Isipikha sefoni"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Inkinga yokuxhumeka. Vala idivayisi futhi uphinde uyivule"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Idivayisi yomsindo enentambo"</string> - <!-- no translation found for help_label (3528360748637781274) --> - <skip /> - <!-- no translation found for storage_category (2287342585424631813) --> - <skip /> - <!-- no translation found for shared_data_title (1017034836800864953) --> - <skip /> - <!-- no translation found for shared_data_summary (5516326713822885652) --> - <skip /> - <!-- no translation found for blob_id_text (8680078988996308061) --> - <skip /> - <!-- no translation found for blob_expires_text (7882727111491739331) --> - <skip /> - <!-- no translation found for accessor_info_title (8289823651512477787) --> - <skip /> - <!-- no translation found for accessor_no_description_text (7510967452505591456) --> + <string name="help_label" msgid="3528360748637781274">"Usizo nempendulo"</string> + <string name="storage_category" msgid="2287342585424631813">"Isitoreji"</string> + <string name="shared_data_title" msgid="1017034836800864953">"Idatha eyabiwe"</string> + <string name="shared_data_summary" msgid="5516326713822885652">"Buka futhi ulungise idatha eyabiwe"</string> + <!-- no translation found for shared_data_no_blobs_text (3108114670341737434) --> <skip /> - <!-- no translation found for accessor_expires_text (4625619273236786252) --> + <!-- no translation found for shared_data_query_failure_text (3489828881998773687) --> <skip /> - <!-- no translation found for delete_blob_text (2819192607255625697) --> + <string name="blob_id_text" msgid="8680078988996308061">"Idatha ye-ID eyabiwe: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> + <string name="blob_expires_text" msgid="7882727111491739331">"Iphelelwa yisikhathi ngo-<xliff:g id="DATE">%s</xliff:g>"</string> + <!-- no translation found for shared_data_delete_failure_text (3842701391009628947) --> <skip /> - <!-- no translation found for delete_blob_confirmation_text (7807446938920827280) --> + <!-- no translation found for shared_data_no_accessors_dialog_text (8903738462570715315) --> <skip /> + <string name="accessor_info_title" msgid="8289823651512477787">"Izinhlelo zokusebenza ezabelana idatha"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"Ayikho incazelo enikezwe yilolu hlelo lokusebenza."</string> + <string name="accessor_expires_text" msgid="4625619273236786252">"Ukuqashiswa kuphelelwa isikhathi ngo-<xliff:g id="DATE">%s</xliff:g>"</string> + <string name="delete_blob_text" msgid="2819192607255625697">"Susa idatha eyabiwe"</string> + <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Uyaqiniseka yini ngokuthi ufuna ukususa le datha eyabiwe?"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Abasebenzisi banezinhlelo zabo zokusebenza nokuqukethwe"</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Ungakhawulela ukufinyelela kuzinhlelo zokusebenza nokuqukethwe kusukela ku-akhawunti yakho"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"Umsebenzisi"</string> + <string name="user_add_profile_item_title" msgid="3111051717414643029">"Iphrofayela evinjelwe"</string> + <string name="user_add_user_title" msgid="5457079143694924885">"Engeza umsebenzisi omusha?"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"Manje ungabelana ngale divayisi nabanye abantu ngokudala abasebenzisi abangeziwe. Umsebenzisi ngamunye unesikhala sakhe, angakwazi ukusenza ngendlela ayifisayo ngezinhlelo zokusebenza, isithombe sangemuva, njalo njalo. Abasebenzisi bangalungisa izilungiselelo zedivayisi ezifana ne-Wi-Fi ezithinta wonke umuntu.\n\nUma ungeza umsebenzisi omusha, loyo muntu kumele asethe isikhala sakhe.\n\nNoma imuphi umsebenzisi angabuyekeza izinhlelo zokusebenza kubo bonke abanye abasebenzisi. Izilungiselelo zokufinyelela kungenzeka zingadluliselwa kumsebenzisi omusha."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"Uma ungeza umsebenzisi omusha, loyo muntu udinga ukusetha isikhala sakhe.\n\nNoma yimuphi umsebenzisi angabuyekeza izinhlelo zokusebenza kubo bonke abasebenzisi."</string> + <string name="user_setup_dialog_title" msgid="8037342066381939995">"Setha umsebenzisi manje?"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"Qinisekisa ukuthi umuntu uyatholakala ukuze athathe idivayisi futhi asethe isikhala sakhe"</string> + <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Setha iphrofayela manje?"</string> + <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Setha manje"</string> + <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Hhayi manje"</string> + <string name="user_add_user_type_title" msgid="551279664052914497">"Engeza"</string> + <string name="user_new_user_name" msgid="60979820612818840">"Umsebenzisi omusha"</string> + <string name="user_new_profile_name" msgid="2405500423304678841">"Iphrofayela entsha"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Ulwazi lomsebenzisi"</string> + <string name="profile_info_settings_title" msgid="105699672534365099">"Ulwazi lwephrofayela"</string> + <string name="user_need_lock_message" msgid="4311424336209509301">"Ngaphambi kokuthi ungadala iphrofayela ekhawulelwe, kuzomele usethe ukukhiya isikrini ukuze uvikele izinhlelo zakho zokusebenza nedatha yakho yomuntu siqu."</string> + <string name="user_set_lock_button" msgid="1427128184982594856">"Setha ukukhiya"</string> </resources> diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 3f59f896a82e..9112602981e5 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -1291,10 +1291,18 @@ <string name="shared_data_title">Shared data</string> <!-- Storage: shared data summary [CHAR LIMIT=80] --> <string name="shared_data_summary">View and modify shared data</string> + <!-- Shared data: display text when there are no shared data blobs available [CHAR LIMIT=NONE] --> + <string name="shared_data_no_blobs_text">There is no shared data for this user.</string> + <!-- Shared data: text to display when there was an error while fetching shared data for the user [CHAR LIMIT=NONE] --> + <string name="shared_data_query_failure_text">There was an error fetching shared data. Try again.</string> <!-- Shared data: shared data id [CHAR LIMIT=50] --> <string name="blob_id_text">Shared data ID: <xliff:g id="blob_id" example="100">%d</xliff:g></string> <!-- Shared data: label to indicate when the shared data expires [CHAR LIMIT=80] --> <string name="blob_expires_text">Expires at <xliff:g id="date" example="Mar 20, 2020 11:59:59 GMT">%s</xliff:g></string> + <!-- Shared data: text to display when there was an error while deleting a shared data object [CHAR LIMIT=NONE] --> + <string name="shared_data_delete_failure_text">There was an error deleting the shared data.</string> + <!-- Shared data: dialog text when there are no acquired leases for a blob [CHAR LIMIT=NONE] --> + <string name="shared_data_no_accessors_dialog_text">There are no leases acquired for this shared data. Would you like to delete it?</string> <!-- Shared data: title for screen showing list of packages accessing some shared data [CHAR LIMIT=50] --> <string name="accessor_info_title">Apps sharing data</string> <!-- Shared data: text indicating that no description was provided by the app for this shared data [CHAR LIMIT=80] --> @@ -1344,5 +1352,14 @@ <string name="user_need_lock_message">Before you can create a restricted profile, you\u2019ll need to set up a screen lock to protect your apps and personal data.</string> <!-- User settings dialog button to set screen lock [CHAR LIMIT=25] --> <string name="user_set_lock_button">Set lock</string> + <!-- Label for switching to other user in the user switcher [CHAR LIMIT=35] --> + <string name="user_switch_to_user">Switch to <xliff:g id="user_name" example="John Doe">%s</xliff:g></string> + + <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] --> + <string name="guest_new_guest">Add guest</string> + <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] --> + <string name="guest_exit_guest">Remove guest</string> + <!-- Name for the guest user [CHAR LIMIT=35] --> + <string name="guest_nickname">Guest</string> </resources> diff --git a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java index c34c365c1bfa..7ef080178a2f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java @@ -169,6 +169,22 @@ public class MetricsFeatureProvider { sourceMetricsCategory); } + /** + * Logs an event when the intent is started by Profile select dialog. + * + * @return true if the intent is loggable, otherwise false + */ + public boolean logStartedIntentWithProfile(Intent intent, int sourceMetricsCategory, + boolean isWorkProfile) { + if (intent == null) { + return false; + } + final ComponentName cn = intent.getComponent(); + final String key = cn != null ? cn.flattenToString() : intent.getAction(); + return logSettingsTileClick(key + (isWorkProfile ? "/work" : "/personal"), + sourceMetricsCategory); + } + private boolean logSettingsTileClick(String logKey, int sourceMetricsCategory) { if (TextUtils.isEmpty(logKey)) { // Not loggable diff --git a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaManager.java deleted file mode 100644 index d84788b2739f..000000000000 --- a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaManager.java +++ /dev/null @@ -1,348 +0,0 @@ -/* - * Copyright 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.settingslib.media; - -import android.app.Notification; -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothDevice; -import android.bluetooth.BluetoothProfile; -import android.content.Context; -import android.util.Log; - -import com.android.settingslib.bluetooth.A2dpProfile; -import com.android.settingslib.bluetooth.BluetoothCallback; -import com.android.settingslib.bluetooth.CachedBluetoothDevice; -import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager; -import com.android.settingslib.bluetooth.HearingAidProfile; -import com.android.settingslib.bluetooth.LocalBluetoothManager; -import com.android.settingslib.bluetooth.LocalBluetoothProfileManager; - -import java.util.ArrayList; -import java.util.List; - -/** - * BluetoothMediaManager provide interface to get Bluetooth device list. - */ -public class BluetoothMediaManager extends MediaManager implements BluetoothCallback, - LocalBluetoothProfileManager.ServiceListener { - - private static final String TAG = "BluetoothMediaManager"; - - private final DeviceAttributeChangeCallback mDeviceAttributeChangeCallback = - new DeviceAttributeChangeCallback(); - - private LocalBluetoothManager mLocalBluetoothManager; - private LocalBluetoothProfileManager mProfileManager; - private CachedBluetoothDeviceManager mCachedBluetoothDeviceManager; - - private MediaDevice mLastAddedDevice; - private MediaDevice mLastRemovedDevice; - - private boolean mIsA2dpProfileReady = false; - private boolean mIsHearingAidProfileReady = false; - - BluetoothMediaManager(Context context, LocalBluetoothManager localBluetoothManager, - Notification notification) { - super(context, notification); - - mLocalBluetoothManager = localBluetoothManager; - mProfileManager = mLocalBluetoothManager.getProfileManager(); - mCachedBluetoothDeviceManager = mLocalBluetoothManager.getCachedDeviceManager(); - } - - @Override - public void startScan() { - mLocalBluetoothManager.getEventManager().registerCallback(this); - buildBluetoothDeviceList(); - dispatchDeviceListAdded(); - addServiceListenerIfNecessary(); - } - - private void addServiceListenerIfNecessary() { - // The profile may not ready when calling startScan(). - // Device status are all disconnected since profiles are not ready to connected. - // In this case, we observe onServiceConnected() in LocalBluetoothProfileManager. - // When A2dpProfile or HearingAidProfile is connected will call buildBluetoothDeviceList() - // again to find the connected devices. - if (!mIsA2dpProfileReady || !mIsHearingAidProfileReady) { - mProfileManager.addServiceListener(this); - } - } - - private void buildBluetoothDeviceList() { - mMediaDevices.clear(); - addConnectableA2dpDevices(); - addConnectableHearingAidDevices(); - } - - private void addConnectableA2dpDevices() { - final A2dpProfile a2dpProfile = mProfileManager.getA2dpProfile(); - if (a2dpProfile == null) { - Log.w(TAG, "addConnectableA2dpDevices() a2dp profile is null!"); - return; - } - - final List<BluetoothDevice> devices = a2dpProfile.getConnectableDevices(); - - for (BluetoothDevice device : devices) { - final CachedBluetoothDevice cachedDevice = - mCachedBluetoothDeviceManager.findDevice(device); - - if (cachedDevice == null) { - Log.w(TAG, "Can't found CachedBluetoothDevice : " + device.getName()); - continue; - } - - Log.d(TAG, "addConnectableA2dpDevices() device : " + cachedDevice.getName() - + ", is connected : " + cachedDevice.isConnected() - + ", is enabled : " + a2dpProfile.isEnabled(device)); - - if (a2dpProfile.isEnabled(device) - && BluetoothDevice.BOND_BONDED == cachedDevice.getBondState()) { - addMediaDevice(cachedDevice); - } - } - - mIsA2dpProfileReady = a2dpProfile.isProfileReady(); - } - - private void addConnectableHearingAidDevices() { - final HearingAidProfile hapProfile = mProfileManager.getHearingAidProfile(); - if (hapProfile == null) { - Log.w(TAG, "addConnectableHearingAidDevices() hap profile is null!"); - return; - } - - final List<BluetoothDevice> devices = hapProfile.getConnectableDevices(); - for (BluetoothDevice device : devices) { - // Only add master HearingAid device, ignore sub - if (mCachedBluetoothDeviceManager.isSubDevice(device)) { - Log.w(TAG, "Sub hearingAid device: " + device.getName()); - continue; - } - final CachedBluetoothDevice cachedDevice = - mCachedBluetoothDeviceManager.findDevice(device); - - if (cachedDevice == null) { - Log.w(TAG, "Can't found CachedBluetoothDevice : " + device.getName()); - continue; - } - - Log.d(TAG, "addConnectableHearingAidDevices() device : " + cachedDevice.getName() - + ", is connected : " + cachedDevice.isConnected() - + ", is enabled : " + hapProfile.isEnabled(device)); - - if (hapProfile.isEnabled(device) - && BluetoothDevice.BOND_BONDED == cachedDevice.getBondState()) { - addMediaDevice(cachedDevice); - } - } - - mIsHearingAidProfileReady = hapProfile.isProfileReady(); - } - - private void addMediaDevice(CachedBluetoothDevice cachedDevice) { - MediaDevice mediaDevice = findMediaDevice(MediaDeviceUtils.getId(cachedDevice)); - if (mediaDevice == null) { - mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, null, null, null); - cachedDevice.registerCallback(mDeviceAttributeChangeCallback); - mLastAddedDevice = mediaDevice; - mMediaDevices.add(mediaDevice); - } - } - - @Override - public void stopScan() { - mLocalBluetoothManager.getEventManager().unregisterCallback(this); - unregisterDeviceAttributeChangeCallback(); - } - - private void unregisterDeviceAttributeChangeCallback() { - for (MediaDevice device : mMediaDevices) { - ((BluetoothMediaDevice) device).getCachedDevice() - .unregisterCallback(mDeviceAttributeChangeCallback); - } - } - - @Override - public void onBluetoothStateChanged(int bluetoothState) { - if (BluetoothAdapter.STATE_ON == bluetoothState) { - buildBluetoothDeviceList(); - dispatchDeviceListAdded(); - addServiceListenerIfNecessary(); - } else if (BluetoothAdapter.STATE_OFF == bluetoothState) { - final List<MediaDevice> removeDevicesList = new ArrayList<>(); - for (MediaDevice device : mMediaDevices) { - ((BluetoothMediaDevice) device).getCachedDevice() - .unregisterCallback(mDeviceAttributeChangeCallback); - removeDevicesList.add(device); - } - mMediaDevices.removeAll(removeDevicesList); - dispatchDeviceListRemoved(removeDevicesList); - } - } - - @Override - public void onAudioModeChanged() { - dispatchDataChanged(); - } - - @Override - public void onDeviceAdded(CachedBluetoothDevice cachedDevice) { - if (isCachedDeviceConnected(cachedDevice)) { - addMediaDevice(cachedDevice); - dispatchDeviceAdded(cachedDevice); - } - } - - private boolean isCachedDeviceConnected(CachedBluetoothDevice cachedDevice) { - final boolean isConnectedHearingAidDevice = cachedDevice.isConnectedHearingAidDevice(); - final boolean isConnectedA2dpDevice = cachedDevice.isConnectedA2dpDevice(); - Log.d(TAG, "isCachedDeviceConnected() cachedDevice : " + cachedDevice - + ", is hearing aid connected : " + isConnectedHearingAidDevice - + ", is a2dp connected : " + isConnectedA2dpDevice); - - return isConnectedHearingAidDevice || isConnectedA2dpDevice; - } - - private void dispatchDeviceAdded(CachedBluetoothDevice cachedDevice) { - if (mLastAddedDevice != null - && MediaDeviceUtils.getId(cachedDevice) == mLastAddedDevice.getId()) { - dispatchDeviceAdded(mLastAddedDevice); - } - } - - @Override - public void onDeviceDeleted(CachedBluetoothDevice cachedDevice) { - if (!isCachedDeviceConnected(cachedDevice)) { - removeMediaDevice(cachedDevice); - dispatchDeviceRemoved(cachedDevice); - } - } - - private void removeMediaDevice(CachedBluetoothDevice cachedDevice) { - final MediaDevice mediaDevice = findMediaDevice(MediaDeviceUtils.getId(cachedDevice)); - if (mediaDevice != null) { - cachedDevice.unregisterCallback(mDeviceAttributeChangeCallback); - mLastRemovedDevice = mediaDevice; - mMediaDevices.remove(mediaDevice); - } - } - - void dispatchDeviceRemoved(CachedBluetoothDevice cachedDevice) { - if (mLastRemovedDevice != null - && MediaDeviceUtils.getId(cachedDevice) == mLastRemovedDevice.getId()) { - dispatchDeviceRemoved(mLastRemovedDevice); - } - } - - @Override - public void onProfileConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state, - int bluetoothProfile) { - Log.d(TAG, "onProfileConnectionStateChanged() device: " + cachedDevice - + ", state: " + state + ", bluetoothProfile: " + bluetoothProfile); - - updateMediaDeviceListIfNecessary(cachedDevice); - } - - private void updateMediaDeviceListIfNecessary(CachedBluetoothDevice cachedDevice) { - if (BluetoothDevice.BOND_NONE == cachedDevice.getBondState()) { - removeMediaDevice(cachedDevice); - dispatchDeviceRemoved(cachedDevice); - } else { - if (findMediaDevice(MediaDeviceUtils.getId(cachedDevice)) != null) { - dispatchDataChanged(); - } - } - } - - @Override - public void onAclConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) { - Log.d(TAG, "onAclConnectionStateChanged() device: " + cachedDevice + ", state: " + state); - - updateMediaDeviceListIfNecessary(cachedDevice); - } - - @Override - public void onActiveDeviceChanged(CachedBluetoothDevice activeDevice, int bluetoothProfile) { - Log.d(TAG, "onActiveDeviceChanged : device : " - + activeDevice + ", profile : " + bluetoothProfile); - - if (BluetoothProfile.HEARING_AID == bluetoothProfile) { - dispatchConnectedDeviceChanged(activeDevice == null - ? PhoneMediaDevice.ID : MediaDeviceUtils.getId(activeDevice)); - } else if (BluetoothProfile.A2DP == bluetoothProfile) { - // When active device change to Hearing Aid, - // BluetoothEventManager also send onActiveDeviceChanged() to notify that active device - // of A2DP profile is null. To handle this case, check hearing aid device - // is active device or not - final MediaDevice activeHearingAidDevice = findActiveHearingAidDevice(); - final String id = activeDevice == null - ? activeHearingAidDevice == null - ? PhoneMediaDevice.ID : activeHearingAidDevice.getId() - : MediaDeviceUtils.getId(activeDevice); - dispatchConnectedDeviceChanged(id); - } - } - - private MediaDevice findActiveHearingAidDevice() { - final HearingAidProfile hearingAidProfile = mProfileManager.getHearingAidProfile(); - - if (hearingAidProfile == null) { - Log.e(TAG, "findActiveHearingAidDevice: hearingAidProfile == null"); - return null; - } - final List<BluetoothDevice> activeDevices = hearingAidProfile.getActiveDevices(); - for (BluetoothDevice btDevice : activeDevices) { - final MediaDevice mediaDevice = - findMediaDevice(Long.toString(hearingAidProfile.getHiSyncId(btDevice))); - if (mediaDevice != null) { - return mediaDevice; - } - } - return null; - } - - @Override - public void onServiceConnected() { - if (!mIsA2dpProfileReady || !mIsHearingAidProfileReady) { - buildBluetoothDeviceList(); - dispatchDeviceListAdded(); - } - - //Remove the listener once a2dpProfile and hearingAidProfile are ready. - if (mIsA2dpProfileReady && mIsHearingAidProfileReady) { - mProfileManager.removeServiceListener(this); - } - } - - @Override - public void onServiceDisconnected() { - - } - - /** - * This callback is for update {@link BluetoothMediaDevice} summary when - * {@link CachedBluetoothDevice} connection state is changed. - */ - private class DeviceAttributeChangeCallback implements CachedBluetoothDevice.Callback { - - @Override - public void onDeviceAttributesChanged() { - dispatchDataChanged(); - } - } -} diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index 24cd55175f63..19c8b20b7822 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -52,7 +52,6 @@ public class InfoMediaManager extends MediaManager { private static final String TAG = "InfoMediaManager"; private static final boolean DEBUG = false; - @VisibleForTesting final RouterManagerCallback mMediaRouterCallback = new RouterManagerCallback(); @VisibleForTesting @@ -138,14 +137,10 @@ public class InfoMediaManager extends MediaManager { } private RoutingSessionInfo getRoutingSessionInfo() { - for (RoutingSessionInfo info : mRouterManager.getRoutingSessions(mPackageName)) { - if (TextUtils.equals(info.getClientPackageName(), mPackageName)) { - return info; - } - } + final List<RoutingSessionInfo> sessionInfos = + mRouterManager.getRoutingSessions(mPackageName); - Log.w(TAG, "RoutingSessionInfo() cannot found match packagename : " + mPackageName); - return null; + return sessionInfos.get(sessionInfos.size() - 1); } /** @@ -181,10 +176,7 @@ public class InfoMediaManager extends MediaManager { return false; } - - final List<RoutingSessionInfo> sessionInfos = - mRouterManager.getRoutingSessions(mPackageName); - final RoutingSessionInfo sessionInfo = sessionInfos.get(sessionInfos.size() - 1); + final RoutingSessionInfo sessionInfo = getRoutingSessionInfo(); if (sessionInfo != null) { mRouterManager.releaseSession(sessionInfo); @@ -346,7 +338,8 @@ public class InfoMediaManager extends MediaManager { private void buildAllRoutes() { for (MediaRoute2Info route : mRouterManager.getAllRoutes()) { if (DEBUG) { - Log.d(TAG, "buildAllRoutes() route : " + route.getName()); + Log.d(TAG, "buildAllRoutes() route : " + route.getName() + ", volume : " + + route.getVolume()); } if (route.isSystemRoute()) { addMediaDevice(route); @@ -375,7 +368,7 @@ public class InfoMediaManager extends MediaManager { mediaDevice = new InfoMediaDevice(mContext, mRouterManager, route, mPackageName); if (!TextUtils.isEmpty(mPackageName) - && TextUtils.equals(route.getClientPackageName(), mPackageName) + && getRoutingSessionInfo().getSelectedRoutes().contains(route.getId()) && mCurrentConnectedDevice == null) { mCurrentConnectedDevice = mediaDevice; } @@ -422,18 +415,7 @@ public class InfoMediaManager extends MediaManager { @Override public void onRoutesChanged(List<MediaRoute2Info> routes) { - mMediaDevices.clear(); - mCurrentConnectedDevice = null; - if (TextUtils.isEmpty(mPackageName)) { - buildAllRoutes(); - } else { - buildAvailableRoutes(); - } - - final String id = mCurrentConnectedDevice != null - ? mCurrentConnectedDevice.getId() - : null; - dispatchConnectedDeviceChanged(id); + refreshDevices(); } @Override @@ -447,6 +429,18 @@ public class InfoMediaManager extends MediaManager { Log.d(TAG, "onTransferred() oldSession : " + oldSession.getName() + ", newSession : " + newSession.getName()); } + mMediaDevices.clear(); + mCurrentConnectedDevice = null; + if (TextUtils.isEmpty(mPackageName)) { + buildAllRoutes(); + } else { + buildAvailableRoutes(); + } + + final String id = mCurrentConnectedDevice != null + ? mCurrentConnectedDevice.getId() + : null; + dispatchConnectedDeviceChanged(id); } @Override diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java index 922caeb0a817..fb8a0b7f63ca 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java @@ -45,6 +45,7 @@ import java.util.concurrent.CopyOnWriteArrayList; public class LocalMediaManager implements BluetoothCallback { private static final Comparator<MediaDevice> COMPARATOR = Comparator.naturalOrder(); private static final String TAG = "LocalMediaManager"; + private static final int MAX_DISCONNECTED_DEVICE_NUM = 5; @Retention(RetentionPolicy.SOURCE) @IntDef({MediaDeviceState.STATE_CONNECTED, @@ -69,9 +70,9 @@ public class LocalMediaManager implements BluetoothCallback { private MediaDevice mOnTransferBluetoothDevice; @VisibleForTesting - List<MediaDevice> mMediaDevices = new ArrayList<>(); + List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>(); @VisibleForTesting - List<MediaDevice> mDisconnectedMediaDevices = new ArrayList<>(); + List<MediaDevice> mDisconnectedMediaDevices = new CopyOnWriteArrayList<>(); @VisibleForTesting MediaDevice mPhoneDevice; @VisibleForTesting @@ -207,6 +208,7 @@ public class LocalMediaManager implements BluetoothCallback { public void stopScan() { mInfoMediaManager.unregisterCallback(mMediaDeviceCallback); mInfoMediaManager.stopScan(); + unRegisterDeviceAttributeChangeCallback(); } /** @@ -397,32 +399,39 @@ public class LocalMediaManager implements BluetoothCallback { } private List<MediaDevice> buildDisconnectedBluetoothDevice() { - for (MediaDevice device : mDisconnectedMediaDevices) { - ((BluetoothMediaDevice) device).getCachedDevice() - .unregisterCallback(mDeviceAttributeChangeCallback); - } - mDisconnectedMediaDevices.clear(); final List<BluetoothDevice> bluetoothDevices = mBluetoothAdapter.getMostRecentlyConnectedDevices(); final CachedBluetoothDeviceManager cachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager(); + final List<CachedBluetoothDevice> cachedBluetoothDeviceList = new ArrayList<>(); + int deviceCount = 0; for (BluetoothDevice device : bluetoothDevices) { final CachedBluetoothDevice cachedDevice = cachedDeviceManager.findDevice(device); if (cachedDevice != null) { if (cachedDevice.getBondState() == BluetoothDevice.BOND_BONDED && !cachedDevice.isConnected()) { - final MediaDevice mediaDevice = new BluetoothMediaDevice(mContext, - cachedDevice, - null, null, mPackageName); - if (!mMediaDevices.contains(mediaDevice)) { - cachedDevice.registerCallback(mDeviceAttributeChangeCallback); - mDisconnectedMediaDevices.add(mediaDevice); + deviceCount++; + cachedBluetoothDeviceList.add(cachedDevice); + if (deviceCount >= MAX_DISCONNECTED_DEVICE_NUM) { + break; } } } } + + unRegisterDeviceAttributeChangeCallback(); + mDisconnectedMediaDevices.clear(); + for (CachedBluetoothDevice cachedDevice : cachedBluetoothDeviceList) { + final MediaDevice mediaDevice = new BluetoothMediaDevice(mContext, + cachedDevice, + null, null, mPackageName); + if (!mMediaDevices.contains(mediaDevice)) { + cachedDevice.registerCallback(mDeviceAttributeChangeCallback); + mDisconnectedMediaDevices.add(mediaDevice); + } + } return new ArrayList<>(mDisconnectedMediaDevices); } @@ -473,6 +482,12 @@ public class LocalMediaManager implements BluetoothCallback { } } + private void unRegisterDeviceAttributeChangeCallback() { + for (MediaDevice device : mDisconnectedMediaDevices) { + ((BluetoothMediaDevice) device).getCachedDevice() + .unregisterCallback(mDeviceAttributeChangeCallback); + } + } /** * Callback for notifying device information updating diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java b/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java index 01a57894b68e..87e97b17b914 100644 --- a/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java +++ b/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java @@ -25,6 +25,7 @@ import android.service.notification.Condition; import android.service.notification.ZenModeConfig; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.LinearLayout; @@ -228,39 +229,40 @@ public class ZenDurationDialog { } private void updateButtons(ConditionTag tag, View row, int rowIndex) { - // minus button - final ImageView button1 = (ImageView) row.findViewById(android.R.id.button1); - button1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - onClickTimeButton(row, tag, false /*down*/, rowIndex); - tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE); - } - }); - - // plus button - final ImageView button2 = (ImageView) row.findViewById(android.R.id.button2); - button2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - onClickTimeButton(row, tag, true /*up*/, rowIndex); - tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE); - } - }); - + final ImageView minusButton = (ImageView) row.findViewById(android.R.id.button1); + final ImageView plusButton = (ImageView) row.findViewById(android.R.id.button2); final long time = tag.countdownZenDuration; if (rowIndex == COUNTDOWN_CONDITION_INDEX) { - button1.setVisibility(View.VISIBLE); - button2.setVisibility(View.VISIBLE); + minusButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onClickTimeButton(row, tag, false /*down*/, rowIndex); + tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE); + } + }); - button1.setEnabled(time > MIN_BUCKET_MINUTES); - button2.setEnabled(tag.countdownZenDuration != MAX_BUCKET_MINUTES); + plusButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onClickTimeButton(row, tag, true /*up*/, rowIndex); + tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE); + } + }); + minusButton.setVisibility(View.VISIBLE); + plusButton.setVisibility(View.VISIBLE); - button1.setAlpha(button1.isEnabled() ? 1f : .5f); - button2.setAlpha(button2.isEnabled() ? 1f : .5f); + minusButton.setEnabled(time > MIN_BUCKET_MINUTES); + plusButton.setEnabled(tag.countdownZenDuration != MAX_BUCKET_MINUTES); + + minusButton.setAlpha(minusButton.isEnabled() ? 1f : .5f); + plusButton.setAlpha(plusButton.isEnabled() ? 1f : .5f); } else { - button1.setVisibility(View.GONE); - button2.setVisibility(View.GONE); + if (minusButton != null) { + ((ViewGroup) row).removeView(minusButton); + } + if (plusButton != null) { + ((ViewGroup) row).removeView(plusButton); + } } } diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java index 8bf48e59165e..c713d7813a54 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java @@ -17,6 +17,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; +import android.net.ConnectivityManager.NetworkCallback; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkInfo; @@ -36,7 +37,10 @@ import com.android.settingslib.R; import java.util.List; -public class WifiStatusTracker extends ConnectivityManager.NetworkCallback { +/** + * Track status of Wi-Fi for the Sys UI. + */ +public class WifiStatusTracker { private final Context mContext; private final WifiNetworkScoreCache mWifiNetworkScoreCache; private final WifiManager mWifiManager; @@ -55,8 +59,9 @@ public class WifiStatusTracker extends ConnectivityManager.NetworkCallback { .clearCapabilities() .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN) .addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(); - private final ConnectivityManager.NetworkCallback mNetworkCallback = new ConnectivityManager - .NetworkCallback() { + private final NetworkCallback mNetworkCallback = new NetworkCallback() { + // Note: onCapabilitiesChanged is guaranteed to be called "immediately" after onAvailable + // and onLinkPropertiesChanged. @Override public void onCapabilitiesChanged( Network network, NetworkCapabilities networkCapabilities) { @@ -64,11 +69,35 @@ public class WifiStatusTracker extends ConnectivityManager.NetworkCallback { mCallback.run(); } }; + private final NetworkCallback mDefaultNetworkCallback = new NetworkCallback() { + @Override + public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) { + // network is now the default network, and its capabilities are nc. + // This method will always be called immediately after the network becomes the + // default, in addition to any time the capabilities change while the network is + // the default. + mDefaultNetwork = network; + mDefaultNetworkCapabilities = nc; + updateStatusLabel(); + mCallback.run(); + } + @Override + public void onLost(Network network) { + // The system no longer has a default network. + mDefaultNetwork = null; + mDefaultNetworkCapabilities = null; + updateStatusLabel(); + mCallback.run(); + } + }; + private Network mDefaultNetwork = null; + private NetworkCapabilities mDefaultNetworkCapabilities = null; private final Runnable mCallback; private WifiInfo mWifiInfo; public boolean enabled; public boolean isCaptivePortal; + public boolean isDefaultNetwork; public int state; public boolean connected; public String ssid; @@ -94,11 +123,13 @@ public class WifiStatusTracker extends ConnectivityManager.NetworkCallback { mWifiNetworkScoreCache.registerListener(mCacheListener); mConnectivityManager.registerNetworkCallback( mNetworkRequest, mNetworkCallback, mHandler); + mConnectivityManager.registerDefaultNetworkCallback(mDefaultNetworkCallback, mHandler); } else { mNetworkScoreManager.unregisterNetworkScoreCache(NetworkKey.TYPE_WIFI, mWifiNetworkScoreCache); mWifiNetworkScoreCache.unregisterListener(); mConnectivityManager.unregisterNetworkCallback(mNetworkCallback); + mConnectivityManager.unregisterNetworkCallback(mDefaultNetworkCallback); } } @@ -154,8 +185,17 @@ public class WifiStatusTracker extends ConnectivityManager.NetworkCallback { } private void updateStatusLabel() { - final NetworkCapabilities networkCapabilities - = mConnectivityManager.getNetworkCapabilities(mWifiManager.getCurrentNetwork()); + NetworkCapabilities networkCapabilities; + final Network currentWifiNetwork = mWifiManager.getCurrentNetwork(); + if (currentWifiNetwork != null && currentWifiNetwork.equals(mDefaultNetwork)) { + // Wifi is connected and the default network. + isDefaultNetwork = true; + networkCapabilities = mDefaultNetworkCapabilities; + } else { + isDefaultNetwork = false; + networkCapabilities = mConnectivityManager.getNetworkCapabilities( + mWifiManager.getCurrentNetwork()); + } isCaptivePortal = false; if (networkCapabilities != null) { if (networkCapabilities.hasCapability(NET_CAPABILITY_CAPTIVE_PORTAL)) { diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java index ed0857ca21dc..204a93333d81 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java @@ -164,6 +164,38 @@ public class MetricsFeatureProviderTest { } @Test + public void logStartedIntentWithProfile_isPersonalProfile_shouldTagPersonal() { + final Intent intent = new Intent().setComponent(new ComponentName("pkg", "cls")); + + final boolean loggable = mProvider.logStartedIntentWithProfile(intent, + MetricsEvent.SETTINGS_GESTURES, false); + + assertThat(loggable).isTrue(); + verify(mLogWriter).action( + MetricsEvent.SETTINGS_GESTURES, + MetricsEvent.ACTION_SETTINGS_TILE_CLICK, + SettingsEnums.PAGE_UNKNOWN, + "pkg/cls/personal", + 0); + } + + @Test + public void logStartedIntentWithProfile_isWorkProfile_shouldTagWork() { + final Intent intent = new Intent().setComponent(new ComponentName("pkg", "cls")); + + final boolean loggable = mProvider.logStartedIntentWithProfile(intent, + MetricsEvent.SETTINGS_GESTURES, true); + + assertThat(loggable).isTrue(); + verify(mLogWriter).action( + MetricsEvent.SETTINGS_GESTURES, + MetricsEvent.ACTION_SETTINGS_TILE_CLICK, + SettingsEnums.PAGE_UNKNOWN, + "pkg/cls/work", + 0); + } + + @Test public void getAttribution_noActivity_shouldReturnUnknown() { assertThat(mProvider.getAttribution(null /* activity */)) .isEqualTo(SettingsEnums.PAGE_UNKNOWN); diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaManagerTest.java deleted file mode 100644 index 0ee5ea8a2eed..000000000000 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaManagerTest.java +++ /dev/null @@ -1,467 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settingslib.media; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothDevice; -import android.bluetooth.BluetoothProfile; -import android.content.Context; - -import com.android.settingslib.bluetooth.A2dpProfile; -import com.android.settingslib.bluetooth.BluetoothEventManager; -import com.android.settingslib.bluetooth.CachedBluetoothDevice; -import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager; -import com.android.settingslib.bluetooth.HearingAidProfile; -import com.android.settingslib.bluetooth.LocalBluetoothManager; -import com.android.settingslib.bluetooth.LocalBluetoothProfileManager; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -@RunWith(RobolectricTestRunner.class) -public class BluetoothMediaManagerTest { - - private static final String TEST_ADDRESS = "11:22:33:44:55:66"; - - @Mock - private LocalBluetoothManager mLocalBluetoothManager; - @Mock - private LocalBluetoothProfileManager mProfileManager; - @Mock - private A2dpProfile mA2dpProfile; - @Mock - private HearingAidProfile mHapProfile; - @Mock - private CachedBluetoothDeviceManager mCachedDeviceManager; - @Mock - private BluetoothEventManager mEventManager; - @Mock - private MediaManager.MediaDeviceCallback mCallback; - - private BluetoothMediaManager mMediaManager; - private Context mContext; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - mContext = RuntimeEnvironment.application; - - when(mLocalBluetoothManager.getProfileManager()).thenReturn(mProfileManager); - when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager); - when(mProfileManager.getA2dpProfile()).thenReturn(mA2dpProfile); - when(mProfileManager.getHearingAidProfile()).thenReturn(mHapProfile); - when(mLocalBluetoothManager.getEventManager()).thenReturn(mEventManager); - - mMediaManager = new BluetoothMediaManager(mContext, mLocalBluetoothManager, null); - } - - @Test - public void startScan_haveA2dpProfileDeviceIsPreferredAndBonded_shouldAddDevice() { - final List<BluetoothDevice> devices = new ArrayList<>(); - final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class); - final BluetoothDevice bluetoothDevice = mock(BluetoothDevice.class); - devices.add(bluetoothDevice); - - when(mA2dpProfile.getConnectableDevices()).thenReturn(devices); - when(mCachedDeviceManager.findDevice(bluetoothDevice)).thenReturn(cachedDevice); - when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); - when(mA2dpProfile.isEnabled(bluetoothDevice)).thenReturn(true); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - mMediaManager.startScan(); - assertThat(mMediaManager.mMediaDevices).hasSize(devices.size()); - } - - @Test - public void startScan_haveA2dpProfileDeviceIsPreferredAndBondNone_shouldNotAddDevice() { - final List<BluetoothDevice> devices = new ArrayList<>(); - final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class); - final BluetoothDevice bluetoothDevice = mock(BluetoothDevice.class); - devices.add(bluetoothDevice); - - when(mA2dpProfile.getConnectableDevices()).thenReturn(devices); - when(mCachedDeviceManager.findDevice(bluetoothDevice)).thenReturn(cachedDevice); - when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE); - when(mA2dpProfile.isEnabled(bluetoothDevice)).thenReturn(true); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - mMediaManager.startScan(); - assertThat(mMediaManager.mMediaDevices).isEmpty(); - } - - @Test - public void startScan_noA2dpProfileBluetoothDevice_shouldNotAddDevice() { - final List<BluetoothDevice> devices = new ArrayList<>(); - - when(mA2dpProfile.getConnectableDevices()).thenReturn(devices); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - mMediaManager.startScan(); - assertThat(mMediaManager.mMediaDevices).isEmpty(); - } - - @Test - public void startScan_haveHapProfileDeviceIsPreferredAndBonded_shouldAddDevice() { - final List<BluetoothDevice> devices = new ArrayList<>(); - final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class); - final BluetoothDevice bluetoothDevice = mock(BluetoothDevice.class); - devices.add(bluetoothDevice); - - when(mHapProfile.getConnectableDevices()).thenReturn(devices); - when(mCachedDeviceManager.findDevice(bluetoothDevice)).thenReturn(cachedDevice); - when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); - when(mHapProfile.isEnabled(bluetoothDevice)).thenReturn(true); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - mMediaManager.startScan(); - assertThat(mMediaManager.mMediaDevices).hasSize(devices.size()); - } - - @Test - public void startScan_noHapProfileBluetoothDevice_shouldNotAddDevice() { - final List<BluetoothDevice> devices = new ArrayList<>(); - - when(mHapProfile.getConnectableDevices()).thenReturn(devices); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - mMediaManager.startScan(); - assertThat(mMediaManager.mMediaDevices).isEmpty(); - } - - @Test - public void starScan_a2dpAndHapProfileNotReady_shouldRegisterCallback() { - final Collection<CachedBluetoothDevice> mDevices = new ArrayList<>(); - final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class); - mDevices.add(cachedDevice); - - when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(mDevices); - when(mA2dpProfile.isProfileReady()).thenReturn(false); - when(mHapProfile.isProfileReady()).thenReturn(false); - - mMediaManager.startScan(); - - verify(mProfileManager).addServiceListener(mMediaManager); - } - - @Test - public void starScan_a2dpAndHapProfileReady_shouldNotRegisterCallback() { - final Collection<CachedBluetoothDevice> mDevices = new ArrayList<>(); - final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class); - mDevices.add(cachedDevice); - - when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(mDevices); - when(mA2dpProfile.isProfileReady()).thenReturn(true); - when(mHapProfile.isProfileReady()).thenReturn(true); - - mMediaManager.startScan(); - - verify(mProfileManager, never()).addServiceListener(mMediaManager); - } - - @Test - public void onServiceConnected_a2dpAndHapProfileNotReady_doNothing() { - final Collection<CachedBluetoothDevice> mDevices = new ArrayList<>(); - final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class); - mDevices.add(cachedDevice); - - when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(mDevices); - when(mA2dpProfile.isProfileReady()).thenReturn(false); - when(mHapProfile.isProfileReady()).thenReturn(false); - - mMediaManager.startScan(); - mMediaManager.onServiceConnected(); - - verify(mProfileManager, never()).removeServiceListener(mMediaManager); - } - - @Test - public void onDeviceAttributesChanged_a2dpAndHapProfileReady_shouldUnregisterCallback() { - final Collection<CachedBluetoothDevice> mDevices = new ArrayList<>(); - final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class); - mDevices.add(cachedDevice); - - when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(mDevices); - when(mA2dpProfile.isProfileReady()).thenReturn(true); - when(mHapProfile.isProfileReady()).thenReturn(true); - - mMediaManager.startScan(); - mMediaManager.onServiceConnected(); - - verify(mProfileManager).removeServiceListener(mMediaManager); - } - - @Test - public void onBluetoothStateChanged_bluetoothStateIsOn_callOnDeviceListAdded() { - mMediaManager.registerCallback(mCallback); - mMediaManager.onBluetoothStateChanged(BluetoothAdapter.STATE_ON); - - verify(mCallback).onDeviceListAdded(any()); - } - - @Test - public void onBluetoothStateChanged_bluetoothStateIsOff_callOnDeviceListRemoved() { - final BluetoothMediaDevice device1 = mock(BluetoothMediaDevice.class); - final BluetoothMediaDevice device2 = mock(BluetoothMediaDevice.class); - final CachedBluetoothDevice cachedDevice1 = mock(CachedBluetoothDevice.class); - final CachedBluetoothDevice cachedDevice2 = mock(CachedBluetoothDevice.class); - mMediaManager.mMediaDevices.add(device1); - mMediaManager.mMediaDevices.add(device2); - - when(device1.getCachedDevice()).thenReturn(cachedDevice1); - when(device2.getCachedDevice()).thenReturn(cachedDevice2); - - mMediaManager.registerCallback(mCallback); - mMediaManager.onBluetoothStateChanged(BluetoothAdapter.STATE_OFF); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - verify(mCallback).onDeviceListRemoved(any()); - } - - @Test - public void onDeviceAdded_cachedDeviceIsConnected_callOnDeviceAdded() { - final CachedBluetoothDevice device = mock(CachedBluetoothDevice.class); - - when(device.isConnectedHearingAidDevice()).thenReturn(true); - when(device.isConnectedA2dpDevice()).thenReturn(true); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - mMediaManager.registerCallback(mCallback); - mMediaManager.onDeviceAdded(device); - - assertThat(mMediaManager.mMediaDevices).hasSize(1); - verify(mCallback).onDeviceAdded(any()); - - } - - @Test - public void onDeviceAdded_cachedDeviceIsDisconnected_doNothing() { - final CachedBluetoothDevice device = mock(CachedBluetoothDevice.class); - - when(device.isConnectedHearingAidDevice()).thenReturn(false); - when(device.isConnectedA2dpDevice()).thenReturn(false); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - mMediaManager.registerCallback(mCallback); - mMediaManager.onDeviceAdded(device); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - verify(mCallback, never()).onDeviceAdded(any()); - - } - - @Test - public void onDeviceDeleted_cachedDeviceIsConnected_doNothing() { - final CachedBluetoothDevice device = mock(CachedBluetoothDevice.class); - final BluetoothMediaDevice bluetoothMediaDevice = mock(BluetoothMediaDevice.class); - mMediaManager.mMediaDevices.add(bluetoothMediaDevice); - - when(device.isConnectedHearingAidDevice()).thenReturn(true); - when(device.isConnectedA2dpDevice()).thenReturn(true); - when(device.getAddress()).thenReturn(TEST_ADDRESS); - when(bluetoothMediaDevice.getId()).thenReturn(TEST_ADDRESS); - - assertThat(mMediaManager.mMediaDevices).hasSize(1); - mMediaManager.registerCallback(mCallback); - mMediaManager.onDeviceDeleted(device); - - assertThat(mMediaManager.mMediaDevices).hasSize(1); - verify(mCallback, never()).onDeviceRemoved(any()); - } - - @Test - public void onDeviceDeleted_cachedDeviceIsDisconnected_callOnDeviceRemoved() { - final CachedBluetoothDevice device = mock(CachedBluetoothDevice.class); - final BluetoothMediaDevice bluetoothMediaDevice = mock(BluetoothMediaDevice.class); - mMediaManager.mMediaDevices.add(bluetoothMediaDevice); - - when(device.isConnectedHearingAidDevice()).thenReturn(false); - when(device.isConnectedA2dpDevice()).thenReturn(false); - when(device.getAddress()).thenReturn(TEST_ADDRESS); - when(bluetoothMediaDevice.getId()).thenReturn(TEST_ADDRESS); - - assertThat(mMediaManager.mMediaDevices).hasSize(1); - mMediaManager.registerCallback(mCallback); - mMediaManager.onDeviceDeleted(device); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - verify(mCallback).onDeviceRemoved(any()); - } - - @Test - public void onProfileConnectionStateChanged_cachedDeviceIsBonded_callDeviceAttributesChanged() { - final CachedBluetoothDevice device = mock(CachedBluetoothDevice.class); - final BluetoothMediaDevice bluetoothMediaDevice = mock(BluetoothMediaDevice.class); - mMediaManager.mMediaDevices.add(bluetoothMediaDevice); - - when(device.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); - when(device.getAddress()).thenReturn(TEST_ADDRESS); - when(bluetoothMediaDevice.getId()).thenReturn(TEST_ADDRESS); - - assertThat(mMediaManager.mMediaDevices).hasSize(1); - mMediaManager.registerCallback(mCallback); - mMediaManager.onProfileConnectionStateChanged(device, 0, 0); - - assertThat(mMediaManager.mMediaDevices).hasSize(1); - verify(mCallback).onDeviceAttributesChanged(); - } - - @Test - public void onProfileConnectionStateChanged_cachedDeviceIsBondNone_callOnDeviceRemoved() { - final CachedBluetoothDevice device = mock(CachedBluetoothDevice.class); - final BluetoothMediaDevice bluetoothMediaDevice = mock(BluetoothMediaDevice.class); - mMediaManager.mMediaDevices.add(bluetoothMediaDevice); - - when(device.getBondState()).thenReturn(BluetoothDevice.BOND_NONE); - when(device.getAddress()).thenReturn(TEST_ADDRESS); - when(bluetoothMediaDevice.getId()).thenReturn(TEST_ADDRESS); - - assertThat(mMediaManager.mMediaDevices).hasSize(1); - mMediaManager.registerCallback(mCallback); - mMediaManager.onProfileConnectionStateChanged(device, 0, 0); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - verify(mCallback).onDeviceRemoved(any()); - } - - @Test - public void onAclConnectionStateChanged_cachedDeviceIsBonded_callDeviceAttributesChanged() { - final CachedBluetoothDevice device = mock(CachedBluetoothDevice.class); - final BluetoothMediaDevice bluetoothMediaDevice = mock(BluetoothMediaDevice.class); - mMediaManager.mMediaDevices.add(bluetoothMediaDevice); - - when(device.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); - when(device.getAddress()).thenReturn(TEST_ADDRESS); - when(bluetoothMediaDevice.getId()).thenReturn(TEST_ADDRESS); - - assertThat(mMediaManager.mMediaDevices).hasSize(1); - mMediaManager.registerCallback(mCallback); - mMediaManager.onAclConnectionStateChanged(device, 0); - - assertThat(mMediaManager.mMediaDevices).hasSize(1); - verify(mCallback).onDeviceAttributesChanged(); - } - - @Test - public void onAclConnectionStateChanged_cachedDeviceIsBondNone_callOnDeviceRemoved() { - final CachedBluetoothDevice device = mock(CachedBluetoothDevice.class); - final BluetoothMediaDevice bluetoothMediaDevice = mock(BluetoothMediaDevice.class); - mMediaManager.mMediaDevices.add(bluetoothMediaDevice); - - when(device.getBondState()).thenReturn(BluetoothDevice.BOND_NONE); - when(device.getAddress()).thenReturn(TEST_ADDRESS); - when(bluetoothMediaDevice.getId()).thenReturn(TEST_ADDRESS); - - assertThat(mMediaManager.mMediaDevices).hasSize(1); - mMediaManager.registerCallback(mCallback); - mMediaManager.onAclConnectionStateChanged(device, 0); - - assertThat(mMediaManager.mMediaDevices).isEmpty(); - verify(mCallback).onDeviceRemoved(any()); - } - - @Test - public void onActiveDeviceChanged_isHapProfile_callOnActiveDeviceChanged() { - final CachedBluetoothDevice device = mock(CachedBluetoothDevice.class); - - when(device.getAddress()).thenReturn(TEST_ADDRESS); - - mMediaManager.registerCallback(mCallback); - mMediaManager.onActiveDeviceChanged(device, BluetoothProfile.HEARING_AID); - - verify(mCallback).onConnectedDeviceChanged(any()); - } - - @Test - public void onActiveDeviceChanged_isA2dpProfile_callOnActiveDeviceChanged() { - final CachedBluetoothDevice device = mock(CachedBluetoothDevice.class); - - when(device.getAddress()).thenReturn(TEST_ADDRESS); - - mMediaManager.registerCallback(mCallback); - mMediaManager.onActiveDeviceChanged(device, BluetoothProfile.A2DP); - - verify(mCallback).onConnectedDeviceChanged(any()); - } - - @Test - public void onActiveDeviceChanged_isNotA2dpAndHapProfile_doNothing() { - final CachedBluetoothDevice device = mock(CachedBluetoothDevice.class); - - when(device.getAddress()).thenReturn(TEST_ADDRESS); - - mMediaManager.registerCallback(mCallback); - mMediaManager.onActiveDeviceChanged(device, BluetoothProfile.HEALTH); - - verify(mCallback, never()).onConnectedDeviceChanged(any()); - } - - @Test - public void onActiveDeviceChanged_hearingAidDeviceIsActive_returnHearingAidDeviceId() { - final Long hiSyncId = Integer.toUnsignedLong(12345); - final BluetoothDevice bluetoothDevice = mock(BluetoothDevice.class); - final List<BluetoothDevice> devices = new ArrayList<>(); - devices.add(bluetoothDevice); - final BluetoothMediaDevice bluetoothMediaDevice = mock(BluetoothMediaDevice.class); - mMediaManager.mMediaDevices.add(bluetoothMediaDevice); - - when(mHapProfile.getHiSyncId(bluetoothDevice)).thenReturn(hiSyncId); - when(mHapProfile.getActiveDevices()).thenReturn(devices); - when(bluetoothMediaDevice.getId()).thenReturn(Long.toString(hiSyncId)); - - mMediaManager.registerCallback(mCallback); - mMediaManager.onActiveDeviceChanged(null, BluetoothProfile.A2DP); - - verify(mCallback).onConnectedDeviceChanged(Long.toString(hiSyncId)); - } - - @Test - public void onActiveDeviceChanged_hearingAidDeviceNotActive_returnPhoneDeviceId() { - final List<BluetoothDevice> devices = new ArrayList<>(); - - when(mHapProfile.getActiveDevices()).thenReturn(devices); - - mMediaManager.registerCallback(mCallback); - mMediaManager.onActiveDeviceChanged(null, BluetoothProfile.A2DP); - - verify(mCallback).onConnectedDeviceChanged(PhoneMediaDevice.ID); - } - - @Test - public void onAudioModeChanged_shouldCallOnDeviceAttributesChanged() { - mMediaManager.registerCallback(mCallback); - mMediaManager.onAudioModeChanged(); - - verify(mCallback).onDeviceAttributesChanged(); - } -} diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java index 7f93f697152c..c21582cdf203 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java @@ -77,6 +77,14 @@ public class InfoMediaManagerTest { @Test public void onRouteAdded_getAvailableRoutes_shouldAddMediaDevice() { + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List<String> selectedRoutes = new ArrayList<>(); + selectedRoutes.add(TEST_ID); + when(sessionInfo.getSelectedRoutes()).thenReturn(selectedRoutes); + mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); + final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); @@ -120,6 +128,14 @@ public class InfoMediaManagerTest { @Test public void onControlCategoriesChanged_samePackageName_shouldAddMediaDevice() { + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List<String> selectedRoutes = new ArrayList<>(); + selectedRoutes.add(TEST_ID); + when(sessionInfo.getSelectedRoutes()).thenReturn(selectedRoutes); + mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); + final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); @@ -148,9 +164,15 @@ public class InfoMediaManagerTest { @Test public void onRoutesChanged_getAvailableRoutes_shouldAddMediaDevice() { - final MediaRoute2Info info = mock(MediaRoute2Info.class); - mInfoMediaManager.registerCallback(mCallback); + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List<String> selectedRoutes = new ArrayList<>(); + selectedRoutes.add(TEST_ID); + when(sessionInfo.getSelectedRoutes()).thenReturn(selectedRoutes); + mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); + final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); @@ -167,14 +189,11 @@ public class InfoMediaManagerTest { assertThat(infoDevice.getId()).isEqualTo(TEST_ID); assertThat(mInfoMediaManager.getCurrentConnectedDevice()).isEqualTo(infoDevice); assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); - verify(mCallback).onConnectedDeviceChanged(TEST_ID); } @Test public void onRoutesChanged_buildAllRoutes_shouldAddMediaDevice() { final MediaRoute2Info info = mock(MediaRoute2Info.class); - mInfoMediaManager.registerCallback(mCallback); - when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); when(info.isSystemRoute()).thenReturn(true); @@ -192,7 +211,6 @@ public class InfoMediaManagerTest { final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0); assertThat(infoDevice.getId()).isEqualTo(TEST_ID); assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); - verify(mCallback).onConnectedDeviceChanged(null); } @Test @@ -210,6 +228,14 @@ public class InfoMediaManagerTest { @Test public void onRoutesRemoved_getAvailableRoutes_shouldAddMediaDevice() { + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List<String> selectedRoutes = new ArrayList<>(); + selectedRoutes.add(TEST_ID); + when(sessionInfo.getSelectedRoutes()).thenReturn(selectedRoutes); + mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); + final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); @@ -409,13 +435,12 @@ public class InfoMediaManagerTest { } @Test - public void getSessionVolumeMax_notContainPackageName_returnNotFound() { + public void getSessionVolumeMax_routeSessionInfoIsNull_returnNotFound() { final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); - final RoutingSessionInfo info = mock(RoutingSessionInfo.class); + final RoutingSessionInfo info = null; routingSessionInfos.add(info); mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); - when(info.getClientPackageName()).thenReturn("com.fake.packagename"); assertThat(mInfoMediaManager.getSessionVolumeMax()).isEqualTo(-1); } @@ -442,13 +467,12 @@ public class InfoMediaManagerTest { } @Test - public void getSessionVolume_notContainPackageName_returnNotFound() { + public void getSessionVolume_routeSessionInfoIsNull_returnNotFound() { final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); - final RoutingSessionInfo info = mock(RoutingSessionInfo.class); + final RoutingSessionInfo info = null; routingSessionInfos.add(info); mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); - when(info.getClientPackageName()).thenReturn("com.fake.packagename"); assertThat(mInfoMediaManager.getSessionVolume()).isEqualTo(-1); } @@ -480,14 +504,12 @@ public class InfoMediaManagerTest { } @Test - public void getSessionName_notContainPackageName_returnNull() { + public void getSessionName_routeSessionInfoIsNull_returnNull() { final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); - final RoutingSessionInfo info = mock(RoutingSessionInfo.class); + final RoutingSessionInfo info = null; routingSessionInfos.add(info); mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); - when(info.getClientPackageName()).thenReturn("com.fake.packagename"); - when(info.getName()).thenReturn(TEST_NAME); assertThat(mInfoMediaManager.getSessionName()).isNull(); } @@ -522,4 +544,61 @@ public class InfoMediaManagerTest { verify(mCallback).onRequestFailed(REASON_NETWORK_ERROR); } + + @Test + public void onTransferred_getAvailableRoutes_shouldAddMediaDevice() { + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List<String> selectedRoutes = new ArrayList<>(); + selectedRoutes.add(TEST_ID); + when(sessionInfo.getSelectedRoutes()).thenReturn(selectedRoutes); + mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); + + final MediaRoute2Info info = mock(MediaRoute2Info.class); + mInfoMediaManager.registerCallback(mCallback); + + when(info.getId()).thenReturn(TEST_ID); + when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); + + final List<MediaRoute2Info> routes = new ArrayList<>(); + routes.add(info); + mShadowRouter2Manager.setAvailableRoutes(routes); + + final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID); + assertThat(mediaDevice).isNull(); + + mInfoMediaManager.mMediaRouterCallback.onTransferred(null, null); + + final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0); + assertThat(infoDevice.getId()).isEqualTo(TEST_ID); + assertThat(mInfoMediaManager.getCurrentConnectedDevice()).isEqualTo(infoDevice); + assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); + verify(mCallback).onConnectedDeviceChanged(TEST_ID); + } + + @Test + public void onTransferred_buildAllRoutes_shouldAddMediaDevice() { + final MediaRoute2Info info = mock(MediaRoute2Info.class); + mInfoMediaManager.registerCallback(mCallback); + + when(info.getId()).thenReturn(TEST_ID); + when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); + when(info.isSystemRoute()).thenReturn(true); + + final List<MediaRoute2Info> routes = new ArrayList<>(); + routes.add(info); + mShadowRouter2Manager.setAllRoutes(routes); + + final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID); + assertThat(mediaDevice).isNull(); + + mInfoMediaManager.mPackageName = ""; + mInfoMediaManager.mMediaRouterCallback.onTransferred(null, null); + + final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0); + assertThat(infoDevice.getId()).isEqualTo(TEST_ID); + assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); + verify(mCallback).onConnectedDeviceChanged(null); + } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java index 4c61ef504090..1c690724b1c1 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java @@ -67,8 +67,6 @@ public class LocalMediaManagerTest { private static final String TEST_PACKAGE_NAME = "com.test.playmusic"; @Mock - private BluetoothMediaManager mBluetoothMediaManager; - @Mock private InfoMediaManager mInfoMediaManager; @Mock private LocalBluetoothManager mLocalBluetoothManager; @@ -601,4 +599,56 @@ public class LocalMediaManagerTest { verify(mCallback).onRequestFailed(1); } + + @Test + public void onDeviceListAdded_haveDisconnectedDevice_list5DisconnectedDevice() { + final List<MediaDevice> devices = new ArrayList<>(); + final MediaDevice device1 = mock(MediaDevice.class); + final MediaDevice device2 = mock(MediaDevice.class); + final MediaDevice device3 = mock(MediaDevice.class); + mLocalMediaManager.mPhoneDevice = mock(PhoneMediaDevice.class); + devices.add(device1); + devices.add(device2); + mLocalMediaManager.mMediaDevices.add(device3); + mLocalMediaManager.mMediaDevices.add(mLocalMediaManager.mPhoneDevice); + + final List<BluetoothDevice> bluetoothDevices = new ArrayList<>(); + final BluetoothDevice bluetoothDevice = mock(BluetoothDevice.class); + final BluetoothDevice bluetoothDevice2 = mock(BluetoothDevice.class); + final BluetoothDevice bluetoothDevice3 = mock(BluetoothDevice.class); + final BluetoothDevice bluetoothDevice4 = mock(BluetoothDevice.class); + final BluetoothDevice bluetoothDevice5 = mock(BluetoothDevice.class); + final BluetoothDevice bluetoothDevice6 = mock(BluetoothDevice.class); + final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class); + final CachedBluetoothDeviceManager cachedManager = mock(CachedBluetoothDeviceManager.class); + bluetoothDevices.add(bluetoothDevice); + bluetoothDevices.add(bluetoothDevice2); + bluetoothDevices.add(bluetoothDevice3); + bluetoothDevices.add(bluetoothDevice4); + bluetoothDevices.add(bluetoothDevice5); + bluetoothDevices.add(bluetoothDevice6); + mShadowBluetoothAdapter.setMostRecentlyConnectedDevices(bluetoothDevices); + + when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(cachedManager); + when(cachedManager.findDevice(bluetoothDevice)).thenReturn(cachedDevice); + when(cachedManager.findDevice(bluetoothDevice2)).thenReturn(cachedDevice); + when(cachedManager.findDevice(bluetoothDevice3)).thenReturn(cachedDevice); + when(cachedManager.findDevice(bluetoothDevice4)).thenReturn(cachedDevice); + when(cachedManager.findDevice(bluetoothDevice5)).thenReturn(cachedDevice); + when(cachedManager.findDevice(bluetoothDevice6)).thenReturn(cachedDevice); + when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); + when(cachedDevice.isConnected()).thenReturn(false); + + when(device1.getId()).thenReturn(TEST_DEVICE_ID_1); + when(device2.getId()).thenReturn(TEST_DEVICE_ID_2); + when(device3.getId()).thenReturn(TEST_DEVICE_ID_3); + when(mLocalMediaManager.mPhoneDevice.getId()).thenReturn("test_phone_id"); + + assertThat(mLocalMediaManager.mMediaDevices).hasSize(2); + mLocalMediaManager.registerCallback(mCallback); + mLocalMediaManager.mMediaDeviceCallback.onDeviceListAdded(devices); + + assertThat(mLocalMediaManager.mMediaDevices).hasSize(7); + verify(mCallback).onDeviceListUpdate(any()); + } } diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java index d320df9c24ba..736e995451cd 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java @@ -96,6 +96,7 @@ public class SecureSettings { Settings.Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, Settings.Secure.QS_TILES, + Settings.Secure.CONTROLS_ENABLED, Settings.Secure.DOZE_ENABLED, Settings.Secure.DOZE_ALWAYS_ON, Settings.Secure.DOZE_PICK_UP_GESTURE, @@ -163,6 +164,6 @@ public class SecureSettings { Settings.Secure.AWARE_TAP_PAUSE_TOUCH_COUNT, Settings.Secure.PEOPLE_STRIP, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, - Settings.Secure.ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS, + Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, }; } diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java index 8801a9c32a36..b413e8e9dda2 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java @@ -78,9 +78,7 @@ public class SecureSettingsValidators { ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR); // technically either ComponentName or class name, but there's proper value // validation at callsites, so allow any non-null string - VALIDATORS.put( - Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT, - ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR); + VALIDATORS.put(Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT, value -> value != null); VALIDATORS.put(Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, BOOLEAN_VALIDATOR); @@ -143,6 +141,7 @@ public class SecureSettingsValidators { VALIDATORS.put(Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.QS_TILES, TILE_LIST_VALIDATOR); + VALIDATORS.put(Secure.CONTROLS_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.DOZE_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.DOZE_ALWAYS_ON, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.DOZE_PICK_UP_GESTURE, BOOLEAN_VALIDATOR); @@ -248,7 +247,7 @@ public class SecureSettingsValidators { Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW)); VALIDATORS.put( - Secure.ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS, + Secure.ACCESSIBILITY_BUTTON_TARGETS, ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR); } } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java index b22caf0edc66..8a7b9134a5d9 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -1811,8 +1811,8 @@ class SettingsProtoDumpUtil { Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, SecureSettingsProto.Accessibility.ACCESSIBILITY_MAGNIFICATION_MODE); dumpSetting(s, p, - Settings.Secure.ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS, - SecureSettingsProto.Accessibility.BUTTON_LONG_PRESS_TARGETS); + Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, + SecureSettingsProto.Accessibility.BUTTON_TARGETS); p.end(accessibilityToken); final long adaptiveSleepToken = p.start(SecureSettingsProto.ADAPTIVE_SLEEP); @@ -1972,6 +1972,13 @@ class SettingsProtoDumpUtil { dumpSetting(s, p, Settings.Secure.CONNECTIVITY_RELEASE_PENDING_INTENT_DELAY_MS, SecureSettingsProto.CONNECTIVITY_RELEASE_PENDING_INTENT_DELAY_MS); + + final long controlsToken = p.start(SecureSettingsProto.CONTROLS); + dumpSetting(s, p, + Settings.Secure.CONTROLS_ENABLED, + SecureSettingsProto.Controls.ENABLED); + p.end(controlsToken); + dumpSetting(s, p, Settings.Secure.DEVICE_PAIRED, SecureSettingsProto.DEVICE_PAIRED); diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java index a36949b9e1ff..86ba8bba31ee 100644 --- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java @@ -267,6 +267,7 @@ public class SettingsBackupTest { Settings.Global.DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD, Settings.Global.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS, Settings.Global.SMART_SUGGESTIONS_IN_NOTIFICATIONS_FLAGS, + Settings.Global.ENABLE_ADB_INCREMENTAL_INSTALL_DEFAULT, Settings.Global.ENHANCED_CONNECTIVITY_ENABLED, Settings.Global.ENHANCED_4G_MODE_ENABLED, Settings.Global.EPHEMERAL_COOKIE_MAX_SIZE_BYTES, @@ -317,7 +318,6 @@ public class SettingsBackupTest { Settings.Global.LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS, Settings.Global.LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST, Settings.Global.LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST, - Settings.Global.LOCATION_LAST_LOCATION_MAX_AGE_MILLIS, Settings.Global.LOCATION_GLOBAL_KILL_SWITCH, Settings.Global.LOCATION_SETTINGS_LINK_TO_PERMISSIONS_ENABLED, Settings.Global.LOCK_SOUND, @@ -575,6 +575,7 @@ public class SettingsBackupTest { Settings.Global.APPOP_HISTORY_MODE, Settings.Global.APPOP_HISTORY_INTERVAL_MULTIPLIER, Settings.Global.APPOP_HISTORY_BASE_INTERVAL_MILLIS, + Settings.Global.AUTO_REVOKE_PARAMETERS, Settings.Global.ENABLE_RADIO_BUG_DETECTION, Settings.Global.RADIO_BUG_WAKELOCK_TIMEOUT_COUNT_THRESHOLD, Settings.Global.RADIO_BUG_SYSTEM_ERROR_COUNT_THRESHOLD, diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index c7fb00a8130c..4771c4139a5b 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -81,6 +81,8 @@ <uses-permission android:name="android.permission.READ_INPUT_STATE" /> <uses-permission android:name="android.permission.SET_ORIENTATION" /> <uses-permission android:name="android.permission.INSTALL_PACKAGES" /> + <!-- TODO(b/152310230): remove once APIs are confirmed to be sufficient --> + <uses-permission android:name="com.android.permission.USE_INSTALLER_V2" /> <uses-permission android:name="android.permission.MOVE_PACKAGE" /> <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" /> <uses-permission android:name="android.permission.CLEAR_APP_CACHE" /> diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java index 0ae00e1ac8b5..5d363f34bc67 100644 --- a/packages/Shell/src/com/android/shell/BugreportProgressService.java +++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java @@ -817,6 +817,7 @@ public class BugreportProgressService extends Service { Log.i(TAG, "Cancelling bugreport service (ID=" + id + ") on user's request"); mBugreportManager.cancelBugreport(); info.deleteScreenshots(); + info.deleteBugreportFile(); } stopProgressLocked(id); } @@ -1808,13 +1809,13 @@ public class BugreportProgressService extends Service { * Current value of progress (in percentage) of the bugreport generation as * displayed by the UI. */ - AtomicInteger progress; + AtomicInteger progress = new AtomicInteger(0); /** * Last value of progress (in percentage) of the bugreport generation for which * system notification was updated. */ - AtomicInteger lastProgress; + AtomicInteger lastProgress = new AtomicInteger(0); /** * Time of the last progress update. @@ -1973,6 +1974,14 @@ public class BugreportProgressService extends Service { } /** + * Deletes bugreport file for a given bugreport. + */ + private void deleteBugreportFile() { + Log.i(TAG, "Deleting bugreport file " + bugreportFile); + bugreportFile.delete(); + } + + /** * Rename all screenshots files so that they contain the new {@code name} instead of the * {@code initialName} if user has changed it. */ diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index f2d40cef83c7..791b83277571 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -263,7 +263,8 @@ android:name=".SystemUIApplication" android:persistent="true" android:allowClearUserData="false" - android:allowBackup="false" + android:backupAgent=".backup.BackupHelper" + android:killAfterRestore="false" android:hardwareAccelerated="true" android:label="@string/app_label" android:icon="@drawable/icon" @@ -277,7 +278,7 @@ <!-- Keep theme in sync with SystemUIApplication.onCreate(). Setting the theme on the application does not affect views inflated by services. The application theme is set again from onCreate to take effect for those views. --> - + <meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqrEAAAAIWTZsUG100coeb3xbEoTWKd3ZL3R79JshRDZfYQ" /> <!-- Broadcast receiver that gets the broadcast at boot time and starts up everything else. TODO: Should have an android:permission attribute @@ -690,6 +691,9 @@ </intent-filter> </receiver> + <service android:name=".controls.controller.AuxiliaryPersistenceWrapper$DeletionJobService" + android:permission="android.permission.BIND_JOB_SERVICE"/> + <!-- started from ControlsFavoritingActivity --> <activity android:name=".controls.management.ControlsRequestDialog" diff --git a/packages/SystemUI/OWNERS b/packages/SystemUI/OWNERS index 656827a80117..c8cf7f503468 100644 --- a/packages/SystemUI/OWNERS +++ b/packages/SystemUI/OWNERS @@ -4,7 +4,6 @@ dsandler@android.com adamcohen@google.com asc@google.com -ashaikh@google.com beverlyt@google.com brockman@google.com cinek@google.com @@ -12,8 +11,8 @@ cwren@google.com dupin@google.com ethibodeau@google.com evanlaird@google.com +hwwang@google.com hyunyoungs@google.com -jmonk@google.com jaggies@google.com jjaggi@google.com joshmcgrath@google.com @@ -29,16 +28,16 @@ mrcasey@google.com mrenouf@google.com nbenbernou@google.com nesciosquid@google.com -ngmatthew@google.com ogunwale@google.com +peanutbutter@google.com pixel@google.com roosa@google.com -shahrk@google.com snoeberger@google.com steell@google.com stwu@google.com sunnygoyal@google.com susikp@google.com +tracyzhou@google.com tsuji@google.com twickham@google.com winsonc@google.com diff --git a/packages/SystemUI/res/drawable/control_background_ripple.xml b/packages/SystemUI/res/drawable/control_background_ripple.xml new file mode 100644 index 000000000000..37914e272811 --- /dev/null +++ b/packages/SystemUI/res/drawable/control_background_ripple.xml @@ -0,0 +1,23 @@ +<!-- + ~ 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. + --> + +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> + <item android:id="@android:id/mask"> + <color android:color="@android:color/white" /> + </item> + <item android:drawable="@drawable/control_background" /> +</ripple>
\ No newline at end of file diff --git a/packages/SystemUI/res/drawable/ic_device_air_freshener_off.xml b/packages/SystemUI/res/drawable/ic_device_air_freshener_off.xml new file mode 100644 index 000000000000..c343020925eb --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_air_freshener_off.xml @@ -0,0 +1,43 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M12,5C12.5523,5 13,4.5523 13,4C13,3.4477 12.5523,3 12,3C11.4477,3 11,3.4477 11,4C11,4.5523 11.4477,5 12,5Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,2C12.5523,2 13,1.5523 13,1C13,0.4477 12.5523,0 12,0C11.4477,0 11,0.4477 11,1C11,1.5523 11.4477,2 12,2Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M9.707,4.707C9.8469,4.5671 9.9421,4.389 9.9808,4.195C10.0194,4.001 9.9996,3.7999 9.9239,3.6172C9.8482,3.4344 9.72,3.2782 9.5556,3.1683C9.3911,3.0584 9.1978,2.9998 9,2.9998C8.8022,2.9998 8.6088,3.0584 8.4444,3.1683C8.2799,3.2782 8.1518,3.4344 8.0761,3.6172C8.0004,3.7999 7.9806,4.001 8.0192,4.195C8.0578,4.389 8.1531,4.5671 8.293,4.707C8.4805,4.8944 8.7348,4.9998 9,4.9998C9.2652,4.9998 9.5195,4.8944 9.707,4.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M7.707,2.707C7.8469,2.5671 7.9422,2.389 7.9808,2.195C8.0194,2.001 7.9996,1.7999 7.9239,1.6172C7.8482,1.4344 7.7201,1.2782 7.5556,1.1683C7.3911,1.0584 7.1978,0.9998 7,0.9998C6.8022,0.9998 6.6089,1.0584 6.4444,1.1683C6.2799,1.2782 6.1518,1.4344 6.0761,1.6172C6.0004,1.7999 5.9806,2.001 6.0192,2.195C6.0578,2.389 6.1531,2.5671 6.293,2.707C6.4805,2.8944 6.7348,2.9998 7,2.9998C7.2652,2.9998 7.5195,2.8944 7.707,2.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M15.707,4.707C15.8469,4.5671 15.9421,4.389 15.9808,4.195C16.0194,4.001 15.9996,3.7999 15.9239,3.6172C15.8482,3.4344 15.7201,3.2782 15.5556,3.1683C15.3911,3.0584 15.1978,2.9998 15,2.9998C14.8022,2.9998 14.6088,3.0584 14.4444,3.1683C14.2799,3.2782 14.1518,3.4344 14.0761,3.6172C14.0004,3.7999 13.9806,4.001 14.0192,4.195C14.0578,4.389 14.1531,4.5671 14.293,4.707C14.4805,4.8944 14.7348,4.9998 15,4.9998C15.2652,4.9998 15.5195,4.8944 15.707,4.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M17.707,2.707C17.8469,2.5671 17.9421,2.389 17.9808,2.195C18.0194,2.001 17.9996,1.7999 17.9239,1.6172C17.8482,1.4344 17.7201,1.2782 17.5556,1.1683C17.3911,1.0584 17.1978,0.9998 17,0.9998C16.8022,0.9998 16.6088,1.0584 16.4444,1.1683C16.2799,1.2782 16.1518,1.4344 16.0761,1.6172C16.0004,1.7999 15.9806,2.001 16.0192,2.195C16.0578,2.389 16.1531,2.5671 16.293,2.707C16.4805,2.8944 16.7348,2.9998 17,2.9998C17.2652,2.9998 17.5195,2.8944 17.707,2.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M15,9.683V7C15,6.7348 14.8946,6.4804 14.7071,6.2929C14.5196,6.1054 14.2652,6 14,6H10C9.7348,6 9.4804,6.1054 9.2929,6.2929C9.1053,6.4804 9,6.7348 9,7V9.683C7.855,10.2245 6.8787,11.067 6.1756,12.1205C5.4725,13.174 5.0689,14.3988 5.0081,15.6639C4.9473,16.929 5.2315,18.1868 5.8304,19.3029C6.4292,20.4189 7.3202,21.3512 8.408,22H15.592C16.6798,21.3512 17.5707,20.4189 18.1696,19.3029C18.7685,18.1868 19.0527,16.929 18.9919,15.6639C18.9311,14.3988 18.5275,13.174 17.8244,12.1205C17.1212,11.067 16.145,10.2245 15,9.683ZM14.989,20H9.011C8.3852,19.5381 7.877,18.9352 7.5276,18.2402C7.1783,17.5453 6.9975,16.7778 7,16C7.0041,15.0553 7.2746,14.131 7.7803,13.3331C8.286,12.5351 9.0065,11.896 9.859,11.489L11,10.946V8H13V10.946L14.141,11.489C14.9935,11.896 15.714,12.5351 16.2197,13.3331C16.7254,14.131 16.9959,15.0553 17,16C17.0025,16.7778 16.8217,17.5453 16.4723,18.2402C16.123,18.9352 15.6148,19.5381 14.989,20Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_air_freshener_on.xml b/packages/SystemUI/res/drawable/ic_device_air_freshener_on.xml new file mode 100644 index 000000000000..4f3434d3fbc5 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_air_freshener_on.xml @@ -0,0 +1,43 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M12,5C12.5523,5 13,4.5523 13,4C13,3.4477 12.5523,3 12,3C11.4477,3 11,3.4477 11,4C11,4.5523 11.4477,5 12,5Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,2C12.5523,2 13,1.5523 13,1C13,0.4477 12.5523,0 12,0C11.4477,0 11,0.4477 11,1C11,1.5523 11.4477,2 12,2Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M9.707,4.707C9.8469,4.5671 9.9422,4.389 9.9808,4.195C10.0194,4.001 9.9996,3.7999 9.9239,3.6172C9.8482,3.4344 9.7201,3.2782 9.5556,3.1683C9.3912,3.0584 9.1978,2.9998 9,2.9998C8.8022,2.9998 8.6088,3.0584 8.4444,3.1683C8.2799,3.2782 8.1518,3.4344 8.0761,3.6172C8.0004,3.7999 7.9806,4.001 8.0192,4.195C8.0578,4.389 8.1531,4.5671 8.293,4.707C8.4805,4.8944 8.7348,4.9998 9,4.9998C9.2652,4.9998 9.5195,4.8944 9.707,4.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M7.707,2.707C7.8469,2.5671 7.9422,2.389 7.9808,2.195C8.0194,2.001 7.9996,1.7999 7.9239,1.6172C7.8482,1.4344 7.7201,1.2782 7.5556,1.1683C7.3911,1.0584 7.1978,0.9998 7,0.9998C6.8022,0.9998 6.6089,1.0584 6.4444,1.1683C6.2799,1.2782 6.1518,1.4344 6.0761,1.6172C6.0004,1.7999 5.9806,2.001 6.0192,2.195C6.0578,2.389 6.1531,2.5671 6.293,2.707C6.4805,2.8944 6.7348,2.9998 7,2.9998C7.2652,2.9998 7.5195,2.8944 7.707,2.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M15.707,4.707C15.8469,4.5671 15.9422,4.389 15.9808,4.195C16.0194,4.001 15.9996,3.7999 15.9239,3.6172C15.8482,3.4344 15.7201,3.2782 15.5556,3.1683C15.3911,3.0584 15.1978,2.9998 15,2.9998C14.8022,2.9998 14.6089,3.0584 14.4444,3.1683C14.2799,3.2782 14.1518,3.4344 14.0761,3.6172C14.0004,3.7999 13.9806,4.001 14.0192,4.195C14.0578,4.389 14.1531,4.5671 14.293,4.707C14.4805,4.8944 14.7348,4.9998 15,4.9998C15.2652,4.9998 15.5195,4.8944 15.707,4.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M17.707,2.707C17.8469,2.5671 17.9422,2.389 17.9808,2.195C18.0194,2.001 17.9996,1.7999 17.9239,1.6172C17.8482,1.4344 17.7201,1.2782 17.5556,1.1683C17.3911,1.0584 17.1978,0.9998 17,0.9998C16.8022,0.9998 16.6089,1.0584 16.4444,1.1683C16.2799,1.2782 16.1518,1.4344 16.0761,1.6172C16.0004,1.7999 15.9806,2.001 16.0192,2.195C16.0578,2.389 16.1531,2.5671 16.293,2.707C16.4805,2.8944 16.7348,2.9998 17,2.9998C17.2652,2.9998 17.5195,2.8944 17.707,2.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M15,9.683V7C15,6.7348 14.8946,6.4804 14.7071,6.2929C14.5196,6.1054 14.2652,6 14,6H10C9.7348,6 9.4804,6.1054 9.2929,6.2929C9.1053,6.4804 9,6.7348 9,7V9.683C7.855,10.2245 6.8787,11.067 6.1756,12.1205C5.4725,13.174 5.0689,14.3988 5.0081,15.6639C4.9473,16.929 5.2315,18.1868 5.8304,19.3029C6.4292,20.4189 7.3202,21.3512 8.408,22H15.592C16.6798,21.3512 17.5707,20.4189 18.1696,19.3029C18.7685,18.1868 19.0527,16.929 18.9919,15.6639C18.9311,14.3988 18.5275,13.174 17.8244,12.1205C17.1213,11.067 16.145,10.2245 15,9.683Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_air_purifier_off.xml b/packages/SystemUI/res/drawable/ic_device_air_purifier_off.xml new file mode 100644 index 000000000000..b18c3e77ef10 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_air_purifier_off.xml @@ -0,0 +1,34 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M16,19H5V7C5.0016,6.47 5.2128,5.9623 5.5875,5.5875C5.9623,5.2128 6.47,5.0016 7,5H14C14.5299,5.0016 15.0377,5.2128 15.4125,5.5875C15.7872,5.9623 15.9984,6.47 16,7V8H18V7C18,5.9391 17.5786,4.9217 16.8284,4.1716C16.0783,3.4214 15.0609,3 14,3H7C5.9391,3 4.9217,3.4214 4.1716,4.1716C3.4214,4.9217 3,5.9391 3,7V21H18V17H16V19Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M19,13C18.6049,13.378 18.1309,13.6638 17.6122,13.8367C17.0935,14.0096 16.5429,14.0653 16,14V16C16.5429,16.0653 17.0935,16.0096 17.6122,15.8367C18.1309,15.6638 18.6049,15.378 19,15C19.93,14.02 20,14 21,14V12C20,12 19.93,12.02 19,13Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M19,9C18.6049,9.378 18.1309,9.6638 17.6122,9.8367C17.0935,10.0096 16.5429,10.0653 16,10V12C16.5429,12.0653 17.0935,12.0096 17.6122,11.8367C18.1309,11.6638 18.6049,11.378 19,11C19.93,10.02 20,10 21,10V8C20,8 19.93,8.02 19,9Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M10.5,8C9.7089,8 8.9355,8.2346 8.2777,8.6741C7.6199,9.1137 7.1072,9.7383 6.8045,10.4692C6.5017,11.2001 6.4225,12.0044 6.5769,12.7803C6.7312,13.5563 7.1122,14.269 7.6716,14.8284C8.231,15.3878 8.9437,15.7688 9.7196,15.9232C10.4956,16.0775 11.2998,15.9982 12.0307,15.6955C12.7616,15.3927 13.3864,14.8801 13.8259,14.2223C14.2654,13.5645 14.5,12.7911 14.5,12C14.5,10.9391 14.0786,9.9217 13.3284,9.1716C12.5783,8.4214 11.5609,8 10.5,8ZM10.5,14C10.1044,14 9.7178,13.8827 9.3889,13.663C9.06,13.4432 8.8036,13.1308 8.6522,12.7654C8.5009,12.3999 8.4613,11.9978 8.5384,11.6098C8.6156,11.2218 8.8061,10.8655 9.0858,10.5858C9.3655,10.3061 9.7219,10.1156 10.1098,10.0385C10.4978,9.9613 10.8999,10.0008 11.2654,10.1522C11.6308,10.3036 11.9432,10.56 12.1629,10.8889C12.3827,11.2178 12.5,11.6044 12.5,12C12.5,12.5304 12.2893,13.0391 11.9142,13.4142C11.5391,13.7893 11.0304,14 10.5,14Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_air_purifier_on.xml b/packages/SystemUI/res/drawable/ic_device_air_purifier_on.xml new file mode 100644 index 000000000000..b18c3e77ef10 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_air_purifier_on.xml @@ -0,0 +1,34 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M16,19H5V7C5.0016,6.47 5.2128,5.9623 5.5875,5.5875C5.9623,5.2128 6.47,5.0016 7,5H14C14.5299,5.0016 15.0377,5.2128 15.4125,5.5875C15.7872,5.9623 15.9984,6.47 16,7V8H18V7C18,5.9391 17.5786,4.9217 16.8284,4.1716C16.0783,3.4214 15.0609,3 14,3H7C5.9391,3 4.9217,3.4214 4.1716,4.1716C3.4214,4.9217 3,5.9391 3,7V21H18V17H16V19Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M19,13C18.6049,13.378 18.1309,13.6638 17.6122,13.8367C17.0935,14.0096 16.5429,14.0653 16,14V16C16.5429,16.0653 17.0935,16.0096 17.6122,15.8367C18.1309,15.6638 18.6049,15.378 19,15C19.93,14.02 20,14 21,14V12C20,12 19.93,12.02 19,13Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M19,9C18.6049,9.378 18.1309,9.6638 17.6122,9.8367C17.0935,10.0096 16.5429,10.0653 16,10V12C16.5429,12.0653 17.0935,12.0096 17.6122,11.8367C18.1309,11.6638 18.6049,11.378 19,11C19.93,10.02 20,10 21,10V8C20,8 19.93,8.02 19,9Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M10.5,8C9.7089,8 8.9355,8.2346 8.2777,8.6741C7.6199,9.1137 7.1072,9.7383 6.8045,10.4692C6.5017,11.2001 6.4225,12.0044 6.5769,12.7803C6.7312,13.5563 7.1122,14.269 7.6716,14.8284C8.231,15.3878 8.9437,15.7688 9.7196,15.9232C10.4956,16.0775 11.2998,15.9982 12.0307,15.6955C12.7616,15.3927 13.3864,14.8801 13.8259,14.2223C14.2654,13.5645 14.5,12.7911 14.5,12C14.5,10.9391 14.0786,9.9217 13.3284,9.1716C12.5783,8.4214 11.5609,8 10.5,8ZM10.5,14C10.1044,14 9.7178,13.8827 9.3889,13.663C9.06,13.4432 8.8036,13.1308 8.6522,12.7654C8.5009,12.3999 8.4613,11.9978 8.5384,11.6098C8.6156,11.2218 8.8061,10.8655 9.0858,10.5858C9.3655,10.3061 9.7219,10.1156 10.1098,10.0385C10.4978,9.9613 10.8999,10.0008 11.2654,10.1522C11.6308,10.3036 11.9432,10.56 12.1629,10.8889C12.3827,11.2178 12.5,11.6044 12.5,12C12.5,12.5304 12.2893,13.0391 11.9142,13.4142C11.5391,13.7893 11.0304,14 10.5,14Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_blinds_off.xml b/packages/SystemUI/res/drawable/ic_device_blinds_off.xml new file mode 100644 index 000000000000..a511ad22c73e --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_blinds_off.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,18V4H4V18H2V20H22V18H20ZM18,6V9H6V6H18ZM6,18V11H11V13.2771C10.6187,13.4972 10.3207,13.8369 10.1522,14.2437C9.9838,14.6504 9.9542,15.1013 10.0681,15.5266C10.1821,15.9519 10.4332,16.3277 10.7825,16.5957C11.1318,16.8637 11.5597,17.009 12,17.009C12.4403,17.009 12.8682,16.8637 13.2175,16.5957C13.5668,16.3277 13.8179,15.9519 13.9319,15.5266C14.0458,15.1013 14.0162,14.6504 13.8478,14.2437C13.6793,13.8369 13.3813,13.4972 13,13.2771V11H18V18H6Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_blinds_on.xml b/packages/SystemUI/res/drawable/ic_device_blinds_on.xml new file mode 100644 index 000000000000..81662741c468 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_blinds_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,18V4H4V18H2V20H22V18H20ZM6,18V11H11V13.2771C10.6187,13.4972 10.3207,13.8369 10.1522,14.2437C9.9838,14.6504 9.9542,15.1013 10.0681,15.5266C10.1821,15.9519 10.4332,16.3277 10.7825,16.5957C11.1318,16.8637 11.5597,17.009 12,17.009C12.4403,17.009 12.8682,16.8637 13.2175,16.5957C13.5668,16.3277 13.8179,15.9519 13.9319,15.5266C14.0458,15.1013 14.0162,14.6504 13.8478,14.2437C13.6793,13.8369 13.3813,13.4972 13,13.2771V11H18V18H6Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_camera_off.xml b/packages/SystemUI/res/drawable/ic_device_camera_off.xml new file mode 100644 index 000000000000..32cad145e989 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_camera_off.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M18,10.48V6C17.9984,5.47 17.7872,4.9624 17.4125,4.5876C17.0377,4.2129 16.5299,4.0016 16,4H4C3.4701,4.0016 2.9623,4.2129 2.5875,4.5876C2.2128,4.9624 2.0016,5.47 2,6V18C2.0016,18.5299 2.2128,19.0376 2.5875,19.4124C2.9623,19.7871 3.4701,19.9984 4,20H16C16.5299,19.9984 17.0377,19.7871 17.4125,19.4124C17.7872,19.0376 17.9984,18.5299 18,18V13.52L22,17.5V6.5L18,10.48ZM16,9.6899V18H4V6H16V9.6899Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_camera_on.xml b/packages/SystemUI/res/drawable/ic_device_camera_on.xml new file mode 100644 index 000000000000..93c50f050d81 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_camera_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M18,10.48V6C17.9984,5.47 17.7872,4.9624 17.4125,4.5876C17.0377,4.2129 16.5299,4.0016 16,4H4C3.4701,4.0016 2.9623,4.2129 2.5875,4.5876C2.2128,4.9624 2.0016,5.47 2,6V18C2.0016,18.5299 2.2128,19.0376 2.5875,19.4124C2.9623,19.7871 3.4701,19.9984 4,20H16C16.5299,19.9984 17.0377,19.7871 17.4125,19.4124C17.7872,19.0376 17.9984,18.5299 18,18V13.52L22,17.5V6.5L18,10.48Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_dishwasher_off.xml b/packages/SystemUI/res/drawable/ic_device_dishwasher_off.xml new file mode 100644 index 000000000000..16ad90b2d13e --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_dishwasher_off.xml @@ -0,0 +1,34 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M18,2.01L6,2C5.7371,1.9991 5.4766,2.0502 5.2335,2.1504C4.9905,2.2506 4.7696,2.3979 4.5837,2.5838C4.3978,2.7696 4.2505,2.9905 4.1504,3.2335C4.0502,3.4766 3.9991,3.7371 4,4V20C3.9991,20.2629 4.0502,20.5234 4.1504,20.7665C4.2505,21.0096 4.3978,21.2304 4.5837,21.4163C4.7696,21.6022 4.9905,21.7494 5.2335,21.8496C5.4766,21.9498 5.7371,22.0009 6,22H18C18.2629,22.0009 18.5234,21.9498 18.7665,21.8496C19.0095,21.7494 19.2304,21.6022 19.4163,21.4163C19.6022,21.2304 19.7495,21.0096 19.8496,20.7665C19.9498,20.5234 20.0009,20.2629 20,20V4C20.0007,3.7376 19.9493,3.4778 19.8489,3.2354C19.7485,2.993 19.6011,2.7728 19.4151,2.5878C19.2291,2.4027 19.0083,2.2564 18.7654,2.1572C18.5225,2.0581 18.2624,2.008 18,2.01ZM18,20H6L5.993,4H18V20Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M11,7C11.5523,7 12,6.5523 12,6C12,5.4477 11.5523,5 11,5C10.4477,5 10,5.4477 10,6C10,6.5523 10.4477,7 11,7Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M8,7C8.5523,7 9,6.5523 9,6C9,5.4477 8.5523,5 8,5C7.4477,5 7,5.4477 7,6C7,6.5523 7.4477,7 8,7Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M8.211,14.272C8.2337,15.2618 8.6429,16.2035 9.351,16.8955C10.0591,17.5875 11.0099,17.975 12,17.975C12.9901,17.975 13.9409,17.5875 14.649,16.8955C15.3571,16.2035 15.7663,15.2618 15.789,14.272C15.7891,13.7805 15.6908,13.2941 15.5,12.8412C15.3092,12.3883 15.0297,11.9782 14.678,11.635L12,9L9.322,11.635C8.9703,11.9782 8.6908,12.3883 8.5,12.8412C8.3092,13.2941 8.2109,13.7805 8.211,14.272ZM10.724,13.061L12,11.806L13.276,13.061C13.4381,13.2184 13.567,13.4065 13.6551,13.6145C13.7432,13.8225 13.7888,14.0461 13.789,14.272C13.7735,14.7361 13.5782,15.1761 13.2444,15.4989C12.9106,15.8217 12.4644,16.0022 12,16.0022C11.5356,16.0022 11.0894,15.8217 10.7556,15.4989C10.4218,15.1761 10.2265,14.7361 10.211,14.272C10.2111,14.0461 10.2566,13.8225 10.3447,13.6145C10.4328,13.4065 10.5618,13.2183 10.724,13.061Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_dishwasher_on.xml b/packages/SystemUI/res/drawable/ic_device_dishwasher_on.xml new file mode 100644 index 000000000000..63f99ce5ec2c --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_dishwasher_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M18,2.01L6,2C5.7371,1.9991 5.4766,2.0502 5.2335,2.1504C4.9905,2.2506 4.7696,2.3979 4.5837,2.5838C4.3978,2.7696 4.2505,2.9905 4.1504,3.2335C4.0502,3.4766 3.9991,3.7371 4,4V20C3.9991,20.2629 4.0502,20.5234 4.1504,20.7665C4.2505,21.0096 4.3978,21.2304 4.5837,21.4163C4.7696,21.6022 4.9905,21.7494 5.2335,21.8496C5.4766,21.9498 5.7371,22.0009 6,22H18C18.2629,22.0009 18.5234,21.9498 18.7665,21.8496C19.0095,21.7494 19.2304,21.6022 19.4163,21.4163C19.6022,21.2304 19.7495,21.0096 19.8496,20.7665C19.9498,20.5234 20.0009,20.2629 20,20V4C20.0007,3.7376 19.9493,3.4778 19.8489,3.2354C19.7485,2.993 19.6011,2.7728 19.4151,2.5878C19.2291,2.4027 19.0083,2.2564 18.7654,2.1572C18.5225,2.0581 18.2624,2.008 18,2.01ZM11,5C11.1978,5 11.3911,5.0587 11.5556,5.1686C11.72,5.2785 11.8482,5.4346 11.9239,5.6173C11.9996,5.8 12.0194,6.0011 11.9808,6.1951C11.9422,6.3891 11.847,6.5673 11.7071,6.7072C11.5673,6.847 11.3891,6.9423 11.1951,6.9809C11.0011,7.0194 10.8,6.9995 10.6173,6.9238C10.4346,6.8481 10.2784,6.72 10.1685,6.5556C10.0586,6.3911 10,6.1978 10,6C10,5.7348 10.1054,5.4804 10.2929,5.2929C10.4804,5.1053 10.7348,5 11,5ZM7,6C7,5.8022 7.0587,5.6089 7.1685,5.4445C7.2784,5.28 7.4346,5.1519 7.6173,5.0762C7.8,5.0005 8.0011,4.9806 8.1951,5.0192C8.3891,5.0578 8.5673,5.153 8.7071,5.2929C8.847,5.4327 8.9422,5.611 8.9808,5.8049C9.0194,5.9989 8.9996,6.2 8.9239,6.3827C8.8482,6.5654 8.72,6.7215 8.5556,6.8314C8.3911,6.9413 8.1978,7 8,7C7.7348,7 7.4804,6.8947 7.2929,6.7072C7.1054,6.5196 7,6.2652 7,6ZM12,18C11.0032,18.008 10.0441,17.6198 9.3335,16.9207C8.623,16.2216 8.2192,15.2688 8.211,14.272C8.2109,13.7806 8.3092,13.2941 8.5,12.8412C8.6908,12.3883 8.9703,11.9782 9.322,11.635L12,9L14.678,11.635C15.0297,11.9782 15.3092,12.3883 15.5,12.8412C15.6908,13.2941 15.7891,13.7806 15.789,14.272C15.7808,15.2688 15.377,16.2216 14.6665,16.9207C13.9559,17.6198 12.9968,18.008 12,18Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_doorbell_off.xml b/packages/SystemUI/res/drawable/ic_device_doorbell_off.xml new file mode 100644 index 000000000000..6c03a4bfb883 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_doorbell_off.xml @@ -0,0 +1,34 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M17,2H7C6.4696,2 5.9609,2.2106 5.5858,2.5857C5.2107,2.9608 5,3.4696 5,4V20C5,20.5304 5.2107,21.0392 5.5858,21.4143C5.9609,21.7894 6.4696,22 7,22H17C17.5304,22 18.0391,21.7894 18.4142,21.4143C18.7893,21.0392 19,20.5304 19,20V4C19,3.4696 18.7893,2.9608 18.4142,2.5857C18.0391,2.2106 17.5304,2 17,2ZM17,20H7V4H17V20Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,15C11.6044,15 11.2177,15.1174 10.8889,15.3372C10.56,15.5569 10.3036,15.8692 10.1522,16.2346C10.0009,16.6001 9.9613,17.0022 10.0384,17.3901C10.1156,17.7781 10.3061,18.1346 10.5858,18.4143C10.8655,18.694 11.2219,18.8845 11.6098,18.9617C11.9978,19.0388 12.3999,18.999 12.7654,18.8477C13.1308,18.6963 13.4432,18.44 13.6629,18.1111C13.8827,17.7822 14,17.3956 14,17C14,16.4696 13.7893,15.9608 13.4142,15.5857C13.0391,15.2106 12.5304,15 12,15ZM12,18C11.8022,18 11.6089,17.9414 11.4444,17.8315C11.28,17.7217 11.1518,17.5653 11.0761,17.3826C11.0004,17.1998 10.9806,16.9989 11.0192,16.8049C11.0578,16.611 11.153,16.4328 11.2929,16.293C11.4327,16.1531 11.6109,16.0579 11.8049,16.0193C11.9989,15.9807 12.2,16.0005 12.3827,16.0762C12.5654,16.1519 12.7216,16.2799 12.8315,16.4443C12.9413,16.6088 13,16.8022 13,17C13,17.2652 12.8946,17.5195 12.7071,17.707C12.5196,17.8946 12.2652,18 12,18Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M13,12.5H11C11,12.7652 11.1054,13.0195 11.2929,13.207C11.4804,13.3946 11.7348,13.5 12,13.5C12.2652,13.5 12.5196,13.3946 12.7071,13.207C12.8946,13.0195 13,12.7652 13,12.5Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M16,11H15V8.6599C15.0532,7.9533 14.8572,7.2506 14.4462,6.6733C14.0352,6.0961 13.4351,5.6809 12.75,5.5V5.25C12.75,5.0511 12.671,4.8604 12.5303,4.7197C12.3897,4.5791 12.1989,4.5 12,4.5C11.8011,4.5 11.6103,4.5791 11.4697,4.7197C11.329,4.8604 11.25,5.0511 11.25,5.25V5.5C10.5659,5.6827 9.9669,6.0982 9.5562,6.675C9.1455,7.2519 8.9488,7.9537 9,8.6599V11H8V12H16V11Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_doorbell_on.xml b/packages/SystemUI/res/drawable/ic_device_doorbell_on.xml new file mode 100644 index 000000000000..d08393a05f93 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_doorbell_on.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M12,18C12.5523,18 13,17.5523 13,17C13,16.4477 12.5523,16 12,16C11.4477,16 11,16.4477 11,17C11,17.5523 11.4477,18 12,18Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M17,2H7C6.4696,2 5.9609,2.2106 5.5858,2.5857C5.2107,2.9608 5,3.4696 5,4V20C5,20.5304 5.2107,21.0392 5.5858,21.4143C5.9609,21.7894 6.4696,22 7,22H17C17.5304,22 18.0391,21.7894 18.4142,21.4143C18.7893,21.0392 19,20.5304 19,20V4C19,3.4696 18.7893,2.9608 18.4142,2.5857C18.0391,2.2106 17.5304,2 17,2ZM12,19C11.6044,19 11.2178,18.8826 10.8889,18.6628C10.56,18.4431 10.3036,18.1308 10.1522,17.7654C10.0009,17.3999 9.9613,16.9978 10.0384,16.6099C10.1156,16.2219 10.3061,15.8654 10.5858,15.5857C10.8655,15.306 11.2219,15.1155 11.6098,15.0383C11.9978,14.9612 12.3999,15.001 12.7654,15.1523C13.1308,15.3037 13.4432,15.56 13.6629,15.8889C13.8827,16.2178 14,16.6044 14,17C14,17.5304 13.7893,18.0392 13.4142,18.4143C13.0391,18.7894 12.5304,19 12,19ZM11,12.5H13C13,12.7652 12.8946,13.0195 12.7071,13.207C12.5196,13.3946 12.2652,13.5 12,13.5C11.7348,13.5 11.4804,13.3946 11.2929,13.207C11.1054,13.0195 11,12.7652 11,12.5ZM16,12H8V11H9V8.6599C8.9488,7.9537 9.1455,7.2519 9.5562,6.675C9.9669,6.0982 10.5659,5.6827 11.25,5.5V5.25C11.25,5.0511 11.329,4.8604 11.4697,4.7197C11.6103,4.5791 11.8011,4.5 12,4.5C12.1989,4.5 12.3897,4.5791 12.5303,4.7197C12.671,4.8604 12.75,5.0511 12.75,5.25V5.5C13.4351,5.6809 14.0352,6.0961 14.4462,6.6733C14.8572,7.2506 15.0532,7.9533 15,8.6599V11H16V12Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_drawer_off.xml b/packages/SystemUI/res/drawable/ic_device_drawer_off.xml new file mode 100644 index 000000000000..bcab534eb0c9 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_drawer_off.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M18,3H6C5.4696,3 4.9609,3.2109 4.5858,3.5859C4.2107,3.961 4,4.4696 4,5V21H6V19H18V21H20V5C20,4.4696 19.7893,3.961 19.4142,3.5859C19.0391,3.2109 18.5304,3 18,3ZM18,11H13V9H18V11ZM18,7H13V5H18V7ZM11,5V11H6V5H11ZM6,17V13H18V17H6Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M14,14H10V16H14V14Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_drawer_on.xml b/packages/SystemUI/res/drawable/ic_device_drawer_on.xml new file mode 100644 index 000000000000..800e9f1fed41 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_drawer_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M18,3H6C5.4696,3 4.9609,3.2109 4.5858,3.5859C4.2107,3.961 4,4.4696 4,5V21H6V19H18V21H20V5C20,4.4696 19.7893,3.961 19.4142,3.5859C19.0391,3.2109 18.5304,3 18,3ZM6,5H11V11H6V5ZM14,16H10V14H14V16ZM18,11H13V9H18V11ZM18,7H13V5H18V7Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_fan_off.xml b/packages/SystemUI/res/drawable/ic_device_fan_off.xml new file mode 100644 index 000000000000..c90d5741736d --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_fan_off.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M16.345,8.3611L14.055,9.1791C13.8731,9.0458 13.6785,8.9309 13.474,8.8361C13.6398,7.9956 14.1302,7.2543 14.839,6.7731C15.3079,6.465 15.6646,6.0136 15.8558,5.4861C16.047,4.9587 16.0625,4.3836 15.8999,3.8466C15.7374,3.3097 15.4055,2.8397 14.9538,2.5069C14.5022,2.1741 13.955,1.9963 13.394,2.0001C8.994,2.0001 7.157,5.0071 8.361,7.6551L9.179,9.9451C9.0458,10.1269 8.9309,10.3215 8.836,10.5261C7.9954,10.3606 7.254,9.8701 6.773,9.1611C6.465,8.6922 6.0135,8.3355 5.4861,8.1443C4.9587,7.9531 4.3835,7.9375 3.8466,8.1001C3.3096,8.2627 2.8396,8.5946 2.5068,9.0462C2.174,9.4979 1.9962,10.0451 2,10.6061C2,15.0061 5.007,16.843 7.655,15.639L9.945,14.821C10.1267,14.9541 10.3209,15.069 10.525,15.1641C10.3598,16.0048 9.8692,16.7463 9.16,17.227C8.691,17.5351 8.3343,17.9867 8.1431,18.5142C7.9519,19.0418 7.9365,19.617 8.0992,20.154C8.2619,20.691 8.5939,21.161 9.0457,21.4937C9.4976,21.8264 10.0449,22.004 10.606,22.0001C15.006,22.0001 16.843,18.993 15.639,16.345L14.821,14.0551C14.954,13.8734 15.0689,13.6791 15.164,13.475C16.0048,13.6402 16.7462,14.1309 17.227,14.8401C17.5351,15.3091 17.9866,15.6657 18.5141,15.8569C19.0417,16.0481 19.6169,16.0636 20.1539,15.9009C20.6909,15.7382 21.1609,15.4061 21.4936,14.9543C21.8264,14.5025 22.004,13.9551 22,13.394C22,9 18.993,7.1571 16.345,8.3611ZM12,13.5001C11.7033,13.5001 11.4133,13.4121 11.1666,13.2473C10.92,13.0824 10.7277,12.8482 10.6142,12.5741C10.5006,12.3 10.4709,11.9984 10.5288,11.7074C10.5867,11.4164 10.7296,11.1492 10.9393,10.9394C11.1491,10.7296 11.4164,10.5867 11.7074,10.5289C11.9983,10.471 12.2999,10.5007 12.574,10.6143C12.8481,10.7278 13.0824,10.92 13.2472,11.1667C13.412,11.4134 13.5,11.7034 13.5,12.0001C13.5,12.3979 13.342,12.7794 13.0607,13.0607C12.7793,13.342 12.3978,13.5001 12,13.5001ZM10.245,5.2161C10.6327,4.7742 11.1217,4.4328 11.6701,4.2211C12.2184,4.0093 12.8099,3.9335 13.394,4.0001C13.5259,3.9959 13.6555,4.0354 13.7627,4.1124C13.8699,4.1893 13.9487,4.2995 13.987,4.4258C14.0253,4.5521 14.0208,4.6875 13.9744,4.811C13.9279,4.9346 13.842,5.0393 13.73,5.1091C13.1418,5.5017 12.6392,6.0092 12.2521,6.601C11.8651,7.1929 11.6018,7.8568 11.478,8.553C11.2666,8.5847 11.0587,8.6362 10.857,8.707L10.181,6.8271C10.0515,6.576 9.9893,6.2955 10.0005,6.0131C10.0117,5.7308 10.0959,5.4561 10.245,5.2161ZM6.827,13.816C6.576,13.9458 6.2956,14.0083 6.0132,13.9973C5.7308,13.9862 5.4561,13.902 5.216,13.753C4.7745,13.3655 4.4332,12.8769 4.2215,12.3289C4.0098,11.7809 3.9338,11.1898 4,10.6061C3.9959,10.4742 4.0353,10.3446 4.1123,10.2374C4.1893,10.1302 4.2994,10.0513 4.4257,10.0131C4.552,9.9748 4.6874,9.9792 4.8109,10.0257C4.9345,10.0722 5.0392,10.1581 5.109,10.2701C5.5015,10.8581 6.0088,11.3607 6.6005,11.7477C7.1922,12.1347 7.8559,12.3981 8.552,12.522C8.5844,12.7334 8.6363,12.9413 8.707,13.1431L6.827,13.816ZM13.755,18.782C13.3675,19.2242 12.8786,19.566 12.3302,19.7781C11.7818,19.9902 11.1902,20.0664 10.606,20.0001C10.4741,20.0042 10.3445,19.9647 10.2373,19.8878C10.1301,19.8108 10.0512,19.7006 10.013,19.5743C9.9747,19.448 9.9791,19.3126 10.0256,19.1891C10.0721,19.0656 10.158,18.9608 10.27,18.8911C10.8581,18.4987 11.3606,17.9914 11.7475,17.3997C12.1343,16.808 12.3974,16.1441 12.521,15.4481C12.7327,15.4156 12.9409,15.3638 13.143,15.2931L13.818,17.173C13.9477,17.4241 14.0101,17.7045 13.999,17.9869C13.988,18.2692 13.9039,18.5439 13.755,18.7841V18.782ZM18.891,13.7281C18.4985,13.1399 17.991,12.6373 17.3992,12.2504C16.8073,11.8636 16.1432,11.6005 15.447,11.477C15.4154,11.2653 15.3639,11.057 15.293,10.855L17.173,10.1801C17.424,10.0503 17.7044,9.9879 17.9868,9.9989C18.2692,10.0099 18.5439,10.094 18.784,10.243C19.2261,10.631 19.5677,11.1202 19.7795,11.669C19.9912,12.2178 20.0669,12.8097 20,13.394C20.0041,13.5259 19.9647,13.6555 19.8877,13.7628C19.8107,13.87 19.7006,13.9488 19.5743,13.9871C19.448,14.0253 19.3126,14.0209 19.1891,13.9744C19.0655,13.928 18.9608,13.8421 18.891,13.73V13.7281Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_fan_on.xml b/packages/SystemUI/res/drawable/ic_device_fan_on.xml new file mode 100644 index 000000000000..79950ea1bae9 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_fan_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M16.345,8.3611L14.055,9.1791C13.8731,9.0458 13.6785,8.9309 13.474,8.8361C13.6398,7.9956 14.1302,7.2543 14.839,6.7731C15.3079,6.465 15.6646,6.0136 15.8558,5.4861C16.047,4.9587 16.0625,4.3836 15.8999,3.8466C15.7374,3.3097 15.4055,2.8397 14.9538,2.5069C14.5022,2.1741 13.955,1.9963 13.394,2.0001C8.994,2.0001 7.157,5.0071 8.361,7.6551L9.179,9.9451C9.0457,10.1269 8.9309,10.3215 8.836,10.5261C7.9954,10.3606 7.254,9.8701 6.773,9.1611C6.465,8.6922 6.0135,8.3355 5.4861,8.1443C4.9587,7.9531 4.3835,7.9375 3.8466,8.1001C3.3096,8.2627 2.8396,8.5946 2.5068,9.0462C2.174,9.4979 1.9962,10.0451 2,10.6061C2,15.0061 5.007,16.843 7.655,15.639L9.945,14.821C10.1267,14.9541 10.3209,15.069 10.525,15.1641C10.3598,16.0048 9.8692,16.7463 9.16,17.227C8.691,17.5351 8.3343,17.9867 8.1431,18.5142C7.9519,19.0418 7.9365,19.617 8.0992,20.154C8.2619,20.691 8.5939,21.161 9.0457,21.4937C9.4976,21.8264 10.0449,22.004 10.606,22.0001C15.006,22.0001 16.843,18.993 15.639,16.345L14.821,14.0551C14.954,13.8734 15.0689,13.6791 15.164,13.475C16.0048,13.6402 16.7462,14.1309 17.227,14.8401C17.5351,15.3091 17.9866,15.6657 18.5141,15.8569C19.0417,16.0481 19.6169,16.0636 20.1539,15.9009C20.6909,15.7382 21.1609,15.4061 21.4936,14.9543C21.8264,14.5025 22.004,13.9551 22,13.394C22,9 18.993,7.1571 16.345,8.3611ZM12,13.5001C11.7033,13.5001 11.4133,13.4121 11.1666,13.2473C10.92,13.0824 10.7277,12.8482 10.6142,12.5741C10.5006,12.3 10.4709,11.9984 10.5288,11.7074C10.5867,11.4164 10.7296,11.1492 10.9393,10.9394C11.1491,10.7296 11.4164,10.5867 11.7074,10.5289C11.9983,10.471 12.2999,10.5007 12.574,10.6143C12.8481,10.7278 13.0824,10.92 13.2472,11.1667C13.412,11.4134 13.5,11.7034 13.5,12.0001C13.5,12.3979 13.342,12.7794 13.0607,13.0607C12.7794,13.342 12.3978,13.5001 12,13.5001Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_garage_off.xml b/packages/SystemUI/res/drawable/ic_device_garage_off.xml new file mode 100644 index 000000000000..8865983f0d7d --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_garage_off.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,9L12,3L4,9V21H6V10L12,5.5L18,10V21H20V9Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M7,11V21H17V11H7ZM15,13V15H9V13H15ZM9,19V17H15V19H9Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_garage_on.xml b/packages/SystemUI/res/drawable/ic_device_garage_on.xml new file mode 100644 index 000000000000..8865983f0d7d --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_garage_on.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,9L12,3L4,9V21H6V10L12,5.5L18,10V21H20V9Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M7,11V21H17V11H7ZM15,13V15H9V13H15ZM9,19V17H15V19H9Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_gate_off.xml b/packages/SystemUI/res/drawable/ic_device_gate_off.xml new file mode 100644 index 000000000000..9f7d9edfae31 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_gate_off.xml @@ -0,0 +1,31 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M4,7H2V17H4V7Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M15,5H9C7.9391,5 6.9217,5.4215 6.1716,6.1716C5.4214,6.9218 5,7.9391 5,9V19H19V9C19,7.9391 18.5786,6.9218 17.8284,6.1716C17.0783,5.4215 16.0609,5 15,5ZM7,9C7,8.4696 7.2107,7.9608 7.5858,7.5857C7.9609,7.2106 8.4696,7 9,7H11V11H9V13H11V17H7V9ZM17,17H13V13H15V11H13V7H15C15.5304,7 16.0391,7.2106 16.4142,7.5857C16.7893,7.9608 17,8.4696 17,9V17Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M22,7H20V17H22V7Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_gate_on.xml b/packages/SystemUI/res/drawable/ic_device_gate_on.xml new file mode 100644 index 000000000000..1a005ac090dc --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_gate_on.xml @@ -0,0 +1,34 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M4,7H2V17H4V7Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M22,7H20V17H22V7Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M5,9V19H11V13H9V11H11V5H9C7.9391,5 6.9217,5.4215 6.1716,6.1716C5.4214,6.9218 5,7.9391 5,9Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M15,5H13V11H15V13H13V19H19V9C19,7.9391 18.5786,6.9218 17.8284,6.1716C17.0783,5.4215 16.0609,5 15,5Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_hood_off.xml b/packages/SystemUI/res/drawable/ic_device_hood_off.xml new file mode 100644 index 000000000000..71d5f24b2489 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_hood_off.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M21.414,12.414L17,8V3H7V8L2.586,12.414C2.2109,12.789 2.0001,13.2976 2,13.828V18C2,18.5304 2.2107,19.0391 2.5858,19.4142C2.9609,19.7893 3.4696,20 4,20H20C20.5304,20 21.0391,19.7893 21.4142,19.4142C21.7893,19.0391 22,18.5304 22,18V13.828C21.9999,13.2976 21.7891,12.789 21.414,12.414ZM9,8.828V5H15V8.828L18.172,12H5.828L9,8.828ZM20,18H4V14H20V18Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M14,15.25H10V16.75H14V15.25Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_hood_on.xml b/packages/SystemUI/res/drawable/ic_device_hood_on.xml new file mode 100644 index 000000000000..721e68bde32b --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_hood_on.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M21,12L17,8V3H7V8L3,12H21Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M2,14V18C2,18.5304 2.2107,19.0391 2.5858,19.4142C2.9609,19.7893 3.4696,20 4,20H20C20.5304,20 21.0391,19.7893 21.4142,19.4142C21.7893,19.0391 22,18.5304 22,18V14H2ZM14,16.75H10V15.25H14V16.75Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_kettle_off.xml b/packages/SystemUI/res/drawable/ic_device_kettle_off.xml new file mode 100644 index 000000000000..94ad254a79bc --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_kettle_off.xml @@ -0,0 +1,31 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,5H18V2H3L6,6V19H18V14H20C20.5304,14 21.0391,13.7893 21.4142,13.4142C21.7893,13.0391 22,12.5304 22,12V7C22,6.4696 21.7893,5.9609 21.4142,5.5858C21.0391,5.2107 20.5304,5 20,5ZM16,17H8V5.333L7,4H16V17ZM20,12H18V7H20V12Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M15,5H12V16H15V5Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M21,20H3V22H21V20Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_kettle_on.xml b/packages/SystemUI/res/drawable/ic_device_kettle_on.xml new file mode 100644 index 000000000000..11081e85fa90 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_kettle_on.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,5H18V2H3L6,6V19H18V14H20C20.5304,14 21.0391,13.7893 21.4142,13.4142C21.7893,13.0391 22,12.5304 22,12V7C22,6.4696 21.7893,5.9609 21.4142,5.5858C21.0391,5.2107 20.5304,5 20,5ZM15,16H12V5H15V16ZM20,12H18V7H20V12Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M21,20H3V22H21V20Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_light_off.xml b/packages/SystemUI/res/drawable/ic_device_light_off.xml new file mode 100644 index 000000000000..62fa631c5706 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_light_off.xml @@ -0,0 +1,31 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M12,22C12.5304,22 13.0391,21.7894 13.4142,21.4143C13.7893,21.0392 14,20.5304 14,20H10C10,20.5304 10.2107,21.0392 10.5858,21.4143C10.9609,21.7894 11.4696,22 12,22Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M16,17H8V19H16V17Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,2C10.3491,2.0023 8.7451,2.5493 7.4367,3.5561C6.1283,4.563 5.1887,5.9734 4.7636,7.5686C4.3385,9.1638 4.4516,10.8547 5.0854,12.3792C5.7191,13.9036 6.8382,15.1764 8.269,16H15.731C17.1618,15.1764 18.2809,13.9036 18.9147,12.3792C19.5485,10.8547 19.6616,9.1638 19.2364,7.5686C18.8113,5.9734 17.8717,4.563 16.5633,3.5561C15.2549,2.5493 13.6509,2.0023 12,2ZM15.148,14H8.848C8.1191,13.4982 7.5239,12.826 7.114,12.0417C6.7041,11.2575 6.4919,10.3849 6.496,9.5C6.496,8.0413 7.0755,6.6423 8.1069,5.6108C9.1384,4.5794 10.5373,4 11.996,4C13.4547,4 14.8536,4.5794 15.8851,5.6108C16.9165,6.6423 17.496,8.0413 17.496,9.5C17.5005,10.3846 17.289,11.2568 16.8798,12.041C16.4706,12.8252 15.8761,13.4977 15.148,14Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_light_on.xml b/packages/SystemUI/res/drawable/ic_device_light_on.xml new file mode 100644 index 000000000000..08f05fca4e8b --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_light_on.xml @@ -0,0 +1,31 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M12,22C12.5304,22 13.0391,21.7894 13.4142,21.4143C13.7893,21.0392 14,20.5304 14,20H10C10,20.5304 10.2107,21.0392 10.5858,21.4143C10.9609,21.7894 11.4696,22 12,22Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M16,17H8V19H16V17Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,2C10.3491,2.0023 8.7451,2.5493 7.4367,3.5561C6.1283,4.563 5.1887,5.9734 4.7636,7.5686C4.3385,9.1638 4.4516,10.8547 5.0854,12.3792C5.7191,13.9036 6.8382,15.1764 8.269,16H15.731C17.1618,15.1764 18.2809,13.9036 18.9147,12.3792C19.5485,10.8547 19.6616,9.1638 19.2364,7.5686C18.8113,5.9734 17.8717,4.563 16.5633,3.5561C15.2549,2.5493 13.6509,2.0023 12,2Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_lock_off.xml b/packages/SystemUI/res/drawable/ic_device_lock_off.xml new file mode 100644 index 000000000000..a2662ff7f6bb --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_lock_off.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M18,8H17V6C17,4.6739 16.4732,3.402 15.5355,2.4644C14.5979,1.5267 13.3261,1 12,1C10.6739,1 9.4021,1.5267 8.4645,2.4644C7.5268,3.402 7,4.6739 7,6V8H6C5.47,8.0016 4.9623,8.2127 4.5875,8.5874C4.2128,8.9621 4.0016,9.47 4,10V20C4.0016,20.5299 4.2128,21.0379 4.5875,21.4126C4.9623,21.7873 5.47,21.9984 6,22H18C18.5299,21.9984 19.0377,21.7873 19.4125,21.4126C19.7872,21.0379 19.9984,20.5299 20,20V10C19.9984,9.47 19.7872,8.9621 19.4125,8.5874C19.0377,8.2127 18.5299,8.0016 18,8ZM9,6C9,5.2043 9.3161,4.4415 9.8787,3.8789C10.4413,3.3163 11.2044,3 12,3C12.7956,3 13.5587,3.3163 14.1213,3.8789C14.6839,4.4415 15,5.2043 15,6V8H9V6ZM18,20H6V10H18V20Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,17C13.1046,17 14,16.1046 14,15C14,13.8954 13.1046,13 12,13C10.8954,13 10,13.8954 10,15C10,16.1046 10.8954,17 12,17Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_lock_on.xml b/packages/SystemUI/res/drawable/ic_device_lock_on.xml new file mode 100644 index 000000000000..5ae7090a2a69 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_lock_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M18,8H17V6C17,4.6739 16.4732,3.402 15.5355,2.4644C14.5979,1.5267 13.3261,1 12,1C10.6739,1 9.4022,1.5267 8.4645,2.4644C7.5268,3.402 7,4.6739 7,6V8H6C5.47,8.0016 4.9623,8.2127 4.5875,8.5874C4.2128,8.9621 4.0016,9.47 4,10V20C4.0016,20.5299 4.2128,21.0379 4.5875,21.4126C4.9623,21.7873 5.47,21.9984 6,22H18C18.5299,21.9984 19.0377,21.7873 19.4125,21.4126C19.7872,21.0379 19.9984,20.5299 20,20V10C19.9984,9.47 19.7872,8.9621 19.4125,8.5874C19.0377,8.2127 18.5299,8.0016 18,8ZM12,17C11.6044,17 11.2178,16.8828 10.8889,16.6631C10.56,16.4433 10.3036,16.1306 10.1522,15.7651C10.0009,15.3997 9.9613,14.9978 10.0384,14.6099C10.1156,14.2219 10.3061,13.8656 10.5858,13.5859C10.8655,13.3062 11.2219,13.1157 11.6098,13.0386C11.9978,12.9614 12.3999,13.001 12.7654,13.1523C13.1308,13.3037 13.4432,13.5598 13.6629,13.8887C13.8827,14.2176 14,14.6044 14,15C13.9984,15.5299 13.7872,16.0379 13.4125,16.4126C13.0377,16.7873 12.5299,16.9984 12,17ZM15,8H9V6C9,5.2043 9.3161,4.4415 9.8787,3.8789C10.4413,3.3163 11.2044,3 12,3C12.7956,3 13.5587,3.3163 14.1213,3.8789C14.6839,4.4415 15,5.2043 15,6V8Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_microwave_off.xml b/packages/SystemUI/res/drawable/ic_device_microwave_off.xml new file mode 100644 index 000000000000..771afbb72589 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_microwave_off.xml @@ -0,0 +1,37 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,4H4C3.4696,4 2.9609,4.2107 2.5858,4.5858C2.2107,4.9609 2,5.4696 2,6V18C2,18.5304 2.2107,19.0391 2.5858,19.4142C2.9609,19.7893 3.4696,20 4,20H20C20.5304,20 21.0391,19.7893 21.4142,19.4142C21.7893,19.0391 22,18.5304 22,18V6C22,5.4696 21.7893,4.9609 21.4142,4.5858C21.0391,4.2107 20.5304,4 20,4ZM20,18H4V6H20V18Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M18,9C18.5523,9 19,8.5523 19,8C19,7.4477 18.5523,7 18,7C17.4477,7 17,7.4477 17,8C17,8.5523 17.4477,9 18,9Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M18,13C18.5523,13 19,12.5523 19,12C19,11.4477 18.5523,11 18,11C17.4477,11 17,11.4477 17,12C17,12.5523 17.4477,13 18,13Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M18,17C18.5523,17 19,16.5523 19,16C19,15.4477 18.5523,15 18,15C17.4477,15 17,15.4477 17,16C17,16.5523 17.4477,17 18,17Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M15,7H5V17H15V7ZM13,15H7V9H13V15Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_microwave_on.xml b/packages/SystemUI/res/drawable/ic_device_microwave_on.xml new file mode 100644 index 000000000000..b05f681398c9 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_microwave_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,4H4C3.4696,4 2.9609,4.2107 2.5858,4.5858C2.2107,4.9609 2,5.4696 2,6V18C2,18.5304 2.2107,19.0391 2.5858,19.4142C2.9609,19.7893 3.4696,20 4,20H20C20.5304,20 21.0391,19.7893 21.4142,19.4142C21.7893,19.0391 22,18.5304 22,18V6C22,5.4696 21.7893,4.9609 21.4142,4.5858C21.0391,4.2107 20.5304,4 20,4ZM15,17H5V7H15V17ZM18,17C17.8022,17 17.6089,16.9413 17.4444,16.8314C17.28,16.7215 17.1518,16.5654 17.0761,16.3827C17.0004,16.2 16.9806,15.9989 17.0192,15.8049C17.0578,15.611 17.153,15.4327 17.2929,15.2928C17.4327,15.153 17.6109,15.0578 17.8049,15.0192C17.9989,14.9806 18.2,15.0005 18.3827,15.0762C18.5654,15.1519 18.7216,15.28 18.8315,15.4445C18.9414,15.6089 19,15.8022 19,16C19,16.2652 18.8946,16.5196 18.7071,16.7072C18.5196,16.8947 18.2652,17 18,17ZM18,13C17.8022,13 17.6089,12.9413 17.4444,12.8314C17.28,12.7215 17.1518,12.5654 17.0761,12.3827C17.0004,12.2 16.9806,11.9989 17.0192,11.8049C17.0578,11.611 17.153,11.4327 17.2929,11.2928C17.4327,11.153 17.6109,11.0578 17.8049,11.0192C17.9989,10.9806 18.2,11.0005 18.3827,11.0762C18.5654,11.1519 18.7216,11.28 18.8315,11.4445C18.9414,11.6089 19,11.8022 19,12C19,12.2652 18.8946,12.5196 18.7071,12.7072C18.5196,12.8947 18.2652,13 18,13ZM18,9C17.8022,9 17.6089,8.9413 17.4444,8.8314C17.28,8.7215 17.1518,8.5654 17.0761,8.3827C17.0004,8.2 16.9806,7.9989 17.0192,7.8049C17.0578,7.6109 17.153,7.4327 17.2929,7.2929C17.4327,7.153 17.6109,7.0578 17.8049,7.0192C17.9989,6.9806 18.2,7.0005 18.3827,7.0762C18.5654,7.1519 18.7216,7.28 18.8315,7.4445C18.9414,7.6089 19,7.8022 19,8C19,8.2652 18.8946,8.5196 18.7071,8.7072C18.5196,8.8947 18.2652,9 18,9Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_mop_off.xml b/packages/SystemUI/res/drawable/ic_device_mop_off.xml new file mode 100644 index 000000000000..7fdaaea8b2a5 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_mop_off.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M22.379,20.515L21,15V13C21,12.4696 20.7893,11.9609 20.4142,11.5858C20.0391,11.2107 19.5304,11 19,11H15V4C15,3.2043 14.6839,2.4413 14.1213,1.8787C13.5587,1.3161 12.7956,1 12,1C11.2043,1 10.4413,1.3161 9.8786,1.8787C9.316,2.4413 9,3.2043 9,4V11H5C4.4695,11 3.9608,11.2107 3.5858,11.5858C3.2107,11.9609 3,12.4696 3,13V15L1.621,20.515C1.5473,20.8099 1.5417,21.1178 1.6048,21.4151C1.6679,21.7125 1.798,21.9916 1.9851,22.2311C2.1722,22.4707 2.4115,22.6645 2.6847,22.7977C2.958,22.9309 3.258,23.0001 3.562,23H20.438C20.742,23.0001 21.042,22.9309 21.3152,22.7977C21.5884,22.6645 21.8277,22.4707 22.0149,22.2311C22.202,21.9916 22.332,21.7125 22.3951,21.4151C22.4582,21.1178 22.4527,20.8099 22.379,20.515ZM11,4C11,3.7348 11.1053,3.4804 11.2929,3.2929C11.4804,3.1054 11.7348,3 12,3C12.2652,3 12.5195,3.1054 12.7071,3.2929C12.8946,3.4804 13,3.7348 13,4V11H11V4ZM5,13H19V15H5V13ZM18,21V19C18,18.7348 17.8946,18.4804 17.7071,18.2929C17.5195,18.1054 17.2652,18 17,18C16.7348,18 16.4804,18.1054 16.2929,18.2929C16.1053,18.4804 16,18.7348 16,19V21H13V19C13,18.7348 12.8946,18.4804 12.7071,18.2929C12.5195,18.1054 12.2652,18 12,18C11.7348,18 11.4804,18.1054 11.2929,18.2929C11.1053,18.4804 11,18.7348 11,19V21H8V19C8,18.7348 7.8946,18.4804 7.7071,18.2929C7.5195,18.1054 7.2652,18 7,18C6.7348,18 6.4804,18.1054 6.2929,18.2929C6.1053,18.4804 6,18.7348 6,19V21H3.562L4.562,17H19.438L20.438,21H18Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_mop_on.xml b/packages/SystemUI/res/drawable/ic_device_mop_on.xml new file mode 100644 index 000000000000..8350ca190737 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_mop_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M22.379,20.515L21,15V13C21,12.4696 20.7893,11.9609 20.4142,11.5858C20.0391,11.2107 19.5304,11 19,11H15V4C15,3.2043 14.6839,2.4413 14.1213,1.8787C13.5587,1.3161 12.7956,1 12,1C11.2043,1 10.4413,1.3161 9.8787,1.8787C9.316,2.4413 9,3.2043 9,4V11H5C4.4695,11 3.9608,11.2107 3.5858,11.5858C3.2107,11.9609 3,12.4696 3,13V15L1.621,20.515C1.5473,20.8099 1.5417,21.1178 1.6048,21.4151C1.6679,21.7125 1.798,21.9916 1.9851,22.2311C2.1722,22.4707 2.4115,22.6645 2.6847,22.7977C2.958,22.9309 3.258,23.0001 3.562,23H20.438C20.742,23.0001 21.042,22.9309 21.3152,22.7977C21.5885,22.6645 21.8277,22.4707 22.0148,22.2311C22.202,21.9916 22.332,21.7125 22.3951,21.4151C22.4582,21.1178 22.4527,20.8099 22.379,20.515ZM18,21V19C18,18.7348 17.8946,18.4804 17.7071,18.2929C17.5195,18.1054 17.2652,18 17,18C16.7348,18 16.4804,18.1054 16.2929,18.2929C16.1053,18.4804 16,18.7348 16,19V21H13V19C13,18.7348 12.8946,18.4804 12.7071,18.2929C12.5195,18.1054 12.2652,18 12,18C11.7348,18 11.4804,18.1054 11.2929,18.2929C11.1053,18.4804 11,18.7348 11,19V21H8V19C8,18.7348 7.8946,18.4804 7.7071,18.2929C7.5195,18.1054 7.2652,18 7,18C6.7348,18 6.4804,18.1054 6.2929,18.2929C6.1053,18.4804 6,18.7348 6,19V21H3.562L4.562,17H19.438L20.438,21H18Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_multicooker_off.xml b/packages/SystemUI/res/drawable/ic_device_multicooker_off.xml new file mode 100644 index 000000000000..8a79b0d553ef --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_multicooker_off.xml @@ -0,0 +1,34 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M19,5H16V4C16,3.4696 15.7893,2.9609 15.4142,2.5858C15.0391,2.2107 14.5304,2 14,2H10C9.4696,2 8.9609,2.2107 8.5858,2.5858C8.2107,2.9609 8,3.4696 8,4V5H5C4.4696,5 3.9609,5.2107 3.5858,5.5858C3.2107,5.9609 3,6.4696 3,7V19C3,19.5304 3.2107,20.0391 3.5858,20.4142C3.9609,20.7893 4.4696,21 5,21H19C19.5304,21 20.0391,20.7893 20.4142,20.4142C20.7893,20.0391 21,19.5304 21,19V7C21,6.4696 20.7893,5.9609 20.4142,5.5858C20.0391,5.2107 19.5304,5 19,5ZM10,4H14V5H10V4ZM19,19H5V10H7V12C7,12.5304 7.2107,13.0391 7.5858,13.4142C7.9609,13.7893 8.4696,14 9,14H15C15.5304,14 16.0391,13.7893 16.4142,13.4142C16.7893,13.0391 17,12.5304 17,12V10H19V19ZM9,12V10H15V12H9ZM5,8V7H19V8H5Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M16,18C16.5523,18 17,17.5523 17,17C17,16.4477 16.5523,16 16,16C15.4477,16 15,16.4477 15,17C15,17.5523 15.4477,18 16,18Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,18C12.5523,18 13,17.5523 13,17C13,16.4477 12.5523,16 12,16C11.4477,16 11,16.4477 11,17C11,17.5523 11.4477,18 12,18Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M8,18C8.5523,18 9,17.5523 9,17C9,16.4477 8.5523,16 8,16C7.4477,16 7,16.4477 7,17C7,17.5523 7.4477,18 8,18Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_multicooker_on.xml b/packages/SystemUI/res/drawable/ic_device_multicooker_on.xml new file mode 100644 index 000000000000..90ede523b11a --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_multicooker_on.xml @@ -0,0 +1,31 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M17,12C17,12.5304 16.7893,13.0391 16.4142,13.4142C16.0391,13.7893 15.5304,14 15,14H9C8.4696,14 7.9609,13.7893 7.5858,13.4142C7.2107,13.0391 7,12.5304 7,12V10H3V19C3,19.5304 3.2107,20.0391 3.5858,20.4142C3.9609,20.7893 4.4696,21 5,21H19C19.5304,21 20.0391,20.7893 20.4142,20.4142C20.7893,20.0391 21,19.5304 21,19V10H17V12ZM8,18C7.8022,18 7.6089,17.9413 7.4444,17.8314C7.28,17.7215 7.1518,17.5654 7.0761,17.3827C7.0004,17.2 6.9806,16.9989 7.0192,16.8049C7.0578,16.611 7.153,16.4327 7.2929,16.2928C7.4328,16.153 7.6109,16.0578 7.8049,16.0192C7.9989,15.9806 8.2,16.0005 8.3827,16.0762C8.5654,16.1519 8.7216,16.28 8.8315,16.4445C8.9413,16.6089 9,16.8022 9,17C9,17.2652 8.8946,17.5196 8.7071,17.7072C8.5196,17.8947 8.2652,18 8,18ZM12,18C11.8022,18 11.6089,17.9413 11.4444,17.8314C11.28,17.7215 11.1518,17.5654 11.0761,17.3827C11.0004,17.2 10.9806,16.9989 11.0192,16.8049C11.0578,16.611 11.153,16.4327 11.2929,16.2928C11.4327,16.153 11.6109,16.0578 11.8049,16.0192C11.9989,15.9806 12.2,16.0005 12.3827,16.0762C12.5654,16.1519 12.7216,16.28 12.8315,16.4445C12.9414,16.6089 13,16.8022 13,17C13,17.2652 12.8946,17.5196 12.7071,17.7072C12.5196,17.8947 12.2652,18 12,18ZM16,18C15.8022,18 15.6089,17.9413 15.4444,17.8314C15.28,17.7215 15.1518,17.5654 15.0761,17.3827C15.0004,17.2 14.9806,16.9989 15.0192,16.8049C15.0578,16.611 15.153,16.4327 15.2929,16.2928C15.4327,16.153 15.6109,16.0578 15.8049,16.0192C15.9989,15.9806 16.2,16.0005 16.3827,16.0762C16.5654,16.1519 16.7216,16.28 16.8315,16.4445C16.9414,16.6089 17,16.8022 17,17C17,17.2652 16.8946,17.5196 16.7071,17.7072C16.5196,17.8947 16.2652,18 16,18Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M15,10H9V12H15V10Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M21,8V7C21,6.4696 20.7893,5.9609 20.4142,5.5858C20.0391,5.2107 19.5304,5 19,5H16V4C16,3.4696 15.7893,2.9609 15.4142,2.5858C15.0391,2.2107 14.5304,2 14,2H10C9.4696,2 8.9609,2.2107 8.5858,2.5858C8.2107,2.9609 8,3.4696 8,4V5H5C4.4696,5 3.9609,5.2107 3.5858,5.5858C3.2107,5.9609 3,6.4696 3,7V8H21ZM10,4H14V5H10V4Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_outlet_off.xml b/packages/SystemUI/res/drawable/ic_device_outlet_off.xml new file mode 100644 index 000000000000..6fe7d120af47 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_outlet_off.xml @@ -0,0 +1,34 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M12,2C10.0222,2 8.0888,2.5865 6.4443,3.6853C4.7998,4.7841 3.5181,6.346 2.7612,8.1732C2.0043,10.0005 1.8063,12.0111 2.1922,13.9509C2.578,15.8907 3.5304,17.6725 4.9289,19.071C6.3275,20.4696 8.1093,21.422 10.0491,21.8079C11.9889,22.1937 13.9996,21.9956 15.8268,21.2388C17.6541,20.4819 19.2159,19.2002 20.3147,17.5557C21.4135,15.9112 22,13.9778 22,12C22,9.3478 20.9464,6.8043 19.0711,4.929C17.1957,3.0536 14.6522,2 12,2ZM12,20C10.4178,20 8.871,19.5308 7.5554,18.6517C6.2399,17.7727 5.2145,16.5233 4.609,15.0615C4.0035,13.5997 3.845,11.9912 4.1537,10.4393C4.4624,8.8875 5.2243,7.462 6.3432,6.3431C7.462,5.2243 8.8874,4.4624 10.4393,4.1537C11.9911,3.845 13.5997,4.0035 15.0615,4.609C16.5233,5.2145 17.7727,6.2398 18.6518,7.5554C19.5308,8.871 20,10.4177 20,12C20,14.1217 19.1572,16.1566 17.6569,17.6569C16.1566,19.1572 14.1217,20 12,20Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M9,9H7V13H9V9Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,15C11.7348,15 11.4804,15.1053 11.2929,15.2928C11.1054,15.4804 11,15.7348 11,16V17H13V16C13,15.7348 12.8946,15.4804 12.7071,15.2928C12.5196,15.1053 12.2652,15 12,15Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M17,9H15V13H17V9Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_outlet_on.xml b/packages/SystemUI/res/drawable/ic_device_outlet_on.xml new file mode 100644 index 000000000000..e9d80cf04483 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_outlet_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M12,2C10.0222,2 8.0888,2.5865 6.4443,3.6853C4.7998,4.7841 3.5181,6.346 2.7612,8.1732C2.0043,10.0005 1.8063,12.0111 2.1922,13.9509C2.578,15.8907 3.5304,17.6725 4.9289,19.071C6.3275,20.4696 8.1093,21.422 10.0491,21.8079C11.9889,22.1937 13.9996,21.9956 15.8268,21.2388C17.6541,20.4819 19.2159,19.2002 20.3147,17.5557C21.4135,15.9112 22,13.9778 22,12C22,9.3478 20.9464,6.8043 19.0711,4.929C17.1957,3.0536 14.6522,2 12,2ZM9,13H7V9H9V13ZM13,17H11V16C11,15.7348 11.1054,15.4804 11.2929,15.2928C11.4804,15.1053 11.7348,15 12,15C12.2652,15 12.5196,15.1053 12.7071,15.2928C12.8946,15.4804 13,15.7348 13,16V17ZM17,13H15V9H17V13Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_pergola_off.xml b/packages/SystemUI/res/drawable/ic_device_pergola_off.xml new file mode 100644 index 000000000000..b7113dcd042f --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_pergola_off.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,2C19.7348,2 19.4804,2.1054 19.2929,2.293C19.1054,2.4805 19,2.7348 19,3V4H5V3C5,2.7348 4.8946,2.4805 4.7071,2.293C4.5196,2.1054 4.2652,2 4,2C3.7348,2 3.4804,2.1054 3.2929,2.293C3.1054,2.4805 3,2.7348 3,3V21H5V10H19V21H21V3C21,2.7348 20.8946,2.4805 20.7071,2.293C20.5196,2.1054 20.2652,2 20,2ZM5,8V6H19V8H5Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M8,18H11V21H13V18H16V16H8V18Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_pergola_on.xml b/packages/SystemUI/res/drawable/ic_device_pergola_on.xml new file mode 100644 index 000000000000..b7113dcd042f --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_pergola_on.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,2C19.7348,2 19.4804,2.1054 19.2929,2.293C19.1054,2.4805 19,2.7348 19,3V4H5V3C5,2.7348 4.8946,2.4805 4.7071,2.293C4.5196,2.1054 4.2652,2 4,2C3.7348,2 3.4804,2.1054 3.2929,2.293C3.1054,2.4805 3,2.7348 3,3V21H5V10H19V21H21V3C21,2.7348 20.8946,2.4805 20.7071,2.293C20.5196,2.1054 20.2652,2 20,2ZM5,8V6H19V8H5Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M8,18H11V21H13V18H16V16H8V18Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_refrigerator_off.xml b/packages/SystemUI/res/drawable/ic_device_refrigerator_off.xml new file mode 100644 index 000000000000..33ad44c9f253 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_refrigerator_off.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M18,2.01L6,2C5.4696,2 4.9609,2.2107 4.5858,2.5858C4.2107,2.9609 4,3.4696 4,4V20C4.0016,20.5299 4.2128,21.0377 4.5875,21.4125C4.9623,21.7872 5.47,21.9984 6,22H18C18.5299,21.9984 19.0377,21.7872 19.4125,21.4125C19.7872,21.0377 19.9984,20.5299 20,20V4C19.9999,3.7379 19.948,3.4784 19.8473,3.2363C19.7466,2.9943 19.5991,2.7745 19.4133,2.5896C19.2275,2.4047 19.007,2.2583 18.7645,2.1588C18.5219,2.0594 18.2621,2.0088 18,2.01ZM18,20H6V10.98H18V20ZM18,9H6V4H18V9ZM8,5H10V8H8V5ZM8,12H10V17H8V12Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_refrigerator_on.xml b/packages/SystemUI/res/drawable/ic_device_refrigerator_on.xml new file mode 100644 index 000000000000..fe7a4b6a6c61 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_refrigerator_on.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,9V4C20,3.4696 19.7893,2.9609 19.4142,2.5858C19.0391,2.2107 18.5304,2 18,2H6C5.4696,2 4.9609,2.2107 4.5858,2.5858C4.2107,2.9609 4,3.4696 4,4V9H20ZM8,5H10V8H8V5Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M4,11V20C4,20.5304 4.2107,21.0391 4.5858,21.4142C4.9609,21.7893 5.4696,22 6,22H18C18.5304,22 19.0391,21.7893 19.4142,21.4142C19.7893,21.0391 20,20.5304 20,20V11H4ZM10,17H8V12H10V17Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_remote_control_off.xml b/packages/SystemUI/res/drawable/ic_device_remote_control_off.xml new file mode 100644 index 000000000000..761f6430c88e --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_remote_control_off.xml @@ -0,0 +1,46 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M16,1H8C7.4696,1 6.9609,1.2107 6.5858,1.5858C6.2107,1.9609 6,2.4696 6,3V21C6,21.5304 6.2107,22.0391 6.5858,22.4142C6.9609,22.7893 7.4696,23 8,23H16C16.5304,23 17.0391,22.7893 17.4142,22.4142C17.7893,22.0391 18,21.5304 18,21V3C18,2.4696 17.7893,1.9609 17.4142,1.5858C17.0391,1.2107 16.5304,1 16,1ZM16,21H8V3H16V21Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,10C12.5933,10 13.1734,9.824 13.6667,9.4944C14.1601,9.1648 14.5446,8.6963 14.7716,8.1481C14.9987,7.5999 15.0581,6.9966 14.9424,6.4147C14.8266,5.8327 14.5409,5.2982 14.1213,4.8787C13.7018,4.4591 13.1672,4.1734 12.5853,4.0576C12.0033,3.9419 11.4001,4.0013 10.8519,4.2284C10.3038,4.4555 9.8352,4.8399 9.5056,5.3333C9.1759,5.8266 9,6.4067 9,7C9,7.7957 9.3161,8.5587 9.8787,9.1214C10.4413,9.684 11.2044,10 12,10ZM12,6C12.1978,6 12.3911,6.0587 12.5556,6.1686C12.72,6.2785 12.8482,6.4346 12.9239,6.6173C12.9996,6.8 13.0194,7.0011 12.9808,7.1951C12.9422,7.3891 12.847,7.5673 12.7071,7.7072C12.5673,7.847 12.3891,7.9423 12.1951,7.9809C12.0011,8.0194 11.8,7.9995 11.6173,7.9238C11.4346,7.8481 11.2784,7.72 11.1685,7.5556C11.0587,7.3911 11,7.1978 11,7C11,6.7348 11.1054,6.4804 11.2929,6.2929C11.4804,6.1053 11.7348,6 12,6Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M10,14C10.5523,14 11,13.5523 11,13C11,12.4477 10.5523,12 10,12C9.4477,12 9,12.4477 9,13C9,13.5523 9.4477,14 10,14Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M14,14C14.5523,14 15,13.5523 15,13C15,12.4477 14.5523,12 14,12C13.4477,12 13,12.4477 13,13C13,13.5523 13.4477,14 14,14Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M10,17C10.5523,17 11,16.5523 11,16C11,15.4477 10.5523,15 10,15C9.4477,15 9,15.4477 9,16C9,16.5523 9.4477,17 10,17Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M14,17C14.5523,17 15,16.5523 15,16C15,15.4477 14.5523,15 14,15C13.4477,15 13,15.4477 13,16C13,16.5523 13.4477,17 14,17Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M10,20C10.5523,20 11,19.5523 11,19C11,18.4477 10.5523,18 10,18C9.4477,18 9,18.4477 9,19C9,19.5523 9.4477,20 10,20Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M14,20C14.5523,20 15,19.5523 15,19C15,18.4477 14.5523,18 14,18C13.4477,18 13,18.4477 13,19C13,19.5523 13.4477,20 14,20Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_remote_control_on.xml b/packages/SystemUI/res/drawable/ic_device_remote_control_on.xml new file mode 100644 index 000000000000..b2c55a6e8eff --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_remote_control_on.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M12,8C12.5523,8 13,7.5523 13,7C13,6.4477 12.5523,6 12,6C11.4477,6 11,6.4477 11,7C11,7.5523 11.4477,8 12,8Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M16,1H8C7.4696,1 6.9609,1.2107 6.5858,1.5858C6.2107,1.9609 6,2.4696 6,3V21C6,21.5304 6.2107,22.0391 6.5858,22.4142C6.9609,22.7893 7.4696,23 8,23H16C16.5304,23 17.0391,22.7893 17.4142,22.4142C17.7893,22.0391 18,21.5304 18,21V3C18,2.4696 17.7893,1.9609 17.4142,1.5858C17.0391,1.2107 16.5304,1 16,1ZM10,20C9.8022,20 9.6089,19.9413 9.4444,19.8314C9.28,19.7215 9.1518,19.5654 9.0761,19.3827C9.0004,19.2 8.9806,18.9989 9.0192,18.8049C9.0578,18.611 9.153,18.4327 9.2929,18.2928C9.4327,18.153 9.6109,18.0578 9.8049,18.0192C9.9989,17.9806 10.2,18.0005 10.3827,18.0762C10.5654,18.1519 10.7216,18.28 10.8315,18.4445C10.9414,18.6089 11,18.8022 11,19C11,19.2652 10.8946,19.5196 10.7071,19.7072C10.5196,19.8947 10.2652,20 10,20ZM10,17C9.8022,17 9.6089,16.9413 9.4444,16.8314C9.28,16.7215 9.1518,16.5654 9.0761,16.3827C9.0004,16.2 8.9806,15.9989 9.0192,15.8049C9.0578,15.611 9.153,15.4327 9.2929,15.2928C9.4327,15.153 9.6109,15.0578 9.8049,15.0192C9.9989,14.9806 10.2,15.0005 10.3827,15.0762C10.5654,15.1519 10.7216,15.28 10.8315,15.4445C10.9414,15.6089 11,15.8022 11,16C11,16.2652 10.8946,16.5196 10.7071,16.7072C10.5196,16.8947 10.2652,17 10,17ZM10,14C9.8022,14 9.6089,13.9413 9.4444,13.8314C9.28,13.7215 9.1518,13.5654 9.0761,13.3827C9.0004,13.2 8.9806,12.9989 9.0192,12.8049C9.0578,12.611 9.153,12.4327 9.2929,12.2928C9.4327,12.153 9.6109,12.0578 9.8049,12.0192C9.9989,11.9806 10.2,12.0005 10.3827,12.0762C10.5654,12.1519 10.7216,12.28 10.8315,12.4445C10.9414,12.6089 11,12.8022 11,13C11,13.2652 10.8946,13.5196 10.7071,13.7072C10.5196,13.8947 10.2652,14 10,14ZM14,20C13.8022,20 13.6089,19.9413 13.4444,19.8314C13.28,19.7215 13.1518,19.5654 13.0761,19.3827C13.0004,19.2 12.9806,18.9989 13.0192,18.8049C13.0578,18.611 13.153,18.4327 13.2929,18.2928C13.4327,18.153 13.6109,18.0578 13.8049,18.0192C13.9989,17.9806 14.2,18.0005 14.3827,18.0762C14.5654,18.1519 14.7216,18.28 14.8315,18.4445C14.9414,18.6089 15,18.8022 15,19C15,19.2652 14.8946,19.5196 14.7071,19.7072C14.5196,19.8947 14.2652,20 14,20ZM14,17C13.8022,17 13.6089,16.9413 13.4444,16.8314C13.28,16.7215 13.1518,16.5654 13.0761,16.3827C13.0004,16.2 12.9806,15.9989 13.0192,15.8049C13.0578,15.611 13.153,15.4327 13.2929,15.2928C13.4327,15.153 13.6109,15.0578 13.8049,15.0192C13.9989,14.9806 14.2,15.0005 14.3827,15.0762C14.5654,15.1519 14.7216,15.28 14.8315,15.4445C14.9414,15.6089 15,15.8022 15,16C15,16.2652 14.8946,16.5196 14.7071,16.7072C14.5196,16.8947 14.2652,17 14,17ZM14,14C13.8022,14 13.6089,13.9413 13.4444,13.8314C13.28,13.7215 13.1518,13.5654 13.0761,13.3827C13.0004,13.2 12.9806,12.9989 13.0192,12.8049C13.0578,12.611 13.153,12.4327 13.2929,12.2928C13.4327,12.153 13.6109,12.0578 13.8049,12.0192C13.9989,11.9806 14.2,12.0005 14.3827,12.0762C14.5654,12.1519 14.7216,12.28 14.8315,12.4445C14.9414,12.6089 15,12.8022 15,13C15,13.2652 14.8946,13.5196 14.7071,13.7072C14.5196,13.8947 14.2652,14 14,14ZM12,10C11.4067,10 10.8266,9.824 10.3333,9.4944C9.8399,9.1647 9.4554,8.6962 9.2284,8.1481C9.0013,7.5999 8.9419,6.9966 9.0576,6.4147C9.1734,5.8327 9.4591,5.2982 9.8787,4.8787C10.2982,4.4591 10.8328,4.1734 11.4147,4.0576C11.9967,3.9419 12.5999,4.0013 13.1481,4.2284C13.6962,4.4555 14.1648,4.8399 14.4944,5.3333C14.8241,5.8266 15,6.4067 15,7C15,7.7957 14.6839,8.5587 14.1213,9.1213C13.5587,9.684 12.7956,10 12,10Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_security_system_off.xml b/packages/SystemUI/res/drawable/ic_device_security_system_off.xml new file mode 100644 index 000000000000..7a987b215b0a --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_security_system_off.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M12,2L4,5V11.0911C4,16.1361 7.413,20.854 12,22C16.587,20.854 20,16.1361 20,11.0911V5L12,2ZM18,11.0911C18.0051,12.9956 17.4351,14.8572 16.3645,16.4324C15.294,18.0075 13.7727,19.2227 12,19.9189C10.2273,19.2227 8.706,18.0075 7.6355,16.4324C6.5649,14.8572 5.9949,12.9956 6,11.0911V6.386L12,4.136L18,6.386V11.0911Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M8.464,10.939L7.05,12.353L10.586,15.8879L16.949,9.5249L15.535,8.1111L10.586,13.0601L8.464,10.939Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_security_system_on.xml b/packages/SystemUI/res/drawable/ic_device_security_system_on.xml new file mode 100644 index 000000000000..f23106808826 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_security_system_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M12,2L4,5V11.0911C4,16.1361 7.413,20.854 12,22C16.587,20.854 20,16.1361 20,11.0911V5L12,2ZM10.586,15.8889L7.05,12.354L8.464,10.9399L10.586,13.061L15.536,8.1111L16.95,9.5249L10.586,15.8889Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_set_top_off.xml b/packages/SystemUI/res/drawable/ic_device_set_top_off.xml new file mode 100644 index 000000000000..7c9d9cef5df4 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_set_top_off.xml @@ -0,0 +1,34 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M2,7V17H22V7H2ZM20,15H4V9H20V15Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M11,11H5V13H11V11Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M14,13C14.5523,13 15,12.5523 15,12C15,11.4477 14.5523,11 14,11C13.4477,11 13,11.4477 13,12C13,12.5523 13.4477,13 14,13Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M17,13C17.5523,13 18,12.5523 18,12C18,11.4477 17.5523,11 17,11C16.4477,11 16,11.4477 16,12C16,12.5523 16.4477,13 17,13Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_set_top_on.xml b/packages/SystemUI/res/drawable/ic_device_set_top_on.xml new file mode 100644 index 000000000000..c8727941f5d7 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_set_top_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M2,7V17H22V7H2ZM11,13H5V11H11V13ZM14,13C13.8022,13 13.6089,12.9414 13.4444,12.8315C13.28,12.7217 13.1518,12.5653 13.0761,12.3826C13.0004,12.1998 12.9806,11.9989 13.0192,11.8049C13.0578,11.611 13.153,11.4328 13.2929,11.293C13.4327,11.1531 13.6109,11.0579 13.8049,11.0193C13.9989,10.9807 14.2,11.0005 14.3827,11.0762C14.5654,11.1519 14.7216,11.2799 14.8315,11.4443C14.9414,11.6088 15,11.8022 15,12C15,12.2652 14.8946,12.5195 14.7071,12.707C14.5196,12.8946 14.2652,13 14,13ZM17,13C16.8022,13 16.6089,12.9414 16.4444,12.8315C16.28,12.7217 16.1518,12.5653 16.0761,12.3826C16.0004,12.1998 15.9806,11.9989 16.0192,11.8049C16.0578,11.611 16.153,11.4328 16.2929,11.293C16.4327,11.1531 16.6109,11.0579 16.8049,11.0193C16.9989,10.9807 17.2,11.0005 17.3827,11.0762C17.5654,11.1519 17.7216,11.2799 17.8315,11.4443C17.9414,11.6088 18,11.8022 18,12C18,12.2652 17.8946,12.5195 17.7071,12.707C17.5196,12.8946 17.2652,13 17,13Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_sprinkler_off.xml b/packages/SystemUI/res/drawable/ic_device_sprinkler_off.xml new file mode 100644 index 000000000000..fb6e34eee86e --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_sprinkler_off.xml @@ -0,0 +1,52 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M7.5,18H11V21H13V18H16.5V16H7.5V18Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,13C12.5523,13 13,12.5523 13,12C13,11.4477 12.5523,11 12,11C11.4477,11 11,11.4477 11,12C11,12.5523 11.4477,13 12,13Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,9C12.5523,9 13,8.5523 13,8C13,7.4477 12.5523,7 12,7C11.4477,7 11,7.4477 11,8C11,8.5523 11.4477,9 12,9Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,5C12.5523,5 13,4.5523 13,4C13,3.4477 12.5523,3 12,3C11.4477,3 11,3.4477 11,4C11,4.5523 11.4477,5 12,5Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M15.707,14.707C15.8469,14.5672 15.9421,14.3891 15.9808,14.1951C16.0194,14.0011 15.9996,13.7999 15.9239,13.6172C15.8482,13.4344 15.7201,13.2784 15.5556,13.1685C15.3911,13.0586 15.1978,12.9998 15,12.9998C14.8022,12.9998 14.6088,13.0586 14.4444,13.1685C14.2799,13.2784 14.1518,13.4344 14.0761,13.6172C14.0004,13.7999 13.9806,14.0011 14.0192,14.1951C14.0578,14.3891 14.1531,14.5672 14.293,14.707C14.4805,14.8945 14.7348,14.9998 15,14.9998C15.2652,14.9998 15.5195,14.8945 15.707,14.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M17.121,10.4641C16.9812,10.604 16.8861,10.7821 16.8476,10.9761C16.8091,11.17 16.829,11.371 16.9047,11.5537C16.9804,11.7364 17.1086,11.8924 17.273,12.0022C17.4375,12.112 17.6308,12.1707 17.8285,12.1707C18.0262,12.1707 18.2195,12.112 18.3839,12.0022C18.5484,11.8924 18.6765,11.7364 18.7523,11.5537C18.828,11.371 18.8479,11.17 18.8094,10.9761C18.7709,10.7821 18.6757,10.604 18.536,10.4641C18.4431,10.3711 18.3328,10.2972 18.2114,10.2468C18.09,10.1965 17.9599,10.1707 17.8285,10.1707C17.6971,10.1707 17.5669,10.1965 17.4455,10.2468C17.3241,10.2972 17.2139,10.3711 17.121,10.4641Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M21.364,7.6359C21.2242,7.496 21.046,7.4009 20.852,7.3622C20.658,7.3236 20.4569,7.3435 20.2742,7.4191C20.0914,7.4948 19.9352,7.6228 19.8253,7.7873C19.7155,7.9517 19.6568,8.1452 19.6568,8.343C19.6568,8.5407 19.7155,8.7342 19.8253,8.8986C19.9352,9.0631 20.0914,9.1911 20.2742,9.2668C20.4569,9.3425 20.658,9.3623 20.852,9.3237C21.046,9.2851 21.2242,9.1899 21.364,9.05C21.5515,8.8625 21.6568,8.6081 21.6568,8.343C21.6568,8.0778 21.5515,7.8235 21.364,7.6359Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M9.707,14.707C9.8469,14.5672 9.9421,14.3891 9.9808,14.1951C10.0194,14.0011 9.9996,13.7999 9.9239,13.6172C9.8482,13.4344 9.72,13.2784 9.5556,13.1685C9.3911,13.0586 9.1978,12.9998 9,12.9998C8.8022,12.9998 8.6088,13.0586 8.4444,13.1685C8.2799,13.2784 8.1518,13.4344 8.0761,13.6172C8.0004,13.7999 7.9806,14.0011 8.0192,14.1951C8.0578,14.3891 8.1531,14.5672 8.293,14.707C8.4805,14.8945 8.7348,14.9998 9,14.9998C9.2652,14.9998 9.5195,14.8945 9.707,14.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M5.464,10.4641C5.3243,10.604 5.2291,10.7821 5.1906,10.9761C5.1522,11.17 5.172,11.371 5.2477,11.5537C5.3235,11.7364 5.4516,11.8924 5.616,12.0022C5.7805,12.112 5.9738,12.1707 6.1715,12.1707C6.3692,12.1707 6.5625,12.112 6.727,12.0022C6.8914,11.8924 7.0196,11.7364 7.0953,11.5537C7.171,11.371 7.1909,11.17 7.1524,10.9761C7.1139,10.7821 7.0188,10.604 6.879,10.4641C6.7861,10.3711 6.6758,10.2972 6.5545,10.2468C6.4331,10.1965 6.3029,10.1707 6.1715,10.1707C6.0401,10.1707 5.91,10.1965 5.7886,10.2468C5.6672,10.2972 5.5569,10.3711 5.464,10.4641Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M2.636,7.636C2.4961,7.7758 2.4009,7.954 2.3623,8.148C2.3236,8.3419 2.3434,8.5431 2.4191,8.7258C2.4948,8.9086 2.623,9.0647 2.7874,9.1746C2.9519,9.2845 3.1452,9.3433 3.343,9.3433C3.5408,9.3433 3.7342,9.2845 3.8986,9.1746C4.0631,9.0647 4.1912,8.9086 4.2669,8.7258C4.3426,8.5431 4.3624,8.3419 4.3238,8.148C4.2852,7.954 4.1899,7.7758 4.05,7.636C3.8625,7.4485 3.6082,7.3433 3.343,7.3433C3.0779,7.3433 2.8235,7.4485 2.636,7.636Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_sprinkler_on.xml b/packages/SystemUI/res/drawable/ic_device_sprinkler_on.xml new file mode 100644 index 000000000000..a5bdf1cd615d --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_sprinkler_on.xml @@ -0,0 +1,52 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20.657,9.343C21.2093,9.343 21.657,8.8953 21.657,8.343C21.657,7.7907 21.2093,7.343 20.657,7.343C20.1047,7.343 19.657,7.7907 19.657,8.343C19.657,8.8953 20.1047,9.343 20.657,9.343Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M7.5,18H11V21H13V18H16.5V16H7.5V18Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,13C12.5523,13 13,12.5523 13,12C13,11.4477 12.5523,11 12,11C11.4477,11 11,11.4477 11,12C11,12.5523 11.4477,13 12,13Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,9C12.5523,9 13,8.5523 13,8C13,7.4477 12.5523,7 12,7C11.4477,7 11,7.4477 11,8C11,8.5523 11.4477,9 12,9Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,5C12.5523,5 13,4.5523 13,4C13,3.4477 12.5523,3 12,3C11.4477,3 11,3.4477 11,4C11,4.5523 11.4477,5 12,5Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M15.707,14.707C15.8469,14.5672 15.9422,14.3891 15.9808,14.1951C16.0194,14.0011 15.9996,13.7999 15.9239,13.6172C15.8483,13.4344 15.7201,13.2784 15.5556,13.1685C15.3912,13.0586 15.1978,12.9998 15,12.9998C14.8022,12.9998 14.6089,13.0586 14.4444,13.1685C14.28,13.2784 14.1518,13.4344 14.0761,13.6172C14.0004,13.7999 13.9807,14.0011 14.0193,14.1951C14.0579,14.3891 14.1531,14.5672 14.293,14.707C14.4806,14.8945 14.7349,14.9998 15,14.9998C15.2652,14.9998 15.5195,14.8945 15.707,14.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M18.536,10.4642C18.3961,10.3245 18.2179,10.2293 18.024,10.1908C17.83,10.1523 17.629,10.1722 17.4464,10.2479C17.2637,10.3236 17.1076,10.4516 16.9978,10.616C16.8879,10.7805 16.8293,10.9737 16.8293,11.1715C16.8293,11.3692 16.8879,11.5627 16.9978,11.7271C17.1076,11.8916 17.2637,12.0196 17.4464,12.0953C17.629,12.171 17.83,12.1909 18.024,12.1524C18.2179,12.1139 18.3961,12.0187 18.536,11.879C18.629,11.7861 18.7028,11.6759 18.7531,11.5545C18.8034,11.4331 18.8293,11.3029 18.8293,11.1715C18.8293,11.0401 18.8034,10.9101 18.7531,10.7887C18.7028,10.6673 18.629,10.5571 18.536,10.4642Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M9.707,14.707C9.8469,14.5672 9.9422,14.3891 9.9808,14.1951C10.0194,14.0011 9.9996,13.7999 9.9239,13.6172C9.8483,13.4344 9.7201,13.2784 9.5556,13.1685C9.3912,13.0586 9.1978,12.9998 9,12.9998C8.8022,12.9998 8.6089,13.0586 8.4444,13.1685C8.28,13.2784 8.1518,13.4344 8.0761,13.6172C8.0004,13.7999 7.9807,14.0011 8.0193,14.1951C8.0579,14.3891 8.1531,14.5672 8.293,14.707C8.4806,14.8945 8.7349,14.9998 9,14.9998C9.2652,14.9998 9.5195,14.8945 9.707,14.707Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M5.464,10.4641C5.3243,10.604 5.2291,10.7821 5.1906,10.9761C5.1522,11.17 5.172,11.371 5.2477,11.5537C5.3235,11.7364 5.4516,11.8924 5.616,12.0022C5.7805,12.112 5.9738,12.1707 6.1715,12.1707C6.3692,12.1707 6.5625,12.112 6.727,12.0022C6.8914,11.8924 7.0196,11.7364 7.0953,11.5537C7.171,11.371 7.1909,11.17 7.1524,10.9761C7.1139,10.7821 7.0188,10.604 6.879,10.4641C6.7861,10.3711 6.6758,10.2972 6.5545,10.2468C6.4331,10.1965 6.3029,10.1707 6.1715,10.1707C6.0401,10.1707 5.91,10.1965 5.7886,10.2468C5.6672,10.2972 5.5569,10.3711 5.464,10.4641Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M2.636,7.636C2.4961,7.7758 2.4009,7.954 2.3623,8.148C2.3236,8.3419 2.3434,8.5431 2.4191,8.7258C2.4948,8.9086 2.623,9.0647 2.7874,9.1746C2.9519,9.2845 3.1452,9.3433 3.343,9.3433C3.5408,9.3433 3.7342,9.2845 3.8986,9.1746C4.0631,9.0647 4.1912,8.9086 4.2669,8.7258C4.3426,8.5431 4.3624,8.3419 4.3238,8.148C4.2852,7.954 4.1899,7.7758 4.05,7.636C3.8625,7.4485 3.6082,7.3433 3.343,7.3433C3.0779,7.3433 2.8235,7.4485 2.636,7.636Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_styler_off.xml b/packages/SystemUI/res/drawable/ic_device_styler_off.xml new file mode 100644 index 000000000000..4d5e3f385f4c --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_styler_off.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M19.56,11.361L13,8.4408V6.9999C13,6.7347 12.8946,6.4804 12.7071,6.2929C12.5196,6.1054 12.2652,5.9999 12,5.9999C11.8022,5.9999 11.6089,5.9413 11.4444,5.8315C11.28,5.7216 11.1518,5.5652 11.0761,5.3825C11.0004,5.1998 10.9806,4.9988 11.0192,4.8049C11.0578,4.6109 11.153,4.4327 11.2929,4.2929C11.4327,4.153 11.6109,4.0578 11.8049,4.0192C11.9989,3.9806 12.2,4.0004 12.3827,4.0761C12.5654,4.1518 12.7216,4.2798 12.8315,4.4443C12.9414,4.6087 13,4.8021 13,4.9999H15C15.0015,4.4496 14.8517,3.9095 14.5668,3.4386C14.2819,2.9678 13.8729,2.5843 13.3847,2.3303C12.8965,2.0762 12.3478,1.9613 11.7987,1.9982C11.2496,2.0351 10.7212,2.2224 10.2714,2.5395C9.8216,2.8566 9.4677,3.2915 9.2484,3.7963C9.0291,4.3011 8.9529,4.8563 9.0282,5.4015C9.1034,5.9467 9.3272,6.4608 9.6749,6.8874C10.0227,7.3139 10.4811,7.6365 11,7.82V8.4499L4.44,11.37C4.0115,11.5562 3.6468,11.8636 3.3909,12.2546C3.1351,12.6455 2.9992,13.1028 3,13.57V13.58C2.9995,13.8979 3.0617,14.2129 3.1831,14.5068C3.3046,14.8006 3.4828,15.0676 3.7076,15.2924C3.9325,15.5172 4.1994,15.6954 4.4933,15.8168C4.7871,15.9382 5.1021,16.0004 5.42,15.9999H7V21.9999H17V15.9999H18.58C18.898,16.0004 19.2129,15.9382 19.5067,15.8168C19.8006,15.6954 20.0676,15.5172 20.2924,15.2924C20.5172,15.0676 20.6954,14.8006 20.8169,14.5068C20.9383,14.2129 21.0005,13.8979 21,13.58V13.57C20.9994,13.1019 20.8631,12.644 20.6075,12.2519C20.3519,11.8598 19.988,11.5504 19.56,11.361ZM15,19.9999H9V14.9999H15V19.9999ZM18.58,13.9999H17V12.9999H7V13.9999H5.42C5.3642,13.9993 5.3091,13.9877 5.2577,13.9657C5.2064,13.9438 5.1599,13.9119 5.1209,13.872C5.0819,13.8321 5.0512,13.7846 5.0304,13.7328C5.0097,13.681 4.9993,13.6258 5,13.57C4.999,13.4889 5.0222,13.4094 5.0668,13.3417C5.1114,13.274 5.1752,13.221 5.25,13.1899L12,10.1899L18.75,13.1899C18.8245,13.2243 18.8876,13.2795 18.9319,13.3486C18.9761,13.4176 18.9998,13.4979 19,13.58C18.9995,13.6912 18.9551,13.7977 18.8764,13.8764C18.7978,13.955 18.6912,13.9994 18.58,13.9999Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_styler_on.xml b/packages/SystemUI/res/drawable/ic_device_styler_on.xml new file mode 100644 index 000000000000..58e04e0913b3 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_styler_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M19.56,11.361L13,8.4408V6.9999C13,6.7347 12.8946,6.4804 12.7071,6.2929C12.5196,6.1054 12.2652,5.9999 12,5.9999C11.8022,5.9999 11.6089,5.9413 11.4444,5.8315C11.28,5.7216 11.1518,5.5652 11.0761,5.3825C11.0004,5.1998 10.9806,4.9988 11.0192,4.8049C11.0578,4.6109 11.153,4.4327 11.2929,4.2929C11.4327,4.153 11.6109,4.0578 11.8049,4.0192C11.9989,3.9806 12.2,4.0004 12.3827,4.0761C12.5654,4.1518 12.7216,4.2798 12.8315,4.4443C12.9414,4.6087 13,4.8021 13,4.9999H15C15.0015,4.4496 14.8517,3.9095 14.5668,3.4386C14.2819,2.9678 13.8729,2.5843 13.3847,2.3303C12.8965,2.0762 12.3478,1.9613 11.7987,1.9982C11.2496,2.0351 10.7212,2.2224 10.2714,2.5395C9.8216,2.8566 9.4677,3.2915 9.2484,3.7963C9.0291,4.3011 8.9529,4.8563 9.0282,5.4015C9.1034,5.9467 9.3272,6.4608 9.6749,6.8874C10.0227,7.3139 10.4811,7.6365 11,7.82V8.4499L4.44,11.37C4.0115,11.5562 3.6468,11.8636 3.3909,12.2546C3.1351,12.6455 2.9992,13.1028 3,13.57V13.58C2.9995,13.8979 3.0617,14.2129 3.1831,14.5068C3.3046,14.8006 3.4828,15.0676 3.7076,15.2924C3.9325,15.5172 4.1994,15.6954 4.4933,15.8168C4.7871,15.9382 5.1021,16.0004 5.42,15.9999H7V21.9999H17V15.9999H18.58C18.898,16.0004 19.2129,15.9382 19.5067,15.8168C19.8006,15.6954 20.0676,15.5172 20.2924,15.2924C20.5172,15.0676 20.6954,14.8006 20.8169,14.5068C20.9383,14.2129 21.0005,13.8979 21,13.58V13.57C20.9994,13.1019 20.8631,12.644 20.6075,12.2519C20.3519,11.8598 19.988,11.5504 19.56,11.361ZM18.58,14.0009H17V13.0009H7V14.0009H5.42C5.3642,14.0002 5.3091,13.9887 5.2577,13.9667C5.2064,13.9448 5.1599,13.9129 5.1209,13.873C5.0819,13.833 5.0512,13.7859 5.0304,13.7341C5.0097,13.6822 4.9993,13.6268 5,13.571C4.999,13.4899 5.0222,13.4104 5.0668,13.3427C5.1114,13.275 5.1752,13.222 5.25,13.1908L12,10.1908L18.75,13.1908C18.8245,13.2253 18.8876,13.2804 18.9319,13.3495C18.9761,13.4186 18.9998,13.4989 19,13.581C18.9992,13.692 18.9547,13.7982 18.8761,13.8766C18.7974,13.9551 18.6911,13.9994 18.58,13.9999V14.0009Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_switch_off.xml b/packages/SystemUI/res/drawable/ic_device_switch_off.xml new file mode 100644 index 000000000000..12dcd816aee8 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_switch_off.xml @@ -0,0 +1,31 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M19,3H5C4.4696,3 3.9609,3.2107 3.5858,3.5858C3.2107,3.9609 3,4.4696 3,5V19C3,19.5304 3.2107,20.0391 3.5858,20.4142C3.9609,20.7893 4.4696,21 5,21H19C19.5304,21 20.0391,20.7893 20.4142,20.4142C20.7893,20.0391 21,19.5304 21,19V5C21,4.4696 20.7893,3.9609 20.4142,3.5858C20.0391,3.2107 19.5304,3 19,3ZM19,19H5V5H19V19Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M16,7H8V17H16V7ZM14,15H10V9H14V15Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M13,10H11V12H13V10Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_switch_on.xml b/packages/SystemUI/res/drawable/ic_device_switch_on.xml new file mode 100644 index 000000000000..68678a39506b --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_switch_on.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M14,9H10V15H14V9ZM13,12H11V10H13V12Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M19,3H5C4.4696,3 3.9609,3.2107 3.5858,3.5858C3.2107,3.9609 3,4.4696 3,5V19C3,19.5304 3.2107,20.0391 3.5858,20.4142C3.9609,20.7893 4.4696,21 5,21H19C19.5304,21 20.0391,20.7893 20.4142,20.4142C20.7893,20.0391 21,19.5304 21,19V5C21,4.4696 20.7893,3.9609 20.4142,3.5858C20.0391,3.2107 19.5304,3 19,3ZM16,17H8V7H16V17Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_thermostat_gm2_24px.xml b/packages/SystemUI/res/drawable/ic_device_thermostat_gm2_24px.xml deleted file mode 100644 index 45a658fe07da..000000000000 --- a/packages/SystemUI/res/drawable/ic_device_thermostat_gm2_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="#FF000000" - android:pathData="M18,9h-5v2h5m3,-6h-8v2h8m-9,11.97c0.62,-0.83 1,-1.85 1,-2.97 0,-1.63 -0.79,-3.09 -2,-4V6c0,-1.66 -1.34,-3 -3,-3S5,4.34 5,6v6c-1.21,0.91 -2,2.37 -2,4 0,1.12 0.38,2.14 1,2.97V19h0.02c0.91,1.21 2.35,2 3.98,2s3.06,-0.79 3.98,-2H12v-0.03zM6.2,13.6L7,13V6c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v7l0.8,0.6c0.75,0.57 1.2,1.46 1.2,2.4H5c0,-0.94 0.45,-1.84 1.2,-2.4z"/> -</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_thermostat_off.xml b/packages/SystemUI/res/drawable/ic_device_thermostat_off.xml new file mode 100644 index 000000000000..1ba8741e4ae2 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_thermostat_off.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M16,18.97C16.6469,18.1148 16.9979,17.0723 17,16C16.9993,15.2239 16.8183,14.4586 16.4712,13.7644C16.1241,13.0702 15.6205,12.4662 15,12V6C15,5.2043 14.6839,4.4413 14.1213,3.8787C13.5587,3.3161 12.7956,3 12,3C11.2044,3 10.4413,3.3161 9.8787,3.8787C9.3161,4.4413 9,5.2043 9,6V12C8.3795,12.4662 7.8759,13.0702 7.5288,13.7644C7.1817,14.4586 7.0007,15.2239 7,16C7.0021,17.0723 7.3531,18.1148 8,18.97V19H8.02C8.4815,19.6206 9.0818,20.1246 9.7729,20.4719C10.4639,20.8192 11.2266,21.0001 12,21.0001C12.7734,21.0001 13.5361,20.8192 14.2271,20.4719C14.9182,20.1246 15.5185,19.6206 15.98,19H16V18.97ZM10.2,13.6L11,13V6C11,5.7348 11.1054,5.4804 11.2929,5.2929C11.4804,5.1054 11.7348,5 12,5C12.2652,5 12.5196,5.1054 12.7071,5.2929C12.8946,5.4804 13,5.7348 13,6V13L13.8,13.6C14.1711,13.8809 14.4723,14.2435 14.6805,14.6598C14.8886,15.076 14.9979,15.5346 15,16H9C9.0009,15.5344 9.1098,15.0754 9.318,14.659C9.5262,14.2426 9.8281,13.8801 10.2,13.6Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_thermostat_on.xml b/packages/SystemUI/res/drawable/ic_device_thermostat_on.xml new file mode 100644 index 000000000000..1ba8741e4ae2 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_thermostat_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M16,18.97C16.6469,18.1148 16.9979,17.0723 17,16C16.9993,15.2239 16.8183,14.4586 16.4712,13.7644C16.1241,13.0702 15.6205,12.4662 15,12V6C15,5.2043 14.6839,4.4413 14.1213,3.8787C13.5587,3.3161 12.7956,3 12,3C11.2044,3 10.4413,3.3161 9.8787,3.8787C9.3161,4.4413 9,5.2043 9,6V12C8.3795,12.4662 7.8759,13.0702 7.5288,13.7644C7.1817,14.4586 7.0007,15.2239 7,16C7.0021,17.0723 7.3531,18.1148 8,18.97V19H8.02C8.4815,19.6206 9.0818,20.1246 9.7729,20.4719C10.4639,20.8192 11.2266,21.0001 12,21.0001C12.7734,21.0001 13.5361,20.8192 14.2271,20.4719C14.9182,20.1246 15.5185,19.6206 15.98,19H16V18.97ZM10.2,13.6L11,13V6C11,5.7348 11.1054,5.4804 11.2929,5.2929C11.4804,5.1054 11.7348,5 12,5C12.2652,5 12.5196,5.1054 12.7071,5.2929C12.8946,5.4804 13,5.7348 13,6V13L13.8,13.6C14.1711,13.8809 14.4723,14.2435 14.6805,14.6598C14.8886,15.076 14.9979,15.5346 15,16H9C9.0009,15.5344 9.1098,15.0754 9.318,14.659C9.5262,14.2426 9.8281,13.8801 10.2,13.6Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_tv_off.xml b/packages/SystemUI/res/drawable/ic_device_tv_off.xml new file mode 100644 index 000000000000..dd91ed831bb8 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_tv_off.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,4H4C3.4701,4.0016 2.9623,4.2129 2.5875,4.5876C2.2128,4.9624 2.0016,5.47 2,6V17C2.0016,17.5299 2.2128,18.0376 2.5875,18.4124C2.9623,18.7871 3.4701,18.9984 4,19V21H5L5.667,19H18.333L19,21H20V19C20.5299,18.9984 21.0377,18.7871 21.4125,18.4124C21.7872,18.0376 21.9984,17.5299 22,17V6C21.9984,5.47 21.7872,4.9624 21.4125,4.5876C21.0377,4.2129 20.5299,4.0016 20,4ZM20,17H4V6H20V17Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_tv_on.xml b/packages/SystemUI/res/drawable/ic_device_tv_on.xml new file mode 100644 index 000000000000..dd91ed831bb8 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_tv_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,4H4C3.4701,4.0016 2.9623,4.2129 2.5875,4.5876C2.2128,4.9624 2.0016,5.47 2,6V17C2.0016,17.5299 2.2128,18.0376 2.5875,18.4124C2.9623,18.7871 3.4701,18.9984 4,19V21H5L5.667,19H18.333L19,21H20V19C20.5299,18.9984 21.0377,18.7871 21.4125,18.4124C21.7872,18.0376 21.9984,17.5299 22,17V6C21.9984,5.47 21.7872,4.9624 21.4125,4.5876C21.0377,4.2129 20.5299,4.0016 20,4ZM20,17H4V6H20V17Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_vacuum_off.xml b/packages/SystemUI/res/drawable/ic_device_vacuum_off.xml new file mode 100644 index 000000000000..e0fadc8a9a27 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_vacuum_off.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M4,16.0001C3.4067,16.0001 2.8266,16.176 2.3333,16.5057C1.8399,16.8353 1.4554,17.3039 1.2284,17.8521C1.0013,18.4002 0.9419,19.0034 1.0576,19.5854C1.1734,20.1673 1.4591,20.7019 1.8787,21.1214C2.2982,21.541 2.8328,21.8267 3.4147,21.9425C3.9967,22.0582 4.5999,21.9988 5.148,21.7717C5.6962,21.5447 6.1648,21.1602 6.4944,20.6668C6.824,20.1735 7,19.5934 7,19.0001C7,18.2045 6.6839,17.4414 6.1213,16.8788C5.5587,16.3162 4.7957,16.0001 4,16.0001ZM4,20.0001C3.8022,20.0001 3.6089,19.9415 3.4444,19.8316C3.28,19.7217 3.1518,19.5655 3.0761,19.3828C3.0004,19.2001 2.9806,18.999 3.0192,18.805C3.0578,18.611 3.153,18.4329 3.2929,18.293C3.4327,18.1532 3.6109,18.0579 3.8049,18.0193C3.9989,17.9807 4.2,18.0005 4.3827,18.0762C4.5654,18.1519 4.7216,18.2801 4.8315,18.4445C4.9413,18.609 5,18.8023 5,19.0001C5,19.2653 4.8946,19.5197 4.7071,19.7072C4.5196,19.8947 4.2652,20.0001 4,20.0001ZM23,20.0001V22.0001H16V20.0001H18.49L12.01,4.5901C11.7747,4.0366 11.3553,3.5814 10.823,3.3016C10.2906,3.0217 9.6779,2.9344 9.0885,3.0544C8.4991,3.1744 7.9693,3.4943 7.5888,3.96C7.2082,4.4257 7.0002,5.0086 7,5.6101V9.0001H9C10.0609,9.0001 11.0783,9.4215 11.8284,10.1717C12.5786,10.9218 13,11.9392 13,13.0001V22.0001H7.99C8.4398,21.4103 8.7508,20.7267 8.9,20.0001H11V13.0001C10.9984,12.4702 10.7872,11.9624 10.4125,11.5876C10.0377,11.2129 9.5299,11.0017 9,11.0001H4V14.0001C3.3113,13.9992 2.6301,14.1422 2,14.4201V9.0001H5V5.6101C5.0002,4.5458 5.3685,3.5144 6.0426,2.6908C6.7165,1.8672 7.6547,1.3021 8.6979,1.0913C9.741,0.8806 10.825,1.0372 11.7659,1.5345C12.7068,2.0319 13.4466,2.8394 13.86,3.8201L20.66,20.0001H23Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_vacuum_on.xml b/packages/SystemUI/res/drawable/ic_device_vacuum_on.xml new file mode 100644 index 000000000000..d3b0a7df6cbe --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_vacuum_on.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M4,16.0001C3.4067,16.0001 2.8266,16.176 2.3333,16.5057C1.8399,16.8353 1.4554,17.3039 1.2284,17.8521C1.0013,18.4002 0.9419,19.0034 1.0576,19.5854C1.1734,20.1673 1.4591,20.7018 1.8787,21.1214C2.2982,21.541 2.8328,21.8267 3.4147,21.9424C3.9967,22.0582 4.5999,21.9988 5.148,21.7717C5.6962,21.5447 6.1648,21.1602 6.4944,20.6668C6.824,20.1735 7,19.5934 7,19.0001C7,18.2044 6.6839,17.4414 6.1213,16.8788C5.5587,16.3162 4.7957,16.0001 4,16.0001ZM4,20.0001C3.8022,20.0001 3.6089,19.9415 3.4444,19.8316C3.28,19.7217 3.1518,19.5655 3.0761,19.3828C3.0004,19.2001 2.9806,18.999 3.0192,18.805C3.0578,18.611 3.153,18.4329 3.2929,18.293C3.4327,18.1531 3.6109,18.0579 3.8049,18.0193C3.9989,17.9807 4.2,18.0005 4.3827,18.0762C4.5654,18.1519 4.7216,18.2801 4.8315,18.4445C4.9413,18.609 5,18.8023 5,19.0001C5,19.2653 4.8946,19.5196 4.7071,19.7072C4.5196,19.8947 4.2652,20.0001 4,20.0001Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M20.66,20.0001L13.86,3.8201C13.4466,2.8394 12.7068,2.0319 11.7659,1.5345C10.825,1.0372 9.7411,0.8806 8.6979,1.0913C7.6547,1.3021 6.7165,1.8672 6.0426,2.6908C5.3685,3.5144 5.0002,4.5458 5,5.6101V9.0001H2V14.4261C2.76,14.0908 3.5918,13.9506 4.4197,14.0184C5.2476,14.0861 6.0455,14.3596 6.7409,14.814C7.4363,15.2684 8.0072,15.8893 8.4017,16.6203C8.7962,17.3514 9.0019,18.1694 9,19.0001C8.9968,20.0853 8.637,21.1394 7.976,22.0001H13V13.0001C13,11.9392 12.5786,10.9218 11.8284,10.1717C11.0783,9.4215 10.0609,9.0001 9,9.0001H7V5.6101C7.0002,5.0086 7.2082,4.4257 7.5888,3.96C7.9693,3.4943 8.4991,3.1744 9.0885,3.0544C9.6779,2.9344 10.2906,3.0217 10.823,3.3016C11.3553,3.5814 11.7747,4.0366 12.01,4.5901L18.49,20.0001H16V22.0001H23V20.0001H20.66Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_valve_off.xml b/packages/SystemUI/res/drawable/ic_device_valve_off.xml new file mode 100644 index 000000000000..5bfb46fdd2bd --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_valve_off.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M11,8H13V5H17V3H7V5H11V8Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M18,13V14H15V11H16V9H8V11H9V14H6V13H4V21H6V20H18V21H20V13H18ZM6,18V16H11V11H13V16H18V18H6Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_valve_on.xml b/packages/SystemUI/res/drawable/ic_device_valve_on.xml new file mode 100644 index 000000000000..66b882933141 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_valve_on.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M11,8H13V5H17V3H7V5H11V8Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M18,13V14H15V11H16V9H8V11H9V14H6V13H4V21H6V20H18V21H20V13H18Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_washer_off.xml b/packages/SystemUI/res/drawable/ic_device_washer_off.xml new file mode 100644 index 000000000000..f759bcc88cda --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_washer_off.xml @@ -0,0 +1,34 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M18,2.01L6,2C5.7371,1.9991 5.4766,2.0502 5.2336,2.1504C4.9905,2.2506 4.7696,2.3979 4.5837,2.5838C4.3978,2.7696 4.2505,2.9906 4.1504,3.2336C4.0502,3.4767 3.9991,3.7371 4,4V20C3.9991,20.2629 4.0502,20.5233 4.1504,20.7664C4.2505,21.0094 4.3978,21.2304 4.5837,21.4163C4.7696,21.6022 4.9905,21.7494 5.2336,21.8496C5.4766,21.9498 5.7371,22.0009 6,22H18C18.2629,22.0009 18.5234,21.9498 18.7665,21.8496C19.0095,21.7494 19.2304,21.6022 19.4163,21.4163C19.6022,21.2304 19.7495,21.0094 19.8497,20.7664C19.9498,20.5233 20.0009,20.2629 20,20V4C20.0007,3.7376 19.9493,3.4778 19.8489,3.2354C19.7485,2.993 19.6011,2.773 19.4151,2.5879C19.2291,2.4028 19.0083,2.2564 18.7654,2.1572C18.5225,2.0581 18.2624,2.008 18,2.01ZM18,20H6L5.993,4H18V20Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M11,7C11.5523,7 12,6.5523 12,6C12,5.4477 11.5523,5 11,5C10.4477,5 10,5.4477 10,6C10,6.5523 10.4477,7 11,7Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M8,7C8.5523,7 9,6.5523 9,6C9,5.4477 8.5523,5 8,5C7.4477,5 7,5.4477 7,6C7,6.5523 7.4477,7 8,7Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M12,18.9999C12.9889,18.9999 13.9556,18.7065 14.7778,18.1571C15.6001,17.6077 16.241,16.8269 16.6194,15.9132C16.9978,14.9996 17.0969,13.9945 16.9039,13.0246C16.711,12.0547 16.2348,11.1635 15.5355,10.4643C14.8363,9.765 13.9454,9.289 12.9754,9.0961C12.0055,8.9032 11.0002,9.0021 10.0866,9.3805C9.1729,9.759 8.3921,10.3998 7.8426,11.2221C7.2932,12.0443 7,13.011 7,13.9999C7,15.326 7.5268,16.5979 8.4645,17.5356C9.4021,18.4732 10.6739,18.9999 12,18.9999ZM14.36,11.6398C14.9689,12.2692 15.3061,13.1127 15.2989,13.9884C15.2916,14.8641 14.9405,15.702 14.3213,16.3212C13.7021,16.9404 12.8643,17.2915 11.9886,17.2987C11.1129,17.306 10.2694,16.9689 9.64,16.36L14.36,11.6398Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_washer_on.xml b/packages/SystemUI/res/drawable/ic_device_washer_on.xml new file mode 100644 index 000000000000..b624fb6ebb13 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_washer_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M9.64,16.3601C10.2694,16.969 11.1129,17.3061 11.9886,17.2988C12.8643,17.2916 13.7021,16.9405 14.3213,16.3213C14.9406,15.7021 15.2916,14.8642 15.2989,13.9885C15.3061,13.1128 14.9689,12.2693 14.36,11.6399L9.64,16.3601ZM18,2.01L6,2C5.7371,1.9991 5.4766,2.0502 5.2336,2.1504C4.9905,2.2506 4.7696,2.3979 4.5837,2.5838C4.3978,2.7696 4.2505,2.9906 4.1504,3.2336C4.0502,3.4767 3.9991,3.7371 4,4V20C3.9991,20.2629 4.0502,20.5233 4.1504,20.7664C4.2505,21.0094 4.3978,21.2304 4.5837,21.4163C4.7696,21.6022 4.9905,21.7494 5.2336,21.8496C5.4766,21.9498 5.7371,22.0009 6,22H18C18.2629,22.0009 18.5234,21.9498 18.7665,21.8496C19.0095,21.7494 19.2304,21.6022 19.4163,21.4163C19.6022,21.2304 19.7495,21.0094 19.8497,20.7664C19.9498,20.5233 20.0009,20.2629 20,20V4C20.0007,3.7376 19.9493,3.4778 19.8489,3.2354C19.7485,2.993 19.6011,2.773 19.4151,2.5879C19.2291,2.4028 19.0083,2.2564 18.7654,2.1572C18.5225,2.0581 18.2624,2.008 18,2.01ZM11,5C11.1978,5 11.3911,5.0586 11.5556,5.1685C11.72,5.2783 11.8482,5.4347 11.9239,5.6174C11.9996,5.8002 12.0194,6.0011 11.9808,6.1951C11.9422,6.3891 11.847,6.5672 11.7071,6.707C11.5673,6.8469 11.3891,6.9421 11.1951,6.9807C11.0011,7.0193 10.8001,6.9995 10.6173,6.9238C10.4346,6.8481 10.2784,6.7201 10.1685,6.5557C10.0587,6.3912 10,6.1978 10,6C10,5.7348 10.1054,5.4805 10.2929,5.293C10.4804,5.1054 10.7348,5 11,5ZM8,5C8.1978,5 8.3911,5.0586 8.5556,5.1685C8.72,5.2783 8.8482,5.4347 8.9239,5.6174C8.9996,5.8002 9.0194,6.0011 8.9808,6.1951C8.9422,6.3891 8.847,6.5672 8.7071,6.707C8.5673,6.8469 8.3891,6.9421 8.1951,6.9807C8.0011,7.0193 7.8001,6.9995 7.6173,6.9238C7.4346,6.8481 7.2784,6.7201 7.1685,6.5557C7.0587,6.3912 7,6.1978 7,6C7,5.7348 7.1054,5.4805 7.2929,5.293C7.4804,5.1054 7.7348,5 8,5ZM12,19C11.0111,19 10.0444,18.7066 9.2222,18.1572C8.3999,17.6078 7.759,16.827 7.3806,15.9133C7.0022,14.9997 6.9032,13.9946 7.0961,13.0247C7.289,12.0548 7.7652,11.1636 8.4645,10.4644C9.1637,9.7651 10.0547,9.2891 11.0246,9.0962C11.9945,8.9033 12.9998,9.0022 13.9134,9.3806C14.8271,9.7591 15.608,10.3999 16.1574,11.2222C16.7068,12.0444 17,13.0111 17,14C17,15.3261 16.4732,16.598 15.5355,17.5357C14.5979,18.4733 13.3261,19 12,19Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_water_heater_off.xml b/packages/SystemUI/res/drawable/ic_device_water_heater_off.xml new file mode 100644 index 000000000000..179195821ad9 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_water_heater_off.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M16,2H8C6.9391,2 5.9217,2.4212 5.1716,3.1714C4.4214,3.9215 4,4.9391 4,6V20C4,20.5304 4.2107,21.039 4.5858,21.4141C4.9609,21.7891 5.4696,22 6,22H18C18.5304,22 19.0391,21.7891 19.4142,21.4141C19.7893,21.039 20,20.5304 20,20V6C20,4.9391 19.5786,3.9215 18.8284,3.1714C18.0783,2.4212 17.0609,2 16,2ZM18,20H6V18C7.05,18 7.18,19 9,19C10.82,19 10.952,18 12,18C13.048,18 13.189,19 15,19C16.811,19 16.953,18 18,18V20ZM18,16C16.18,16 16.046,17 15,17C13.954,17 13.81,16 12,16C10.19,16 10.047,17 9,17C7.953,17 7.821,16 6,16V6C6,5.4696 6.2107,4.961 6.5858,4.5859C6.9609,4.2109 7.4696,4 8,4H16C16.5304,4 17.0391,4.2109 17.4142,4.5859C17.7893,4.961 18,5.4696 18,6V16Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M13.553,8.0161C13.1979,7.6625 12.9486,7.2166 12.8333,6.729C12.7179,6.2413 12.741,5.7311 12.9,5.2558C12.9134,5.2214 12.9162,5.1839 12.9082,5.1479C12.9003,5.1119 12.8818,5.0792 12.8552,5.0537C12.8286,5.0281 12.795,5.0109 12.7586,5.0044C12.7223,4.9979 12.6849,5.0023 12.6511,5.0171C8.8941,6.6581 10.4031,10.6938 10.4031,10.7568C10.4028,10.8187 10.3848,10.8792 10.3511,10.9311C10.3174,10.9831 10.2695,11.0243 10.2131,11.0498C10.2031,11.0498 9.974,11.1708 9.769,10.8838C9.5395,10.5707 9.3759,10.2145 9.2879,9.8364C9.1999,9.4583 9.1894,9.0663 9.2571,8.6841C9.2647,8.6434 9.2587,8.6012 9.2398,8.5644C9.2209,8.5276 9.1902,8.4984 9.1527,8.4809C9.1152,8.4635 9.0729,8.459 9.0326,8.4682C8.9923,8.4775 8.9562,8.5001 8.93,8.5322C8.503,9.08 8.2253,9.7288 8.1241,10.416C8.023,11.1032 8.1018,11.805 8.3528,12.4526C8.6039,13.1003 9.0187,13.6719 9.5567,14.1113C10.0946,14.5507 10.7373,14.8431 11.4221,14.9599C15.6071,15.4939 17.1871,11.2899 14.7041,8.9599C14.3381,8.6159 13.909,8.3721 13.553,8.0161ZM13.3241,12.8691C13.0354,13.1235 12.6634,13.2626 12.2787,13.2607C11.8939,13.2589 11.5233,13.116 11.2371,12.8589C11.225,12.8488 11.2159,12.836 11.2107,12.8213C11.2054,12.8065 11.2042,12.7903 11.2072,12.7749C11.2101,12.7595 11.2172,12.7452 11.2275,12.7334C11.2379,12.7216 11.2512,12.7129 11.2661,12.708C11.5164,12.6335 11.7426,12.4939 11.9216,12.3037C12.1005,12.1135 12.226,11.8794 12.2851,11.625C12.3198,11.2109 12.2684,10.7941 12.1341,10.4009C12.067,10.0764 12.087,9.74 12.1921,9.4258C12.196,9.4132 12.2035,9.4023 12.2138,9.394C12.2241,9.3858 12.2366,9.3809 12.2497,9.3799C12.2628,9.3788 12.2759,9.3817 12.2874,9.3882C12.2989,9.3946 12.3081,9.4042 12.3141,9.416C12.6801,10.236 13.8361,10.6222 13.8361,11.6162C13.843,11.8492 13.801,12.081 13.7128,12.2969C13.6246,12.5127 13.4922,12.7076 13.3241,12.8691Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_water_heater_on.xml b/packages/SystemUI/res/drawable/ic_device_water_heater_on.xml new file mode 100644 index 000000000000..ee1ca91a5354 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_water_heater_on.xml @@ -0,0 +1,28 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M13.324,12.8694C13.4916,12.7083 13.6238,12.5136 13.7119,12.2986C13.8001,12.0835 13.8424,11.8527 13.836,11.6203C13.836,10.6203 12.68,10.2361 12.314,9.4201C12.3081,9.4084 12.2988,9.3988 12.2874,9.3923C12.2759,9.3859 12.2628,9.3829 12.2496,9.384C12.2365,9.3851 12.224,9.3899 12.2138,9.3982C12.2035,9.4064 12.1959,9.4178 12.192,9.4304C12.087,9.7446 12.067,10.0806 12.134,10.405C12.2683,10.7982 12.3197,11.2151 12.285,11.6291C12.2259,11.8835 12.1005,12.1181 11.9215,12.3083C11.7425,12.4985 11.5164,12.6377 11.266,12.7121C11.2511,12.717 11.2378,12.7257 11.2275,12.7375C11.2171,12.7493 11.2101,12.7636 11.2071,12.779C11.2042,12.7944 11.2054,12.8106 11.2106,12.8254C11.2159,12.8402 11.225,12.8529 11.237,12.863C11.5237,13.1195 11.8947,13.2623 12.2794,13.2634C12.6641,13.2645 13.0358,13.1242 13.324,12.8694Z" + android:fillColor="#FF000000" /> + <path + android:pathData="M16,2H8C6.9391,2 5.9217,2.4212 5.1716,3.1714C4.4214,3.9215 4,4.9391 4,6V20C4,20.5304 4.2107,21.039 4.5858,21.4141C4.9609,21.7891 5.4696,22 6,22H18C18.5304,22 19.0391,21.7891 19.4142,21.4141C19.7893,21.039 20,20.5304 20,20V6C20,4.9391 19.5786,3.9215 18.8284,3.1714C18.0783,2.4212 17.0609,2 16,2ZM8.93,8.5278C8.9561,8.4957 8.9922,8.4736 9.0325,8.4644C9.0729,8.4551 9.1151,8.4591 9.1526,8.4766C9.1902,8.494 9.2208,8.5237 9.2397,8.5605C9.2586,8.5974 9.2647,8.6395 9.257,8.6802C9.1893,9.0625 9.1998,9.4544 9.2878,9.8325C9.3758,10.2106 9.5395,10.5668 9.769,10.8799C9.969,11.1669 10.203,11.0499 10.213,11.0459C10.2694,11.0204 10.3173,10.9792 10.351,10.9272C10.3847,10.8753 10.4027,10.8148 10.403,10.7529C10.403,10.6899 8.894,6.6532 12.651,5.0132C12.6848,4.9985 12.7223,4.994 12.7586,5.0005C12.7949,5.007 12.8285,5.0238 12.8551,5.0493C12.8817,5.0749 12.9002,5.108 12.9082,5.144C12.9162,5.1801 12.9133,5.2175 12.9,5.2519C12.741,5.7272 12.7178,6.2374 12.8332,6.7251C12.9486,7.2127 13.1979,7.6586 13.553,8.0122C13.909,8.3682 14.338,8.6121 14.704,8.9541C17.187,11.2821 15.604,15.4861 11.422,14.9541C10.7376,14.8371 10.0952,14.5448 9.5576,14.1055C9.0199,13.6662 8.6053,13.0946 8.3543,12.4473C8.1033,11.7999 8.0244,11.0986 8.1252,10.4116C8.2261,9.7247 8.5034,9.0756 8.93,8.5278ZM18,20H6V16C6.7396,15.9897 7.4619,16.2246 8.054,16.668C8.3188,16.8888 8.6527,17.0098 8.9975,17.0098C9.3423,17.0098 9.6762,16.8888 9.941,16.668C10.5357,16.2281 11.2558,15.9907 11.9955,15.9907C12.7352,15.9907 13.4553,16.2281 14.05,16.668C14.3161,16.889 14.6511,17.0103 14.997,17.0103C15.3429,17.0103 15.6779,16.889 15.944,16.668C16.5368,16.2244 17.2597,15.9896 18,16V20Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_window_off.xml b/packages/SystemUI/res/drawable/ic_device_window_off.xml new file mode 100644 index 000000000000..ea4af98d2860 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_window_off.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,2H4C3.4701,2.0016 2.9623,2.2129 2.5875,2.5877C2.2128,2.9624 2.0016,3.4701 2,4V20C2.0016,20.5299 2.2128,21.0376 2.5875,21.4124C2.9623,21.7871 3.4701,21.9984 4,22H20C20.5299,21.9984 21.0377,21.7871 21.4125,21.4124C21.7872,21.0376 21.9984,20.5299 22,20V4C21.9984,3.4701 21.7872,2.9624 21.4125,2.5877C21.0377,2.2129 20.5299,2.0016 20,2ZM20,11H13V4H20V11ZM11,4V11H4V4H11ZM4,13H11V20H4V13ZM13,20V13H20V20H13Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_device_window_on.xml b/packages/SystemUI/res/drawable/ic_device_window_on.xml new file mode 100644 index 000000000000..ea4af98d2860 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_device_window_on.xml @@ -0,0 +1,25 @@ +<?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 + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M20,2H4C3.4701,2.0016 2.9623,2.2129 2.5875,2.5877C2.2128,2.9624 2.0016,3.4701 2,4V20C2.0016,20.5299 2.2128,21.0376 2.5875,21.4124C2.9623,21.7871 3.4701,21.9984 4,22H20C20.5299,21.9984 21.0377,21.7871 21.4125,21.4124C21.7872,21.0376 21.9984,20.5299 22,20V4C21.9984,3.4701 21.7872,2.9624 21.4125,2.5877C21.0377,2.2129 20.5299,2.0016 20,2ZM20,11H13V4H20V11ZM11,4V11H4V4H11ZM4,13H11V20H4V13ZM13,20V13H20V20H13Z" + android:fillColor="#FF000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_light_off_gm2_24px.xml b/packages/SystemUI/res/drawable/ic_light_off_gm2_24px.xml deleted file mode 100644 index 78c3cc54f022..000000000000 --- a/packages/SystemUI/res/drawable/ic_light_off_gm2_24px.xml +++ /dev/null @@ -1,19 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="#FF000000" - android:pathData="M9,21v-1h6v1c0,0.55 -0.45,1 -1,1h-4c-0.55,0 -1,-0.45 -1,-1z"/> - <group> - <clip-path android:pathData="M0,0h24v24H0z M 0,0"/> - </group> - <path - android:fillColor="#FF000000" - android:pathData="M12,2c-1.89,0 -3.6,0.75 -4.86,1.97l1.41,1.41C9.45,4.53 10.67,4 12,4c2.76,0 5,2.24 5,5 0,1.28 -0.5,2.5 -1.36,3.42l-0.02,0.02 1.41,1.41C18.25,12.6 19,10.89 19,9c0,-3.86 -3.14,-7 -7,-7z" - android:fillType="evenOdd"/> - <path - android:fillColor="#FF000000" - android:pathData="M2.92,2.29L1.65,3.57l3.59,3.59C5.09,7.75 5,8.36 5,9c0,2.38 1.19,4.47 3,5.74V17c0,0.55 0.45,1 1,1h6c0.3,0 0.57,-0.13 0.75,-0.34L20.09,22l1.27,-1.27L2.92,2.29zM10,16v-2.3l-0.85,-0.6C7.8,12.16 7,10.63 7,9v-0.08L14.09,16H10z"/> -</vector> diff --git a/packages/SystemUI/res/drawable/ic_lightbulb_outline_gm2_24px.xml b/packages/SystemUI/res/drawable/ic_lightbulb_outline_gm2_24px.xml deleted file mode 100644 index 87684a32e016..000000000000 --- a/packages/SystemUI/res/drawable/ic_lightbulb_outline_gm2_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="#FF000000" - android:pathData="M9,21c0,0.55 0.45,1 1,1h4c0.55,0 1,-0.45 1,-1v-1L9,20v1zM12,2C8.14,2 5,5.14 5,9c0,2.38 1.19,4.47 3,5.74L8,17c0,0.55 0.45,1 1,1h6c0.55,0 1,-0.45 1,-1v-2.26c1.81,-1.27 3,-3.36 3,-5.74 0,-3.86 -3.14,-7 -7,-7zM14.85,13.1l-0.85,0.6L14,16h-4v-2.3l-0.85,-0.6C7.8,12.16 7,10.63 7,9c0,-2.76 2.24,-5 5,-5s5,2.24 5,5c0,1.63 -0.8,3.16 -2.15,4.1z"/> -</vector> diff --git a/packages/SystemUI/res/drawable/ic_lock_gm2_24px.xml b/packages/SystemUI/res/drawable/ic_lock_gm2_24px.xml deleted file mode 100644 index f4299e6cda11..000000000000 --- a/packages/SystemUI/res/drawable/ic_lock_gm2_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="#FF000000" - android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM9,6c0,-1.66 1.34,-3 3,-3s3,1.34 3,3v2L9,8L9,6zM18,20L6,20L6,10h12v10zM12,17c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2z"/> -</vector> diff --git a/packages/SystemUI/res/drawable/ic_lock_open_gm2_24px.xml b/packages/SystemUI/res/drawable/ic_lock_open_gm2_24px.xml deleted file mode 100644 index 59fe0a914656..000000000000 --- a/packages/SystemUI/res/drawable/ic_lock_open_gm2_24px.xml +++ /dev/null @@ -1,12 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="#FF000000" - android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6h2c0,-1.66 1.34,-3 3,-3s3,1.34 3,3v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM18,20L6,20L6,10h12v10z"/> - <path - android:fillColor="#FF000000" - android:pathData="M12,15m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/> -</vector> diff --git a/packages/SystemUI/res/drawable/ic_power_gm2_24px.xml b/packages/SystemUI/res/drawable/ic_power_gm2_24px.xml deleted file mode 100644 index cd957196e4dc..000000000000 --- a/packages/SystemUI/res/drawable/ic_power_gm2_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="#FF000000" - android:pathData="M16,9v4.66l-3.5,3.51V19h-1v-1.83L8,13.65V9h8m0,-6h-2v4h-4V3H8v4h-0.01C6.9,6.99 6,7.89 6,8.98v5.52L9.5,18v3h5v-3l3.5,-3.51V9c0,-1.1 -0.9,-2 -2,-2V3z"/> -</vector> diff --git a/packages/SystemUI/res/drawable/ic_power_off_gm2_24px.xml b/packages/SystemUI/res/drawable/ic_power_off_gm2_24px.xml deleted file mode 100644 index 3eb7dd637abe..000000000000 --- a/packages/SystemUI/res/drawable/ic_power_off_gm2_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="#FF000000" - android:pathData="M21.19,21.19L2.81,2.81 1.39,4.22l4.63,4.63L6,14.5 9.5,18v3h5v-3l0.34,-0.34 4.94,4.94 1.41,-1.41zM12.5,17.17L12.5,19h-1v-1.83L8,13.65v-2.83l5.42,5.42 -0.92,0.93zM11.83,9L8,5.17L8,3h2v4h4L14,3h2v4c1.1,0 2,0.9 2,2v5.49l-0.34,0.34L16,13.17L16,9h-4.17z"/> -</vector> diff --git a/packages/SystemUI/res/drawable/ic_switches_gm2_24px.xml b/packages/SystemUI/res/drawable/ic_switches_gm2_24px.xml deleted file mode 100644 index bb535ceaed8c..000000000000 --- a/packages/SystemUI/res/drawable/ic_switches_gm2_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="#FF000000" - android:pathData="M19,9h-8.02C10.06,7.79 8.63,7 7,7c-2.76,0 -5,2.24 -5,5s2.24,5 5,5c1.63,0 3.06,-0.79 3.98,-2H19c1.66,0 3,-1.34 3,-3S20.66,9 19,9zM19,13h-7.1c0.07,-0.32 0.1,-0.66 0.1,-1s-0.04,-0.68 -0.1,-1H19c0.55,0 1,0.45 1,1S19.55,13 19,13z"/> -</vector> diff --git a/packages/SystemUI/res/drawable/ic_vacuum_gm2_24px.xml b/packages/SystemUI/res/drawable/ic_vacuum_gm2_24px.xml deleted file mode 100644 index 86b9591238f1..000000000000 --- a/packages/SystemUI/res/drawable/ic_vacuum_gm2_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="#FF000000" - android:pathData="M4,16c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3zM4,20c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1zM23,20v2h-7v-2h2.49L12.01,4.59C11.6,3.63 10.66,3 9.61,3 8.17,3 7,4.17 7,5.61L7,9h2c2.21,0 4,1.79 4,4v9L7.99,22c0.44,-0.58 0.76,-1.26 0.91,-2L11,20v-7c0,-1.1 -0.9,-2 -2,-2L4,11v3c-0.71,0 -1.39,0.15 -2,0.42L2,9h3L5,5.61C5,3.07 7.07,1 9.61,1c1.86,0 3.53,1.11 4.25,2.82L20.66,20L23,20z"/> -</vector> diff --git a/packages/SystemUI/res/drawable/ic_videocam_gm2_24px.xml b/packages/SystemUI/res/drawable/ic_videocam_gm2_24px.xml deleted file mode 100644 index 687c9c417fa6..000000000000 --- a/packages/SystemUI/res/drawable/ic_videocam_gm2_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="#FF000000" - android:pathData="M18,10.48L18,6c0,-1.1 -0.9,-2 -2,-2L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2v-4.48l4,3.98v-11l-4,3.98zM16,9.69L16,18L4,18L4,6h12v3.69z"/> -</vector> diff --git a/packages/SystemUI/res/layout-land/auth_credential_pattern_view.xml b/packages/SystemUI/res/layout-land/auth_credential_pattern_view.xml index e791c8aea97e..19a85fec1397 100644 --- a/packages/SystemUI/res/layout-land/auth_credential_pattern_view.xml +++ b/packages/SystemUI/res/layout-land/auth_credential_pattern_view.xml @@ -48,11 +48,7 @@ android:id="@+id/subtitle" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginHorizontal="24dp" - android:layout_marginTop="8dp" - android:textSize="16sp" - android:gravity="center" - android:textColor="?android:attr/textColorPrimary"/> + style="@style/TextAppearance.AuthCredential.Subtitle"/> <TextView android:id="@+id/description" @@ -69,10 +65,7 @@ android:id="@+id/error" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginHorizontal="24dp" - android:textSize="16sp" - android:gravity="center" - android:textColor="?android:attr/colorError"/> + style="@style/TextAppearance.AuthCredential.Error"/> <Space android:layout_width="0dp" diff --git a/packages/SystemUI/res/layout/auth_biometric_contents.xml b/packages/SystemUI/res/layout/auth_biometric_contents.xml index a1006a8396e0..6b61046e0f6c 100644 --- a/packages/SystemUI/res/layout/auth_biometric_contents.xml +++ b/packages/SystemUI/res/layout/auth_biometric_contents.xml @@ -18,34 +18,24 @@ <TextView android:id="@+id/title" - android:fontFamily="@*android:string/config_headlineFontFamilyMedium" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingHorizontal="24dp" - android:paddingTop="24dp" android:gravity="@integer/biometric_dialog_text_gravity" - android:textSize="20sp" - android:textColor="?android:attr/textColorPrimary"/> + style="@style/TextAppearance.AuthCredential.Title"/> <TextView android:id="@+id/subtitle" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="8dp" - android:paddingHorizontal="24dp" android:gravity="@integer/biometric_dialog_text_gravity" - android:textSize="16sp" - android:textColor="?android:attr/textColorPrimary"/> + style="@style/TextAppearance.AuthCredential.Subtitle"/> <TextView android:id="@+id/description" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingHorizontal="24dp" - android:paddingTop="8dp" android:gravity="@integer/biometric_dialog_text_gravity" - android:textSize="16sp" - android:textColor="?android:attr/textColorPrimary"/> + style="@style/TextAppearance.AuthCredential.Description"/> <ImageView android:id="@+id/biometric_icon" diff --git a/packages/SystemUI/res/layout/auth_credential_password_view.xml b/packages/SystemUI/res/layout/auth_credential_password_view.xml index b14bc7de06c4..45638ce5e744 100644 --- a/packages/SystemUI/res/layout/auth_credential_password_view.xml +++ b/packages/SystemUI/res/layout/auth_credential_password_view.xml @@ -42,11 +42,7 @@ android:id="@+id/subtitle" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginHorizontal="24dp" - android:layout_marginTop="8dp" - android:textSize="16sp" - android:gravity="center" - android:textColor="?android:attr/textColorPrimary"/> + style="@style/TextAppearance.AuthCredential.Subtitle"/> <TextView android:id="@+id/description" @@ -59,15 +55,6 @@ android:layout_height="0dp" android:layout_weight="1"/> - <TextView - android:id="@+id/error" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginHorizontal="24dp" - android:textSize="16sp" - android:gravity="center" - android:textColor="?android:attr/colorError"/> - <EditText android:id="@+id/lockPassword" android:layout_width="208dp" @@ -80,6 +67,12 @@ android:imeOptions="actionNext|flagNoFullscreen|flagForceAscii" style="@style/TextAppearance.AuthCredential.PasswordEntry"/> + <TextView + android:id="@+id/error" + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@style/TextAppearance.AuthCredential.Error"/> + <Space android:layout_width="0dp" android:layout_height="0dp" diff --git a/packages/SystemUI/res/layout/auth_credential_pattern_view.xml b/packages/SystemUI/res/layout/auth_credential_pattern_view.xml index eda5ecbf7f8c..4939ea2c99ee 100644 --- a/packages/SystemUI/res/layout/auth_credential_pattern_view.xml +++ b/packages/SystemUI/res/layout/auth_credential_pattern_view.xml @@ -42,11 +42,7 @@ android:id="@+id/subtitle" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginHorizontal="24dp" - android:layout_marginTop="8dp" - android:textSize="16sp" - android:gravity="center" - android:textColor="?android:attr/textColorPrimary"/> + style="@style/TextAppearance.AuthCredential.Subtitle"/> <TextView android:id="@+id/description" @@ -89,10 +85,7 @@ android:id="@+id/error" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginHorizontal="24dp" - android:textSize="16sp" - android:gravity="center" - android:textColor="?android:attr/colorError"/> + style="@style/TextAppearance.AuthCredential.Error"/> </LinearLayout> diff --git a/packages/SystemUI/res/layout/controls_base_item.xml b/packages/SystemUI/res/layout/controls_base_item.xml index 7708b8e9db6c..b83e500fbaeb 100644 --- a/packages/SystemUI/res/layout/controls_base_item.xml +++ b/packages/SystemUI/res/layout/controls_base_item.xml @@ -30,8 +30,8 @@ <ImageView android:id="@+id/icon" - android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_width="@dimen/control_icon_size" + android:layout_height="@dimen/control_icon_size" android:paddingTop="@dimen/control_padding_adjustment" android:clickable="false" android:focusable="false" @@ -50,6 +50,7 @@ app:layout_constraintBottom_toBottomOf="@+id/icon" app:layout_constraintStart_toEndOf="@+id/icon" /> + <TextView android:id="@+id/status_extra" android:layout_width="wrap_content" @@ -64,7 +65,7 @@ <TextView android:id="@+id/title" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.Control.Title" android:paddingLeft="@dimen/control_padding_adjustment" @@ -73,12 +74,20 @@ android:focusable="false" android:maxLines="1" android:ellipsize="end" - app:layout_constraintBottom_toTopOf="@+id/subtitle" - app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toTopOf="@id/barrier"/> + + <androidx.constraintlayout.widget.Barrier + android:id="@+id/barrier" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:barrierDirection="top" + app:constraint_referenced_ids="subtitle,favorite" /> <TextView android:id="@+id/subtitle" - android:layout_width="wrap_content" + android:layout_width="0dp" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.Control.Subtitle" android:paddingLeft="@dimen/control_padding_adjustment" @@ -88,24 +97,22 @@ android:focusable="false" android:maxLines="1" android:ellipsize="end" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@id/favorite" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent"/> + /> - <FrameLayout - android:id="@+id/favorite_container" + <CheckBox + android:id="@+id/favorite" android:visibility="gone" - android:layout_width="48dp" - android:layout_height="48dp" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom|end" + android:button="@drawable/controls_btn_star" + android:layout_marginTop="4dp" + android:layout_marginStart="4dp" + app:layout_constraintStart_toEndOf="@id/subtitle" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toBottomOf="parent"> - - <CheckBox - android:id="@+id/favorite" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="bottom|end" - android:button="@drawable/controls_btn_star"/> - </FrameLayout> - + app:layout_constraintBottom_toBottomOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout> diff --git a/packages/SystemUI/res/layout/controls_with_favorites.xml b/packages/SystemUI/res/layout/controls_with_favorites.xml index 1d6c75138ed0..91beeb88d87f 100644 --- a/packages/SystemUI/res/layout/controls_with_favorites.xml +++ b/packages/SystemUI/res/layout/controls_with_favorites.xml @@ -14,26 +14,29 @@ ~ limitations under the License. --> <merge - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto"> + xmlns:android="http://schemas.android.com/apk/res/android"> - <androidx.constraintlayout.widget.ConstraintLayout + <LinearLayout android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="@dimen/controls_top_margin"> + android:layout_height="match_parent" + android:orientation="horizontal" + android:layout_marginTop="@dimen/controls_top_margin" + android:layout_marginEnd="@dimen/controls_header_side_margin" + android:layout_marginStart="@dimen/controls_header_side_margin"> + + <!-- make sure the header stays centered in the layout by adding a spacer --> + <Space + android:layout_width="@dimen/controls_header_menu_size" + android:layout_height="1dp" /> <LinearLayout android:id="@+id/controls_header" android:orientation="horizontal" - android:layout_width="match_parent" + android:layout_width="0dp" + android:layout_weight="1" android:layout_height="wrap_content" - android:layout_marginStart="@dimen/controls_header_side_margin" - android:layout_marginEnd="@dimen/controls_header_side_margin" - android:gravity="center" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" > + android:layout_gravity="center" + android:gravity="center"> <ImageView android:id="@+id/app_icon" @@ -54,16 +57,14 @@ <ImageView android:id="@+id/controls_more" android:src="@drawable/ic_more_vert" - android:layout_width="48dp" - android:layout_height="48dp" + android:layout_width="@dimen/controls_header_menu_size" + android:layout_height="@dimen/controls_header_menu_size" android:padding="12dp" - android:layout_marginEnd="@dimen/controls_list_side_margin" android:tint="@color/control_more_vert" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - </androidx.constraintlayout.widget.ConstraintLayout> + android:layout_gravity="center" + android:contentDescription="@string/accessibility_menu" + android:background="?android:attr/selectableItemBackgroundBorderless" /> + </LinearLayout> <LinearLayout android:id="@+id/global_actions_controls_list" diff --git a/packages/SystemUI/res/layout/people_strip.xml b/packages/SystemUI/res/layout/people_strip.xml index f5ed1032df6c..7dcc46c3ca09 100644 --- a/packages/SystemUI/res/layout/people_strip.xml +++ b/packages/SystemUI/res/layout/people_strip.xml @@ -57,6 +57,7 @@ android:padding="8dp" android:scaleType="fitCenter" android:forceHasOverlappingRendering="false" + android:visibility="gone" /> <ImageView @@ -65,6 +66,7 @@ android:padding="8dp" android:scaleType="fitCenter" android:forceHasOverlappingRendering="false" + android:visibility="gone" /> <ImageView @@ -73,6 +75,7 @@ android:padding="8dp" android:scaleType="fitCenter" android:forceHasOverlappingRendering="false" + android:visibility="gone" /> <ImageView @@ -81,6 +84,7 @@ android:padding="8dp" android:scaleType="fitCenter" android:forceHasOverlappingRendering="false" + android:visibility="gone" /> <ImageView @@ -89,6 +93,7 @@ android:padding="8dp" android:scaleType="fitCenter" android:forceHasOverlappingRendering="false" + android:visibility="gone" /> </LinearLayout> diff --git a/packages/SystemUI/res/values-television/dimens.xml b/packages/SystemUI/res/values-television/dimens.xml new file mode 100644 index 000000000000..6da0c693f389 --- /dev/null +++ b/packages/SystemUI/res/values-television/dimens.xml @@ -0,0 +1,20 @@ +<?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 + --> +<resources> + <!-- Opacity at which the background for the shutdown UI will be drawn. --> + <item name="shutdown_scrim_behind_alpha" format="float" type="dimen">1.0</item> +</resources>
\ No newline at end of file diff --git a/packages/SystemUI/res/values-television/styles.xml b/packages/SystemUI/res/values-television/styles.xml index b59f0072b8c3..b01c5d88e3b3 100644 --- a/packages/SystemUI/res/values-television/styles.xml +++ b/packages/SystemUI/res/values-television/styles.xml @@ -17,4 +17,9 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Theme.SystemUI.Dialog" parent="@android:style/Theme.DeviceDefault.Dialog" /> <style name="Theme.SystemUI.Dialog.Alert" parent="@*android:style/Theme.DeviceDefault.Dialog.Alert" /> + + <style name="Animation.ShutdownUi"> + <item name="android:windowEnterAnimation">@null</item> + <item name="android:windowExitAnimation">@null</item> + </style> </resources> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 432cd749abbd..23be78bd6a77 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -1219,12 +1219,14 @@ <dimen name="magnifier_up_down_controls_height">40dp</dimen> <!-- Home Controls --> - <dimen name="controls_header_side_margin">32dp</dimen> + <dimen name="controls_header_side_margin">4dp</dimen> + <dimen name="controls_header_menu_size">48dp</dimen> <dimen name="controls_header_app_icon_size">40dp</dimen> <dimen name="controls_list_side_margin">16dp</dimen> <dimen name="controls_top_margin">44dp</dimen> <dimen name="control_header_text_size">22sp</dimen> <dimen name="control_text_size">14sp</dimen> + <dimen name="control_icon_size">24dp</dimen> <dimen name="control_spacing">4dp</dimen> <dimen name="control_list_divider">1dp</dimen> <dimen name="control_corner_radius">12dp</dimen> @@ -1265,4 +1267,7 @@ <dimen name="screenrecord_status_icon_radius">5dp</dimen> <dimen name="kg_user_switcher_text_size">16sp</dimen> + + <!-- Opacity at which the background for the shutdown UI will be drawn. --> + <item name="shutdown_scrim_behind_alpha" format="float" type="dimen">0.95</item> </resources> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index c8c35c704297..d17b81d46090 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -374,9 +374,31 @@ <string name="biometric_dialog_wrong_password">Wrong password</string> <!-- Error string shown when the user enters too many incorrect attempts [CHAR LIMIT=120]--> <string name="biometric_dialog_credential_too_many_attempts">Too many incorrect attempts.\nTry again in <xliff:g id="number">%d</xliff:g> seconds.</string> + <!-- Error string shown when the user enters an incorrect PIN/pattern/password and it counts towards the max attempts before the data on the device is wiped. [CHAR LIMIT=NONE]--> <string name="biometric_dialog_credential_attempts_before_wipe">Try again. Attempt <xliff:g id="attempts" example="1">%1$d</xliff:g> of <xliff:g id="max_attempts" example="3">%2$d</xliff:g>.</string> + <!-- Title of a dialog shown when the user only has one attempt left to provide the correct PIN/pattern/password before the device, one of its users, or a work profile is wiped. [CHAR LIMIT=NONE] --> + <string name="biometric_dialog_last_attempt_before_wipe_dialog_title">Your data will be deleted</string> + <!-- Content of a dialog shown when the user only has one attempt left to provide the correct lock pattern before the device is wiped. [CHAR LIMIT=NONE] --> + <string name="biometric_dialog_last_pattern_attempt_before_wipe_device">If you enter an incorrect pattern on the next attempt, this device\u2019s data will be deleted.</string> + <!-- Content of a dialog shown when the user only has one attempt left to provide the correct PIN before the device is wiped. [CHAR LIMIT=NONE] --> + <string name="biometric_dialog_last_pin_attempt_before_wipe_device">If you enter an incorrect PIN on the next attempt, this device\u2019s data will be deleted.</string> + <!-- Content of a dialog shown when the user only has one attempt left to provide the correct password before the device is wiped. [CHAR LIMIT=NONE] --> + <string name="biometric_dialog_last_password_attempt_before_wipe_device">If you enter an incorrect password on the next attempt, this device\u2019s data will be deleted.</string> + <!-- Content of a dialog shown when the user only has one attempt left to provide the correct lock pattern before the user is removed. [CHAR LIMIT=NONE] --> + <string name="biometric_dialog_last_pattern_attempt_before_wipe_user">If you enter an incorrect pattern on the next attempt, this user will be deleted.</string> + <!-- Content of a dialog shown when the user only has one attempt left to provide the correct PIN before the user is removed. [CHAR LIMIT=NONE] --> + <string name="biometric_dialog_last_pin_attempt_before_wipe_user">If you enter an incorrect PIN on the next attempt, this user will be deleted.</string> + <!-- Content of a dialog shown when the user only has one attempt left to provide the correct password before the user is removed. [CHAR LIMIT=NONE] --> + <string name="biometric_dialog_last_password_attempt_before_wipe_user">If you enter an incorrect password on the next attempt, this user will be deleted.</string> + <!-- Content of a dialog shown when the user only has one attempt left to provide the correct pattern before the work profile is removed. [CHAR LIMIT=NONE] --> + <string name="biometric_dialog_last_pattern_attempt_before_wipe_profile">If you enter an incorrect pattern on the next attempt, your work profile and its data will be deleted.</string> + <!-- Content of a dialog shown when the user only has one attempt left to provide the correct PIN before the work profile is removed. [CHAR LIMIT=NONE] --> + <string name="biometric_dialog_last_pin_attempt_before_wipe_profile">If you enter an incorrect PIN on the next attempt, your work profile and its data will be deleted.</string> + <!-- Content of a dialog shown when the user only has one attempt left to provide the correct password before the work profile is removed. [CHAR LIMIT=NONE] --> + <string name="biometric_dialog_last_password_attempt_before_wipe_profile">If you enter an incorrect password on the next attempt, your work profile and its data will be deleted.</string> + <!-- Content of a dialog shown when the user has failed to provide the device lock too many times and the device is wiped. [CHAR LIMIT=NONE] --> <string name="biometric_dialog_failed_attempts_now_wiping_device">Too many incorrect attempts. This device\u2019s data will be deleted.</string> <!-- Content of a dialog shown when the user has failed to provide the user lock too many times and the user is removed. [CHAR LIMIT=NONE] --> @@ -1129,15 +1151,6 @@ <!-- Name for a freshly added user [CHAR LIMIT=30] --> <string name="user_new_user_name">New user</string> - <!-- Name for the guest user [CHAR LIMIT=35] --> - <string name="guest_nickname">Guest</string> - - <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] --> - <string name="guest_new_guest">Add guest</string> - - <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] --> - <string name="guest_exit_guest">Remove guest</string> - <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] --> <string name="guest_exit_guest_dialog_title">Remove guest?</string> @@ -2665,9 +2678,9 @@ <!-- Controls management controls screen header for Other zone [CHAR LIMIT=60] --> <string name="controls_favorite_other_zone_header">Other</string> - <!-- Controls dialog title [CHAR LIMIT=30] --> + <!-- Controls dialog title [CHAR LIMIT=40] --> <string name="controls_dialog_title">Add to quick controls</string> - <!-- Controls dialog add to favorites [CHAR LIMIT=30] --> + <!-- Controls dialog add to favorites [CHAR LIMIT=40] --> <string name="controls_dialog_ok">Add to favorites</string> <!-- Controls dialog message [CHAR LIMIT=NONE] --> <string name="controls_dialog_message"><xliff:g id="app" example="System UI">%s</xliff:g> suggested this control to add to your favorites.</string> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index 1233d4dc73e7..1598465d6df0 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -250,28 +250,39 @@ <style name="TextAppearance.AuthCredential"> <item name="android:gravity">center_horizontal</item> - <item name="android:fontFamily">google-sans</item> <item name="android:textAlignment">gravity</item> <item name="android:layout_gravity">top</item> <item name="android:textColor">?android:attr/textColorPrimary</item> </style> <style name="TextAppearance.AuthCredential.Title"> - <item name="android:layout_marginBottom">2dp</item> - <item name="android:layout_marginLeft">24dp</item> - <item name="android:layout_marginRight">24dp</item> - <item name="android:layout_marginTop">16dp</item> + <item name="android:fontFamily">google-sans</item> + <item name="android:paddingTop">16dp</item> + <item name="android:paddingHorizontal">24dp</item> <item name="android:textSize">24sp</item> </style> - <style name="TextAppearance.AuthCredential.Description"> - <item name="android:layout_marginBottom">12dp</item> - <item name="android:layout_marginStart">40dp</item> - <item name="android:layout_marginEnd">40dp</item> - <item name="android:layout_marginTop">3dp</item> + <style name="TextAppearance.AuthCredential.Subtitle"> + <item name="android:fontFamily">google-sans</item> + <item name="android:paddingTop">8dp</item> + <item name="android:paddingHorizontal">24dp</item> <item name="android:textSize">16sp</item> </style> + <style name="TextAppearance.AuthCredential.Description"> + <item name="android:fontFamily">google-sans</item> + <item name="android:paddingTop">8dp</item> + <item name="android:paddingHorizontal">24dp</item> + <item name="android:textSize">14sp</item> + </style> + + <style name="TextAppearance.AuthCredential.Error"> + <item name="android:paddingTop">12dp</item> + <item name="android:paddingHorizontal">24dp</item> + <item name="android:textSize">14sp</item> + <item name="android:textColor">?android:attr/colorError</item> + </style> + <style name="TextAppearance.AuthCredential.PasswordEntry" parent="@android:style/TextAppearance.DeviceDefault"> <item name="android:gravity">center</item> <item name="android:singleLine">true</item> @@ -305,6 +316,9 @@ <item name="android:windowExitAnimation">@null</item> </style> + <style name="Animation.ShutdownUi" parent="@android:style/Animation.Toast"> + </style> + <!-- Standard animations for hiding and showing the status bar. --> <style name="Animation.StatusBar"> </style> diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java index 49e3e5724988..3bda3c8df699 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java @@ -20,9 +20,7 @@ import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED; import static android.app.ActivityManager.LOCK_TASK_MODE_NONE; import static android.app.ActivityManager.LOCK_TASK_MODE_PINNED; import static android.app.ActivityManager.RECENT_IGNORE_UNAVAILABLE; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; -import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; @@ -38,7 +36,6 @@ import android.app.ActivityTaskManager; import android.app.AppGlobals; import android.app.IAssistDataReceiver; import android.app.WindowConfiguration; -import android.app.WindowConfiguration.ActivityType; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; @@ -113,15 +110,18 @@ public class ActivityManagerWrapper { * @return the top running task (can be {@code null}). */ public ActivityManager.RunningTaskInfo getRunningTask() { - return getRunningTask(ACTIVITY_TYPE_RECENTS /* ignoreActivityType */); + return getRunningTask(false /* filterVisibleRecents */); } - public ActivityManager.RunningTaskInfo getRunningTask(@ActivityType int ignoreActivityType) { + /** + * @return the top running task filtering only for tasks that can be visible in the recent tasks + * list (can be {@code null}). + */ + public ActivityManager.RunningTaskInfo getRunningTask(boolean filterOnlyVisibleRecents) { // Note: The set of running tasks from the system is ordered by recency try { List<ActivityManager.RunningTaskInfo> tasks = - ActivityTaskManager.getService().getFilteredTasks(1, ignoreActivityType, - WINDOWING_MODE_PINNED /* ignoreWindowingMode */); + ActivityTaskManager.getService().getFilteredTasks(1, filterOnlyVisibleRecents); if (tasks.isEmpty()) { return null; } diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/PinnedStackListenerForwarder.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/PinnedStackListenerForwarder.java index 360244c9af52..34a0268201f4 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/PinnedStackListenerForwarder.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/PinnedStackListenerForwarder.java @@ -74,16 +74,9 @@ public class PinnedStackListenerForwarder extends IPinnedStackListener.Stub { } @Override - public void onSaveReentryBounds(ComponentName componentName, Rect bounds) { + public void onActivityHidden(ComponentName componentName) { for (PinnedStackListener listener : mListeners) { - listener.onSaveReentryBounds(componentName, bounds); - } - } - - @Override - public void onResetReentryBounds(ComponentName componentName) { - for (PinnedStackListener listener : mListeners) { - listener.onResetReentryBounds(componentName); + listener.onActivityHidden(componentName); } } @@ -121,9 +114,7 @@ public class PinnedStackListenerForwarder extends IPinnedStackListener.Stub { public void onActionsChanged(ParceledListSlice actions) {} - public void onSaveReentryBounds(ComponentName componentName, Rect bounds) {} - - public void onResetReentryBounds(ComponentName componentName) {} + public void onActivityHidden(ComponentName componentName) {} public void onDisplayInfoChanged(DisplayInfo displayInfo) {} diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java index 11bf24d27170..e3d9a267a149 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java @@ -126,12 +126,14 @@ public class KeyguardDisplayManager { final int displayId = display.getDisplayId(); Presentation presentation = mPresentations.get(displayId); if (presentation == null) { - presentation = new KeyguardPresentation(mContext, display, mInjectableInflater); - presentation.setOnDismissListener(dialog -> { - if (null != mPresentations.get(displayId)) { + final Presentation newPresentation = + new KeyguardPresentation(mContext, display, mInjectableInflater); + newPresentation.setOnDismissListener(dialog -> { + if (newPresentation.equals(mPresentations.get(displayId))) { mPresentations.remove(displayId); } }); + presentation = newPresentation; try { presentation.show(); } catch (WindowManager.InvalidDisplayException ex) { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 3afe19f926ec..7cbc840afed4 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -127,6 +127,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private static final boolean DEBUG = KeyguardConstants.DEBUG; private static final boolean DEBUG_SIM_STATES = KeyguardConstants.DEBUG_SIM_STATES; private static final boolean DEBUG_FACE = true; + private static final boolean DEBUG_SPEW = false; private static final int LOW_BATTERY_THRESHOLD = 20; private static final String ACTION_FACE_UNLOCK_STARTED @@ -324,7 +325,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab } }; - private class BiometricAuthenticated { + @VisibleForTesting + static class BiometricAuthenticated { private final boolean mAuthenticated; private final boolean mIsStrongBiometric; @@ -338,11 +340,14 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private SparseBooleanArray mUserHasTrust = new SparseBooleanArray(); private SparseBooleanArray mUserTrustIsManaged = new SparseBooleanArray(); private SparseBooleanArray mUserTrustIsUsuallyManaged = new SparseBooleanArray(); - private SparseArray<BiometricAuthenticated> mUserFingerprintAuthenticated = new SparseArray<>(); - private SparseArray<BiometricAuthenticated> mUserFaceAuthenticated = new SparseArray<>(); private SparseBooleanArray mUserFaceUnlockRunning = new SparseBooleanArray(); private Map<Integer, Intent> mSecondaryLockscreenRequirement = new HashMap<Integer, Intent>(); + @VisibleForTesting + SparseArray<BiometricAuthenticated> mUserFingerprintAuthenticated = new SparseArray<>(); + @VisibleForTesting + SparseArray<BiometricAuthenticated> mUserFaceAuthenticated = new SparseArray<>(); + private static int sCurrentUser; private Runnable mUpdateBiometricListeningState = this::updateBiometricListeningState; @@ -1850,11 +1855,33 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab // Only listen if this KeyguardUpdateMonitor belongs to the primary user. There is an // instance of KeyguardUpdateMonitor for each user but KeyguardUpdateMonitor is user-aware. - return (mBouncer || mAuthInterruptActive || awakeKeyguard || shouldListenForFaceAssistant()) + final boolean shouldListen = + (mBouncer || mAuthInterruptActive || awakeKeyguard + || shouldListenForFaceAssistant()) && !mSwitchingUser && !isFaceDisabled(user) && becauseCannotSkipBouncer && !mKeyguardGoingAway && mFaceSettingEnabledForUser.get(user) && !mLockIconPressed && strongAuthAllowsScanning && mIsPrimaryUser && !mSecureCameraLaunched; + + // Too chatty, but very useful when debugging issues. + if (DEBUG_SPEW) { + Log.v(TAG, "shouldListenForFace(" + user + ")=" + shouldListen + "... " + + ", mBouncer: " + mBouncer + + ", mAuthInterruptActive: " + mAuthInterruptActive + + ", awakeKeyguard: " + awakeKeyguard + + ", shouldListenForFaceAssistant: " + shouldListenForFaceAssistant() + + ", mSwitchingUser: " + mSwitchingUser + + ", isFaceDisabled(" + user + "): " + isFaceDisabled(user) + + ", becauseCannotSkipBouncer: " + becauseCannotSkipBouncer + + ", mKeyguardGoingAway: " + mKeyguardGoingAway + + ", mFaceSettingEnabledForUser(" + user + "): " + + mFaceSettingEnabledForUser.get(user) + + ", mLockIconPressed: " + mLockIconPressed + + ", strongAuthAllowsScanning: " + strongAuthAllowsScanning + + ", isPrimaryUser: " + mIsPrimaryUser + + ", mSecureCameraLaunched: " + mSecureCameraLaunched); + } + return shouldListen; } /** @@ -2049,8 +2076,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab /** * Handle {@link #MSG_USER_SWITCHING} */ - private void handleUserSwitching(int userId, IRemoteCallback reply) { + @VisibleForTesting + void handleUserSwitching(int userId, IRemoteCallback reply) { Assert.isMainThread(); + clearBiometricRecognized(); mUserTrustIsUsuallyManaged.put(userId, mTrustManager.isTrustUsuallyManaged(userId)); for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java index 281b566b6ffb..8df3dd2ad845 100644 --- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java +++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java @@ -409,6 +409,7 @@ public class ScreenDecorations extends SystemUI implements Tunable { // update rounded corner view rotation updateRoundedCornerView(pos, R.id.left); updateRoundedCornerView(pos, R.id.right); + updateRoundedCornerSize(mRoundedDefault, mRoundedDefaultTop, mRoundedDefaultBottom); // update cutout view rotation if (mCutoutViews != null && mCutoutViews[pos] != null) { @@ -717,26 +718,46 @@ public class ScreenDecorations extends SystemUI implements Tunable { } catch (Exception e) { } } + updateRoundedCornerSize(size, sizeTop, sizeBottom); + } + }); + } - if (sizeTop == 0) { - sizeTop = size; - } - if (sizeBottom == 0) { - sizeBottom = size; - } + private void updateRoundedCornerSize(int sizeDefault, int sizeTop, int sizeBottom) { + if (mOverlays == null) { + return; + } + if (sizeTop == 0) { + sizeTop = sizeDefault; + } + if (sizeBottom == 0) { + sizeBottom = sizeDefault; + } - for (int i = 0; i < BOUNDS_POSITION_LENGTH; i++) { - if (mOverlays[i] == null) { - continue; - } + for (int i = 0; i < BOUNDS_POSITION_LENGTH; i++) { + if (mOverlays[i] == null) { + continue; + } + if (i == BOUNDS_POSITION_LEFT || i == BOUNDS_POSITION_RIGHT) { + if (mRotation == ROTATION_270) { + setSize(mOverlays[i].findViewById(R.id.left), sizeBottom); + setSize(mOverlays[i].findViewById(R.id.right), sizeTop); + } else { setSize(mOverlays[i].findViewById(R.id.left), sizeTop); setSize(mOverlays[i].findViewById(R.id.right), sizeBottom); } + } else if (i == BOUNDS_POSITION_TOP) { + setSize(mOverlays[i].findViewById(R.id.left), sizeTop); + setSize(mOverlays[i].findViewById(R.id.right), sizeTop); + } else if (i == BOUNDS_POSITION_BOTTOM) { + setSize(mOverlays[i].findViewById(R.id.left), sizeBottom); + setSize(mOverlays[i].findViewById(R.id.right), sizeBottom); } - }); + } } - private void setSize(View view, int pixelSize) { + @VisibleForTesting + protected void setSize(View view, int pixelSize) { LayoutParams params = view.getLayoutParams(); params.width = pixelSize; params.height = pixelSize; diff --git a/packages/SystemUI/src/com/android/systemui/backup/BackupHelper.kt b/packages/SystemUI/src/com/android/systemui/backup/BackupHelper.kt new file mode 100644 index 000000000000..fe31a7b75c06 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/backup/BackupHelper.kt @@ -0,0 +1,125 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.backup + +import android.app.backup.BackupAgentHelper +import android.app.backup.BackupDataInputStream +import android.app.backup.BackupDataOutput +import android.app.backup.FileBackupHelper +import android.app.job.JobScheduler +import android.content.Context +import android.content.Intent +import android.os.Environment +import android.os.ParcelFileDescriptor +import android.os.UserHandle +import android.util.Log +import com.android.systemui.controls.controller.AuxiliaryPersistenceWrapper +import com.android.systemui.controls.controller.ControlsFavoritePersistenceWrapper + +/** + * Helper for backing up elements in SystemUI + * + * This helper is invoked by BackupManager whenever a backup or restore is required in SystemUI. + * The helper can be used to back up any element that is stored in [Context.getFilesDir]. + * + * After restoring is done, a [ACTION_RESTORE_FINISHED] intent will be send to SystemUI user 0, + * indicating that restoring is finished for a given user. + */ +class BackupHelper : BackupAgentHelper() { + + companion object { + private const val TAG = "BackupHelper" + internal const val CONTROLS = ControlsFavoritePersistenceWrapper.FILE_NAME + private const val NO_OVERWRITE_FILES_BACKUP_KEY = "systemui.files_no_overwrite" + val controlsDataLock = Any() + const val ACTION_RESTORE_FINISHED = "com.android.systemui.backup.RESTORE_FINISHED" + private const val PERMISSION_SELF = "com.android.systemui.permission.SELF" + } + + override fun onCreate() { + super.onCreate() + // The map in mapOf is guaranteed to be order preserving + val controlsMap = mapOf(CONTROLS to getPPControlsFile(this)) + NoOverwriteFileBackupHelper(controlsDataLock, this, controlsMap).also { + addHelper(NO_OVERWRITE_FILES_BACKUP_KEY, it) + } + } + + override fun onRestoreFinished() { + super.onRestoreFinished() + val intent = Intent(ACTION_RESTORE_FINISHED).apply { + `package` = packageName + putExtra(Intent.EXTRA_USER_ID, userId) + flags = Intent.FLAG_RECEIVER_REGISTERED_ONLY + } + sendBroadcastAsUser(intent, UserHandle.SYSTEM, PERMISSION_SELF) + } + + /** + * Helper class for restoring files ONLY if they are not present. + * + * A [Map] between filenames and actions (functions) is passed to indicate post processing + * actions to be taken after each file is restored. + * + * @property lock a lock to hold while backing up and restoring the files. + * @property context the context of the [BackupAgent] + * @property fileNamesAndPostProcess a map from the filenames to back up and the post processing + * actions to take + */ + private class NoOverwriteFileBackupHelper( + val lock: Any, + val context: Context, + val fileNamesAndPostProcess: Map<String, () -> Unit> + ) : FileBackupHelper(context, *fileNamesAndPostProcess.keys.toTypedArray()) { + + override fun restoreEntity(data: BackupDataInputStream) { + val file = Environment.buildPath(context.filesDir, data.key) + if (file.exists()) { + Log.w(TAG, "File " + data.key + " already exists. Skipping restore.") + return + } + synchronized(lock) { + super.restoreEntity(data) + fileNamesAndPostProcess.get(data.key)?.invoke() + } + } + + override fun performBackup( + oldState: ParcelFileDescriptor?, + data: BackupDataOutput?, + newState: ParcelFileDescriptor? + ) { + synchronized(lock) { + super.performBackup(oldState, data, newState) + } + } + } +} +private fun getPPControlsFile(context: Context): () -> Unit { + return { + val filesDir = context.filesDir + val file = Environment.buildPath(filesDir, BackupHelper.CONTROLS) + if (file.exists()) { + val dest = Environment.buildPath(filesDir, + AuxiliaryPersistenceWrapper.AUXILIARY_FILE_NAME) + file.copyTo(dest) + val jobScheduler = context.getSystemService(JobScheduler::class.java) + jobScheduler?.schedule( + AuxiliaryPersistenceWrapper.DeletionJobService.getJobForContext(context)) + } + } +}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java index 0018d33bdacb..b736b4df8abf 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java @@ -22,6 +22,7 @@ import android.annotation.Nullable; import android.content.Context; import android.graphics.PixelFormat; import android.hardware.biometrics.BiometricAuthenticator; +import android.hardware.biometrics.BiometricConstants; import android.os.Binder; import android.os.Bundle; import android.os.Handler; @@ -207,6 +208,7 @@ public class AuthContainerView extends LinearLayout animateAway(AuthDialogCallback.DISMISSED_BIOMETRIC_AUTHENTICATED); break; case AuthBiometricView.Callback.ACTION_USER_CANCELED: + sendEarlyUserCanceled(); animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED); break; case AuthBiometricView.Callback.ACTION_BUTTON_NEGATIVE: @@ -286,11 +288,13 @@ public class AuthContainerView extends LinearLayout addView(mFrameLayout); + // TODO: De-dupe the logic with AuthCredentialPasswordView setOnKeyListener((v, keyCode, event) -> { if (keyCode != KeyEvent.KEYCODE_BACK) { return false; } if (event.getAction() == KeyEvent.ACTION_UP) { + sendEarlyUserCanceled(); animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED); } return true; @@ -300,6 +304,11 @@ public class AuthContainerView extends LinearLayout requestFocus(); } + void sendEarlyUserCanceled() { + mConfig.mCallback.onSystemEvent( + BiometricConstants.BIOMETRIC_SYSTEM_EVENT_EARLY_USER_CANCEL); + } + @Override public boolean isAllowDeviceCredentials() { return Utils.isDeviceCredentialAllowed(mConfig.mBiometricPromptBundle); diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java index c30477c77bbb..0c6794c2ab85 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java @@ -165,6 +165,19 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks, } @Override + public void onSystemEvent(int event) { + if (mReceiver == null) { + Log.e(TAG, "onSystemEvent(" + event + "): Receiver is null"); + return; + } + try { + mReceiver.onSystemEvent(event); + } catch (RemoteException e) { + Log.e(TAG, "RemoteException when sending system event", e); + } + } + + @Override public void onDismissed(@DismissedReason int reason, @Nullable byte[] credentialAttestation) { switch (reason) { case AuthDialogCallback.DISMISSED_USER_CANCELED: diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPasswordView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPasswordView.java index b986f6c9e680..d8a11d36a335 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPasswordView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPasswordView.java @@ -51,11 +51,13 @@ public class AuthCredentialPasswordView extends AuthCredentialView super.onFinishInflate(); mPasswordField = findViewById(R.id.lockPassword); mPasswordField.setOnEditorActionListener(this); + // TODO: De-dupe the logic with AuthContainerView mPasswordField.setOnKeyListener((v, keyCode, event) -> { if (keyCode != KeyEvent.KEYCODE_BACK) { return false; } if (event.getAction() == KeyEvent.ACTION_UP) { + mContainerView.sendEarlyUserCanceled(); mContainerView.animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED); } return true; diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java index 13f3c0fce5c2..b006bc1351a3 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java @@ -347,21 +347,35 @@ public abstract class AuthCredentialView extends LinearLayout { showError(message); } - // Only show popup dialog before wipe. + // Only show dialog if <=1 attempts are left before wiping. final int remainingAttempts = maxAttempts - numAttempts; - if (remainingAttempts <= 0) { - showNowWipingMessage(); - mContainerView.animateAway(AuthDialogCallback.DISMISSED_ERROR); + if (remainingAttempts == 1) { + showLastAttemptBeforeWipeDialog(); + } else if (remainingAttempts <= 0) { + showNowWipingDialog(); } return true; } - private void showNowWipingMessage() { + private void showLastAttemptBeforeWipeDialog() { + final AlertDialog alertDialog = new AlertDialog.Builder(mContext) + .setTitle(R.string.biometric_dialog_last_attempt_before_wipe_dialog_title) + .setMessage( + getLastAttemptBeforeWipeMessageRes(getUserTypeForWipe(), mCredentialType)) + .setPositiveButton(android.R.string.ok, null) + .create(); + alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_STATUS_BAR_SUB_PANEL); + alertDialog.show(); + } + + private void showNowWipingDialog() { final AlertDialog alertDialog = new AlertDialog.Builder(mContext) .setMessage(getNowWipingMessageRes(getUserTypeForWipe())) .setPositiveButton(R.string.biometric_dialog_now_wiping_dialog_dismiss, null) + .setOnDismissListener( + dialog -> mContainerView.animateAway(AuthDialogCallback.DISMISSED_ERROR)) .create(); - alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); + alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_STATUS_BAR_SUB_PANEL); alertDialog.show(); } @@ -377,6 +391,59 @@ public abstract class AuthCredentialView extends LinearLayout { } } + private static @StringRes int getLastAttemptBeforeWipeMessageRes( + @UserType int userType, @Utils.CredentialType int credentialType) { + switch (userType) { + case USER_TYPE_PRIMARY: + return getLastAttemptBeforeWipeDeviceMessageRes(credentialType); + case USER_TYPE_MANAGED_PROFILE: + return getLastAttemptBeforeWipeProfileMessageRes(credentialType); + case USER_TYPE_SECONDARY: + return getLastAttemptBeforeWipeUserMessageRes(credentialType); + default: + throw new IllegalArgumentException("Unrecognized user type:" + userType); + } + } + + private static @StringRes int getLastAttemptBeforeWipeDeviceMessageRes( + @Utils.CredentialType int credentialType) { + switch (credentialType) { + case Utils.CREDENTIAL_PIN: + return R.string.biometric_dialog_last_pin_attempt_before_wipe_device; + case Utils.CREDENTIAL_PATTERN: + return R.string.biometric_dialog_last_pattern_attempt_before_wipe_device; + case Utils.CREDENTIAL_PASSWORD: + default: + return R.string.biometric_dialog_last_password_attempt_before_wipe_device; + } + } + + private static @StringRes int getLastAttemptBeforeWipeProfileMessageRes( + @Utils.CredentialType int credentialType) { + switch (credentialType) { + case Utils.CREDENTIAL_PIN: + return R.string.biometric_dialog_last_pin_attempt_before_wipe_profile; + case Utils.CREDENTIAL_PATTERN: + return R.string.biometric_dialog_last_pattern_attempt_before_wipe_profile; + case Utils.CREDENTIAL_PASSWORD: + default: + return R.string.biometric_dialog_last_password_attempt_before_wipe_profile; + } + } + + private static @StringRes int getLastAttemptBeforeWipeUserMessageRes( + @Utils.CredentialType int credentialType) { + switch (credentialType) { + case Utils.CREDENTIAL_PIN: + return R.string.biometric_dialog_last_pin_attempt_before_wipe_user; + case Utils.CREDENTIAL_PATTERN: + return R.string.biometric_dialog_last_pattern_attempt_before_wipe_user; + case Utils.CREDENTIAL_PASSWORD: + default: + return R.string.biometric_dialog_last_password_attempt_before_wipe_user; + } + } + private static @StringRes int getNowWipingMessageRes(@UserType int userType) { switch (userType) { case USER_TYPE_PRIMARY: diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogCallback.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogCallback.java index a47621d12122..d3bd4fbd921c 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogCallback.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogCallback.java @@ -58,4 +58,11 @@ public interface AuthDialogCallback { * Invoked when the "use password" button is clicked */ void onDeviceCredentialPressed(); + + /** + * See {@link android.hardware.biometrics.BiometricPrompt.Builder + * #setReceiveSystemEvents(boolean)} + * @param event + */ + void onSystemEvent(int event); } diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BadgedImageView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BadgedImageView.java index a1cb7f61ad04..55be77ca3be5 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BadgedImageView.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BadgedImageView.java @@ -28,6 +28,8 @@ import com.android.launcher3.icons.DotRenderer; import com.android.systemui.Interpolators; import com.android.systemui.R; +import java.util.EnumSet; + /** * View that displays an adaptive icon with an app-badge and a dot. * @@ -42,12 +44,27 @@ public class BadgedImageView extends ImageView { /** Same as value in Launcher3 IconShape */ public static final int DEFAULT_PATH_SIZE = 100; - static final int DOT_STATE_DEFAULT = 0; - static final int DOT_STATE_SUPPRESSED_FOR_FLYOUT = 1; - static final int DOT_STATE_ANIMATING = 2; + /** + * Flags that suppress the visibility of the 'new' dot, for one reason or another. If any of + * these flags are set, the dot will not be shown even if {@link Bubble#showDot()} returns true. + */ + enum SuppressionFlag { + // Suppressed because the flyout is visible - it will morph into the dot via animation. + FLYOUT_VISIBLE, + // Suppressed because this bubble is behind others in the collapsed stack. + BEHIND_STACK, + } + + /** + * Start by suppressing the dot because the flyout is visible - most bubbles are added with a + * flyout, so this is a reasonable default. + */ + private final EnumSet<SuppressionFlag> mDotSuppressionFlags = + EnumSet.of(SuppressionFlag.FLYOUT_VISIBLE); - // Flyout gets shown before the dot - private int mCurrentDotState = DOT_STATE_SUPPRESSED_FOR_FLYOUT; + private float mDotScale = 0f; + private float mAnimatingToDotScale = 0f; + private boolean mDotIsAnimating = false; private BubbleViewProvider mBubble; @@ -57,8 +74,6 @@ public class BadgedImageView extends ImageView { private boolean mOnLeft; private int mDotColor; - private float mDotScale = 0f; - private boolean mDotDrawn; private Rect mTempBounds = new Rect(); @@ -83,28 +98,28 @@ public class BadgedImageView extends ImageView { Path iconPath = PathParser.createPathFromPathData( getResources().getString(com.android.internal.R.string.config_icon_mask)); mDotRenderer = new DotRenderer(mBubbleBitmapSize, iconPath, DEFAULT_PATH_SIZE); + + setFocusable(true); } /** * Updates the view with provided info. */ - public void update(BubbleViewProvider bubble) { + public void setRenderedBubble(BubbleViewProvider bubble) { mBubble = bubble; setImageBitmap(bubble.getBadgedImage()); - setDotState(DOT_STATE_SUPPRESSED_FOR_FLYOUT); mDotColor = bubble.getDotColor(); drawDot(bubble.getDotPath()); - animateDot(); } @Override public void onDraw(Canvas canvas) { super.onDraw(canvas); - if (isDotHidden()) { - mDotDrawn = false; + + if (!shouldDrawDot()) { return; } - mDotDrawn = mDotScale > 0.1f; + getDrawingRect(mTempBounds); mDrawParams.color = mDotColor; @@ -115,23 +130,33 @@ public class BadgedImageView extends ImageView { mDotRenderer.draw(canvas, mDrawParams); } - /** - * Sets the dot state, does not animate changes. - */ - void setDotState(int state) { - mCurrentDotState = state; - if (state == DOT_STATE_SUPPRESSED_FOR_FLYOUT || state == DOT_STATE_DEFAULT) { - mDotScale = mBubble.showDot() ? 1f : 0f; - invalidate(); + /** Adds a dot suppression flag, updating dot visibility if needed. */ + void addDotSuppressionFlag(SuppressionFlag flag) { + if (mDotSuppressionFlags.add(flag)) { + // Update dot visibility, and animate out if we're now behind the stack. + updateDotVisibility(flag == SuppressionFlag.BEHIND_STACK /* animate */); } } - /** - * Whether the dot should be hidden based on current dot state. - */ - private boolean isDotHidden() { - return (mCurrentDotState == DOT_STATE_DEFAULT && !mBubble.showDot()) - || mCurrentDotState == DOT_STATE_SUPPRESSED_FOR_FLYOUT; + /** Removes a dot suppression flag, updating dot visibility if needed. */ + void removeDotSuppressionFlag(SuppressionFlag flag) { + if (mDotSuppressionFlags.remove(flag)) { + // Update dot visibility, animating if we're no longer behind the stack. + updateDotVisibility(flag == SuppressionFlag.BEHIND_STACK); + } + } + + /** Updates the visibility of the dot, animating if requested. */ + void updateDotVisibility(boolean animate) { + final float targetScale = shouldDrawDot() ? 1f : 0f; + + if (animate) { + animateDotScale(targetScale, null /* after */); + } else { + mDotScale = targetScale; + mAnimatingToDotScale = targetScale; + invalidate(); + } } /** @@ -194,11 +219,11 @@ public class BadgedImageView extends ImageView { } /** Sets the position of the 'new' dot, animating it out and back in if requested. */ - void setDotPosition(boolean onLeft, boolean animate) { - if (animate && onLeft != getDotOnLeft() && !isDotHidden()) { - animateDot(false /* showDot */, () -> { + void setDotPositionOnLeft(boolean onLeft, boolean animate) { + if (animate && onLeft != getDotOnLeft() && shouldDrawDot()) { + animateDotScale(0f /* showDot */, () -> { setDotOnLeft(onLeft); - animateDot(true /* showDot */, null); + animateDotScale(1.0f, null /* after */); }); } else { setDotOnLeft(onLeft); @@ -209,28 +234,34 @@ public class BadgedImageView extends ImageView { return getDotOnLeft(); } - /** Changes the dot's visibility to match the bubble view's state. */ - void animateDot() { - if (mCurrentDotState == DOT_STATE_DEFAULT) { - animateDot(mBubble.showDot(), null); - } + /** Whether to draw the dot in onDraw(). */ + private boolean shouldDrawDot() { + // Always render the dot if it's animating, since it could be animating out. Otherwise, show + // it if the bubble wants to show it, and we aren't suppressing it. + return mDotIsAnimating || (mBubble.showDot() && mDotSuppressionFlags.isEmpty()); } /** - * Animates the dot to show or hide. + * Animates the dot to the given scale, running the optional callback when the animation ends. */ - private void animateDot(boolean showDot, Runnable after) { - if (mDotDrawn == showDot) { - // State is consistent, do nothing. + private void animateDotScale(float toScale, @Nullable Runnable after) { + mDotIsAnimating = true; + + // Don't restart the animation if we're already animating to the given value. + if (mAnimatingToDotScale == toScale || !shouldDrawDot()) { + mDotIsAnimating = false; return; } - setDotState(DOT_STATE_ANIMATING); + mAnimatingToDotScale = toScale; + + final boolean showDot = toScale > 0f; // Do NOT wait until after animation ends to setShowDot // to avoid overriding more recent showDot states. clearAnimation(); - animate().setDuration(200) + animate() + .setDuration(200) .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) .setUpdateListener((valueAnimator) -> { float fraction = valueAnimator.getAnimatedFraction(); @@ -238,7 +269,7 @@ public class BadgedImageView extends ImageView { setDotScale(fraction); }).withEndAction(() -> { setDotScale(showDot ? 1f : 0f); - setDotState(DOT_STATE_DEFAULT); + mDotIsAnimating = false; if (after != null) { after.run(); } diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java index 726a7dd111d7..71f2bc09b983 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java @@ -76,7 +76,6 @@ class Bubble implements BubbleViewProvider { private BadgedImageView mIconView; private BubbleExpandedView mExpandedView; - private boolean mInflated; private BubbleViewInfoTask mInflationTask; private boolean mInflateSynchronously; @@ -166,10 +165,16 @@ class Bubble implements BubbleViewProvider { return mExpandedView; } - void cleanupExpandedState() { + /** + * Call when the views should be removed, ensure this is called to clean up ActivityView + * content. + */ + void cleanupViews() { if (mExpandedView != null) { mExpandedView.cleanUpExpandedState(); + mExpandedView = null; } + mIconView = null; } /** @@ -213,17 +218,15 @@ class Bubble implements BubbleViewProvider { } boolean isInflated() { - return mInflated; + return mIconView != null && mExpandedView != null; } void stopInflation() { if (mInflationTask == null) { return; } - mInflationTask.cancel(/* mayInterruptIfRunning */ true); - mIconView = null; - mExpandedView = null; - mInflated = false; + mInflationTask.cancel(true /* mayInterruptIfRunning */); + cleanupViews(); } void setViewInfo(BubbleViewInfoTask.BubbleViewInfo info) { @@ -240,21 +243,14 @@ class Bubble implements BubbleViewProvider { mDotColor = info.dotColor; mDotPath = info.dotPath; - if (mExpandedView != null && mIconView != null) { - mInflated = true; - } if (mExpandedView != null) { mExpandedView.update(/* bubble */ this); } if (mIconView != null) { - mIconView.update(/* bubble */ this); + mIconView.setRenderedBubble(/* bubble */ this); } } - void setInflated(boolean inflated) { - mInflated = inflated; - } - /** * Set visibility of bubble in the expanded state. * @@ -306,7 +302,7 @@ class Bubble implements BubbleViewProvider { void markAsAccessedAt(long lastAccessedMillis) { mLastAccessed = lastAccessedMillis; setSuppressNotification(true); - setShowDot(false /* show */, true /* animate */); + setShowDot(false /* show */); } /** @@ -346,12 +342,11 @@ class Bubble implements BubbleViewProvider { /** * Sets whether the bubble for this notification should show a dot indicating updated content. */ - void setShowDot(boolean showDot, boolean animate) { + void setShowDot(boolean showDot) { mShowBubbleUpdateDot = showDot; - if (animate && mIconView != null) { - mIconView.animateDot(); - } else if (mIconView != null) { - mIconView.invalidate(); + + if (mIconView != null) { + mIconView.updateDotVisibility(true /* animate */); } } diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java index 01c2faa62403..9d885fd3c207 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java @@ -331,14 +331,14 @@ public class BubbleController implements ConfigurationController.ConfigurationLi @Override public void onZenChanged(int zen) { for (Bubble b : mBubbleData.getBubbles()) { - b.setShowDot(b.showInShade(), true /* animate */); + b.setShowDot(b.showInShade()); } } @Override public void onConfigChanged(ZenModeConfig config) { for (Bubble b : mBubbleData.getBubbles()) { - b.setShowDot(b.showInShade(), true /* animate */); + b.setShowDot(b.showInShade()); } } }); @@ -1101,7 +1101,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi } else if (interceptBubbleDismissal) { Bubble bubble = mBubbleData.getBubbleWithKey(entry.getKey()); bubble.setSuppressNotification(true); - bubble.setShowDot(false /* show */, true /* animate */); + bubble.setShowDot(false /* show */); } else { return false; } @@ -1141,7 +1141,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi Bubble bubbleChild = mBubbleData.getBubbleWithKey(child.getKey()); mNotificationGroupManager.onEntryRemoved(bubbleChild.getEntry()); bubbleChild.setSuppressNotification(true); - bubbleChild.setShowDot(false /* show */, true /* animate */); + bubbleChild.setShowDot(false /* show */); } else { // non-bubbled children can be removed for (NotifCallback cb : mCallbacks) { diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java index 8bc35f4058e9..1c69594469c1 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java @@ -208,7 +208,7 @@ public class BubbleData { b -> { notificationEntryUpdated(bubble, /* suppressFlyout */ false, /* showInShade */ true); - setSelectedBubbleInternal(bubble); + setSelectedBubble(bubble); }, mContext, stack, factory); dispatchPendingChanges(); @@ -288,7 +288,7 @@ public class BubbleData { boolean isBubbleExpandedAndSelected = mExpanded && mSelectedBubble == bubble; boolean suppress = isBubbleExpandedAndSelected || !showInShade || !bubble.showInShade(); bubble.setSuppressNotification(suppress); - bubble.setShowDot(!isBubbleExpandedAndSelected /* show */, true /* animate */); + bubble.setShowDot(!isBubbleExpandedAndSelected /* show */); dispatchPendingChanges(); } @@ -761,6 +761,17 @@ public class BubbleData { } @VisibleForTesting(visibility = PRIVATE) + Bubble getOverflowBubbleWithKey(String key) { + for (int i = 0; i < mOverflowBubbles.size(); i++) { + Bubble bubble = mOverflowBubbles.get(i); + if (bubble.getKey().equals(key)) { + return bubble; + } + } + return null; + } + + @VisibleForTesting(visibility = PRIVATE) void setTimeSource(TimeSource timeSource) { mTimeSource = timeSource; } diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflow.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflow.java index 4fb2d0881ede..13669a68defa 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflow.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflow.java @@ -112,7 +112,7 @@ public class BubbleOverflow implements BubbleViewProvider { mPath.transform(matrix); mOverflowBtn.setVisibility(GONE); - mOverflowBtn.update(this); + mOverflowBtn.setRenderedBubble(this); } ImageView getBtn() { diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java index b65198595095..2231d11b7bc2 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java @@ -183,7 +183,7 @@ class BubbleOverflowAdapter extends RecyclerView.Adapter<BubbleOverflowAdapter.V public void onBindViewHolder(ViewHolder vh, int index) { Bubble b = mBubbles.get(index); - vh.iconView.update(b); + vh.iconView.setRenderedBubble(b); vh.iconView.setOnClickListener(view -> { mBubbles.remove(b); notifyDataSetChanged(); diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java index 7191a203ea8c..6fd6b8d9f738 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java @@ -22,8 +22,6 @@ import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static com.android.systemui.Interpolators.FAST_OUT_SLOW_IN; import static com.android.systemui.Prefs.Key.HAS_SEEN_BUBBLES_EDUCATION; import static com.android.systemui.Prefs.Key.HAS_SEEN_BUBBLES_MANAGE_EDUCATION; -import static com.android.systemui.bubbles.BadgedImageView.DOT_STATE_DEFAULT; -import static com.android.systemui.bubbles.BadgedImageView.DOT_STATE_SUPPRESSED_FOR_FLYOUT; import static com.android.systemui.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_STACK_VIEW; import static com.android.systemui.bubbles.BubbleDebugConfig.DEBUG_USER_EDUCATION; import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_BUBBLES; @@ -226,7 +224,7 @@ public class BubbleStackView extends FrameLayout { private boolean mIsExpanded; /** Whether the stack is currently on the left side of the screen, or animating there. */ - private boolean mStackOnLeftOrWillBe = false; + private boolean mStackOnLeftOrWillBe = true; /** Whether a touch gesture, such as a stack/bubble drag or flyout drag, is in progress. */ private boolean mIsGestureInProgress = false; @@ -936,9 +934,13 @@ public class BubbleStackView extends FrameLayout { mStackOnLeftOrWillBe = mStackAnimationController.isStackOnLeftSide(); } + if (bubble.getIconView() == null) { + return; + } + // Set the dot position to the opposite of the side the stack is resting on, since the stack // resting slightly off-screen would result in the dot also being off-screen. - bubble.getIconView().setDotPosition( + bubble.getIconView().setDotPositionOnLeft( !mStackOnLeftOrWillBe /* onLeft */, false /* animate */); mBubbleContainer.addView(bubble.getIconView(), 0, @@ -961,8 +963,7 @@ public class BubbleStackView extends FrameLayout { if (v instanceof BadgedImageView && ((BadgedImageView) v).getKey().equals(bubble.getKey())) { mBubbleContainer.removeViewAt(i); - bubble.cleanupExpandedState(); - bubble.setInflated(false); + bubble.cleanupViews(); logBubbleEvent(bubble, SysUiStatsLog.BUBBLE_UICHANGED__ACTION__DISMISSED); return; } @@ -1698,7 +1699,7 @@ public class BubbleStackView extends FrameLayout { || mBubbleToExpandAfterFlyoutCollapse != null || bubbleView == null) { if (bubbleView != null) { - bubbleView.setDotState(DOT_STATE_DEFAULT); + bubbleView.removeDotSuppressionFlag(BadgedImageView.SuppressionFlag.FLYOUT_VISIBLE); } // Skip the message if none exists, we're expanded or animating expansion, or we're // about to expand a bubble from the previous tapped flyout, or if bubble view is null. @@ -1717,12 +1718,16 @@ public class BubbleStackView extends FrameLayout { mBubbleData.setExpanded(true); mBubbleToExpandAfterFlyoutCollapse = null; } - bubbleView.setDotState(DOT_STATE_DEFAULT); + + // Stop suppressing the dot now that the flyout has morphed into the dot. + bubbleView.removeDotSuppressionFlag( + BadgedImageView.SuppressionFlag.FLYOUT_VISIBLE); }; mFlyout.setVisibility(INVISIBLE); - // Don't show the dot when we're animating the flyout - bubbleView.setDotState(DOT_STATE_SUPPRESSED_FOR_FLYOUT); + // Suppress the dot when we are animating the flyout. + bubbleView.addDotSuppressionFlag( + BadgedImageView.SuppressionFlag.FLYOUT_VISIBLE); // Start flyout expansion. Post in case layout isn't complete and getWidth returns 0. post(() -> { @@ -1743,6 +1748,11 @@ public class BubbleStackView extends FrameLayout { }; mFlyout.postDelayed(mAnimateInFlyout, 200); }; + + if (bubble.getIconView() == null) { + return; + } + mFlyout.setupFlyoutStartingAsDot(flyoutMessage, mStackAnimationController.getStackPosition(), getWidth(), mStackAnimationController.isStackOnLeftSide(), @@ -1877,9 +1887,19 @@ public class BubbleStackView extends FrameLayout { for (int i = 0; i < bubbleCount; i++) { BadgedImageView bv = (BadgedImageView) mBubbleContainer.getChildAt(i); bv.setZ((mMaxBubbles * mBubbleElevation) - i); + // If the dot is on the left, and so is the stack, we need to change the dot position. if (bv.getDotPositionOnLeft() == mStackOnLeftOrWillBe) { - bv.setDotPosition(!mStackOnLeftOrWillBe, animate); + bv.setDotPositionOnLeft(!mStackOnLeftOrWillBe, animate); + } + + if (!mIsExpanded && i > 0) { + // If we're collapsed and this bubble is behind other bubbles, suppress its dot. + bv.addDotSuppressionFlag( + BadgedImageView.SuppressionFlag.BEHIND_STACK); + } else { + bv.removeDotSuppressionFlag( + BadgedImageView.SuppressionFlag.BEHIND_STACK); } } } diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java b/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java index 7ee162e03dbc..00de8b4a51b8 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java @@ -287,7 +287,7 @@ public class StackAnimationController extends /** Whether the stack is on the left side of the screen. */ public boolean isStackOnLeftSide() { if (mLayout == null || !isStackPositionSet()) { - return false; + return true; // Default to left, which is where it starts by default. } float stackCenter = mStackPosition.x + mBubbleBitmapSize / 2; diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/AuxiliaryPersistenceWrapper.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/AuxiliaryPersistenceWrapper.kt new file mode 100644 index 000000000000..0a6335e01f9f --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/controls/controller/AuxiliaryPersistenceWrapper.kt @@ -0,0 +1,140 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.controls.controller + +import android.app.job.JobInfo +import android.app.job.JobParameters +import android.app.job.JobService +import android.content.ComponentName +import android.content.Context +import com.android.internal.annotations.VisibleForTesting +import com.android.systemui.backup.BackupHelper +import java.io.File +import java.util.concurrent.Executor +import java.util.concurrent.TimeUnit + +/** + * Class to track the auxiliary persistence of controls. + * + * This file is a copy of the `controls_favorites.xml` file restored from a back up. It is used to + * keep track of controls that were restored but its corresponding app has not been installed yet. + */ +class AuxiliaryPersistenceWrapper @VisibleForTesting internal constructor( + wrapper: ControlsFavoritePersistenceWrapper +) { + + constructor( + file: File, + executor: Executor + ): this(ControlsFavoritePersistenceWrapper(file, executor)) + + companion object { + const val AUXILIARY_FILE_NAME = "aux_controls_favorites.xml" + } + + private var persistenceWrapper: ControlsFavoritePersistenceWrapper = wrapper + + /** + * Access the current list of favorites as tracked by the auxiliary file + */ + var favorites: List<StructureInfo> = emptyList() + private set + + init { + initialize() + } + + /** + * Change the file that this class is tracking. + * + * This will reset [favorites]. + */ + fun changeFile(file: File) { + persistenceWrapper.changeFileAndBackupManager(file, null) + initialize() + } + + /** + * Initialize the list of favorites to the content of the auxiliary file. If the file does not + * exist, it will be initialized to an empty list. + */ + fun initialize() { + favorites = if (persistenceWrapper.fileExists) { + persistenceWrapper.readFavorites() + } else { + emptyList() + } + } + + /** + * Gets the list of favorite controls as persisted in the auxiliary file for a given component. + * + * When the favorites for that application are returned, they will be removed from the + * auxiliary file immediately, so they won't be retrieved again. + * @param componentName the name of the service that provided the controls + * @return a list of structures with favorites + */ + fun getCachedFavoritesAndRemoveFor(componentName: ComponentName): List<StructureInfo> { + if (!persistenceWrapper.fileExists) { + return emptyList() + } + val (comp, noComp) = favorites.partition { it.componentName == componentName } + return comp.also { + favorites = noComp + if (favorites.isNotEmpty()) { + persistenceWrapper.storeFavorites(noComp) + } else { + persistenceWrapper.deleteFile() + } + } + } + + /** + * [JobService] to delete the auxiliary file after a week. + */ + class DeletionJobService : JobService() { + companion object { + @VisibleForTesting + internal val DELETE_FILE_JOB_ID = 1000 + private val WEEK_IN_MILLIS = TimeUnit.DAYS.toMillis(7) + fun getJobForContext(context: Context): JobInfo { + val jobId = DELETE_FILE_JOB_ID + context.userId + val componentName = ComponentName(context, DeletionJobService::class.java) + return JobInfo.Builder(jobId, componentName) + .setMinimumLatency(WEEK_IN_MILLIS) + .setPersisted(true) + .build() + } + } + + @VisibleForTesting + fun attachContext(context: Context) { + attachBaseContext(context) + } + + override fun onStartJob(params: JobParameters): Boolean { + synchronized(BackupHelper.controlsDataLock) { + baseContext.deleteFile(AUXILIARY_FILE_NAME) + } + return false + } + + override fun onStopJob(params: JobParameters?): Boolean { + return true // reschedule and try again if the job was stopped without completing + } + } +}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt index 6c49c82acdc0..34833396acef 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt @@ -18,6 +18,7 @@ package com.android.systemui.controls.controller import android.app.ActivityManager import android.app.PendingIntent +import android.app.backup.BackupManager import android.content.BroadcastReceiver import android.content.ComponentName import android.content.ContentResolver @@ -35,6 +36,7 @@ import android.util.ArrayMap import android.util.Log import com.android.internal.annotations.VisibleForTesting import com.android.systemui.Dumpable +import com.android.systemui.backup.BackupHelper import com.android.systemui.broadcast.BroadcastDispatcher import com.android.systemui.controls.ControlStatus import com.android.systemui.controls.ControlsServiceInfo @@ -65,10 +67,11 @@ class ControlsControllerImpl @Inject constructor ( companion object { private const val TAG = "ControlsControllerImpl" - internal const val CONTROLS_AVAILABLE = "systemui.controls_available" + internal const val CONTROLS_AVAILABLE = Settings.Secure.CONTROLS_ENABLED internal val URI = Settings.Secure.getUriFor(CONTROLS_AVAILABLE) private const val USER_CHANGE_RETRY_DELAY = 500L // ms private const val DEFAULT_ENABLED = 1 + private const val PERMISSION_SELF = "com.android.systemui.permission.SELF" } private var userChanging: Boolean = true @@ -88,23 +91,35 @@ class ControlsControllerImpl @Inject constructor ( contentResolver, CONTROLS_AVAILABLE, DEFAULT_ENABLED, currentUserId) != 0 private set + private var file = Environment.buildPath( + context.filesDir, + ControlsFavoritePersistenceWrapper.FILE_NAME + ) + private var auxiliaryFile = Environment.buildPath( + context.filesDir, + AuxiliaryPersistenceWrapper.AUXILIARY_FILE_NAME + ) private val persistenceWrapper = optionalWrapper.orElseGet { ControlsFavoritePersistenceWrapper( - Environment.buildPath( - context.filesDir, - ControlsFavoritePersistenceWrapper.FILE_NAME - ), - executor + file, + executor, + BackupManager(context) ) } + @VisibleForTesting + internal var auxiliaryPersistenceWrapper = AuxiliaryPersistenceWrapper(auxiliaryFile, executor) + private fun setValuesForUser(newUser: UserHandle) { Log.d(TAG, "Changing to user: $newUser") currentUser = newUser val userContext = context.createContextAsUser(currentUser, 0) - val fileName = Environment.buildPath( + file = Environment.buildPath( userContext.filesDir, ControlsFavoritePersistenceWrapper.FILE_NAME) - persistenceWrapper.changeFile(fileName) + auxiliaryFile = Environment.buildPath( + userContext.filesDir, AuxiliaryPersistenceWrapper.AUXILIARY_FILE_NAME) + persistenceWrapper.changeFileAndBackupManager(file, BackupManager(userContext)) + auxiliaryPersistenceWrapper.changeFile(auxiliaryFile) available = Settings.Secure.getIntForUser(contentResolver, CONTROLS_AVAILABLE, DEFAULT_ENABLED, newUser.identifier) != 0 resetFavorites(available) @@ -130,6 +145,21 @@ class ControlsControllerImpl @Inject constructor ( } @VisibleForTesting + internal val restoreFinishedReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val user = intent.getIntExtra(Intent.EXTRA_USER_ID, UserHandle.USER_NULL) + if (user == currentUserId) { + executor.execute { + auxiliaryPersistenceWrapper.initialize() + listingController.removeCallback(listingCallback) + persistenceWrapper.storeFavorites(auxiliaryPersistenceWrapper.favorites) + resetFavorites(available) + } + } + } + } + + @VisibleForTesting internal val settingObserver = object : ContentObserver(null) { override fun onChange( selfChange: Boolean, @@ -170,7 +200,25 @@ class ControlsControllerImpl @Inject constructor ( bindingController.onComponentRemoved(it) } - // Check if something has been removed, if so, store the new list + if (auxiliaryPersistenceWrapper.favorites.isNotEmpty()) { + serviceInfoSet.subtract(favoriteComponentSet).forEach { + val toAdd = auxiliaryPersistenceWrapper.getCachedFavoritesAndRemoveFor(it) + if (toAdd.isNotEmpty()) { + changed = true + toAdd.forEach { + Favorites.replaceControls(it) + } + } + } + // Need to clear the ones that were restored immediately. This will delete + // them from the auxiliary file if they were not deleted. Should only do any + // work the first time after a restore. + serviceInfoSet.intersect(favoriteComponentSet).forEach { + auxiliaryPersistenceWrapper.getCachedFavoritesAndRemoveFor(it) + } + } + + // Check if something has been added or removed, if so, store the new list if (changed) { persistenceWrapper.storeFavorites(Favorites.getAllStructures()) } @@ -188,9 +236,22 @@ class ControlsControllerImpl @Inject constructor ( executor, UserHandle.ALL ) + context.registerReceiver( + restoreFinishedReceiver, + IntentFilter(BackupHelper.ACTION_RESTORE_FINISHED), + PERMISSION_SELF, + null + ) contentResolver.registerContentObserver(URI, false, settingObserver, UserHandle.USER_ALL) } + fun destroy() { + broadcastDispatcher.unregisterReceiver(userSwitchReceiver) + context.unregisterReceiver(restoreFinishedReceiver) + contentResolver.unregisterContentObserver(settingObserver) + listingController.removeCallback(listingCallback) + } + private fun resetFavorites(shouldLoad: Boolean) { Favorites.clear() @@ -252,10 +313,17 @@ class ControlsControllerImpl @Inject constructor ( it.controlId in favoritesForComponentKeys ) } + val removedControls = mutableListOf<ControlStatus>() + Favorites.getStructuresForComponent(componentName).forEach { st -> + st.controls.forEach { + if (it.controlId in removed) { + val r = createRemovedStatus(componentName, it, st.structure) + removedControls.add(r) + } + } + } val loadData = createLoadDataObject( - Favorites.getControlsForComponent(componentName) - .filter { it.controlId in removed } - .map { createRemovedStatus(componentName, it) } + + removedControls + controlsWithFavorite, favoritesForComponentKeys ) @@ -266,17 +334,15 @@ class ControlsControllerImpl @Inject constructor ( override fun error(message: String) { loadCanceller = null executor.execute { - val loadData = Favorites.getControlsForComponent(componentName) - .let { controls -> - val keys = controls.map { it.controlId } - createLoadDataObject( - controls.map { - createRemovedStatus(componentName, it, false) - }, - keys, - true - ) - } + val controls = Favorites.getStructuresForComponent(componentName) + .flatMap { st -> + st.controls.map { + createRemovedStatus(componentName, it, st.structure, + false) + } + } + val keys = controls.map { it.control.controlId } + val loadData = createLoadDataObject(controls, keys, true) dataCallback.accept(loadData) } } @@ -372,6 +438,7 @@ class ControlsControllerImpl @Inject constructor ( private fun createRemovedStatus( componentName: ComponentName, controlInfo: ControlInfo, + structure: CharSequence, setRemoved: Boolean = true ): ControlStatus { val intent = Intent(Intent.ACTION_MAIN).apply { @@ -384,6 +451,8 @@ class ControlsControllerImpl @Inject constructor ( 0) val control = Control.StatelessBuilder(controlInfo.controlId, pendingIntent) .setTitle(controlInfo.controlTitle) + .setSubtitle(controlInfo.controlSubtitle) + .setStructure(structure) .setDeviceType(controlInfo.deviceType) .build() return ControlStatus(control, componentName, true, setRemoved) @@ -431,13 +500,14 @@ class ControlsControllerImpl @Inject constructor ( Log.d(TAG, "Controls not available") return } - executor.execute { - val changed = Favorites.updateControls( - componentName, - listOf(control) - ) - if (changed) { - persistenceWrapper.storeFavorites(Favorites.getAllStructures()) + + // Assume that non STATUS_OK responses may contain incomplete or invalid information about + // the control, and do not attempt to update it + if (control.getStatus() == Control.STATUS_OK) { + executor.execute { + if (Favorites.updateControls(componentName, listOf(control))) { + persistenceWrapper.storeFavorites(Favorites.getAllStructures()) + } } } uiController.onRefreshState(componentName, listOf(control)) diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapper.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapper.kt index afd82e7fcf78..cde258a056db 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapper.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapper.kt @@ -16,10 +16,12 @@ package com.android.systemui.controls.controller +import android.app.backup.BackupManager import android.content.ComponentName import android.util.AtomicFile import android.util.Log import android.util.Xml +import com.android.systemui.backup.BackupHelper import libcore.io.IoUtils import org.xmlpull.v1.XmlPullParser import org.xmlpull.v1.XmlPullParserException @@ -38,7 +40,8 @@ import java.util.concurrent.Executor */ class ControlsFavoritePersistenceWrapper( private var file: File, - private val executor: Executor + private val executor: Executor, + private var backupManager: BackupManager? = null ) { companion object { @@ -60,12 +63,21 @@ class ControlsFavoritePersistenceWrapper( } /** - * Change the file location for storing/reading the favorites + * Change the file location for storing/reading the favorites and the [BackupManager] * * @param fileName new location + * @param newBackupManager new [BackupManager]. Pass null to not trigger backups. */ - fun changeFile(fileName: File) { + fun changeFileAndBackupManager(fileName: File, newBackupManager: BackupManager?) { file = fileName + backupManager = newBackupManager + } + + val fileExists: Boolean + get() = file.exists() + + fun deleteFile() { + file.delete() } /** @@ -77,49 +89,54 @@ class ControlsFavoritePersistenceWrapper( executor.execute { Log.d(TAG, "Saving data to file: $file") val atomicFile = AtomicFile(file) - val writer = try { - atomicFile.startWrite() - } catch (e: IOException) { - Log.e(TAG, "Failed to start write file", e) - return@execute - } - try { - Xml.newSerializer().apply { - setOutput(writer, "utf-8") - setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true) - startDocument(null, true) - startTag(null, TAG_VERSION) - text("$VERSION") - endTag(null, TAG_VERSION) + val dataWritten = synchronized(BackupHelper.controlsDataLock) { + val writer = try { + atomicFile.startWrite() + } catch (e: IOException) { + Log.e(TAG, "Failed to start write file", e) + return@execute + } + try { + Xml.newSerializer().apply { + setOutput(writer, "utf-8") + setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true) + startDocument(null, true) + startTag(null, TAG_VERSION) + text("$VERSION") + endTag(null, TAG_VERSION) - startTag(null, TAG_STRUCTURES) - structures.forEach { s -> - startTag(null, TAG_STRUCTURE) - attribute(null, TAG_COMPONENT, s.componentName.flattenToString()) - attribute(null, TAG_STRUCTURE, s.structure.toString()) + startTag(null, TAG_STRUCTURES) + structures.forEach { s -> + startTag(null, TAG_STRUCTURE) + attribute(null, TAG_COMPONENT, s.componentName.flattenToString()) + attribute(null, TAG_STRUCTURE, s.structure.toString()) - startTag(null, TAG_CONTROLS) - s.controls.forEach { c -> - startTag(null, TAG_CONTROL) - attribute(null, TAG_ID, c.controlId) - attribute(null, TAG_TITLE, c.controlTitle.toString()) - attribute(null, TAG_SUBTITLE, c.controlSubtitle.toString()) - attribute(null, TAG_TYPE, c.deviceType.toString()) - endTag(null, TAG_CONTROL) + startTag(null, TAG_CONTROLS) + s.controls.forEach { c -> + startTag(null, TAG_CONTROL) + attribute(null, TAG_ID, c.controlId) + attribute(null, TAG_TITLE, c.controlTitle.toString()) + attribute(null, TAG_SUBTITLE, c.controlSubtitle.toString()) + attribute(null, TAG_TYPE, c.deviceType.toString()) + endTag(null, TAG_CONTROL) + } + endTag(null, TAG_CONTROLS) + endTag(null, TAG_STRUCTURE) } - endTag(null, TAG_CONTROLS) - endTag(null, TAG_STRUCTURE) + endTag(null, TAG_STRUCTURES) + endDocument() + atomicFile.finishWrite(writer) } - endTag(null, TAG_STRUCTURES) - endDocument() - atomicFile.finishWrite(writer) + true + } catch (t: Throwable) { + Log.e(TAG, "Failed to write file, reverting to previous version") + atomicFile.failWrite(writer) + false + } finally { + IoUtils.closeQuietly(writer) } - } catch (t: Throwable) { - Log.e(TAG, "Failed to write file, reverting to previous version") - atomicFile.failWrite(writer) - } finally { - IoUtils.closeQuietly(writer) } + if (dataWritten) backupManager?.dataChanged() } } @@ -142,9 +159,11 @@ class ControlsFavoritePersistenceWrapper( } try { Log.d(TAG, "Reading data from file: $file") - val parser = Xml.newPullParser() - parser.setInput(reader, null) - return parseXml(parser) + synchronized(BackupHelper.controlsDataLock) { + val parser = Xml.newPullParser() + parser.setInput(reader, null) + return parseXml(parser) + } } catch (e: XmlPullParserException) { throw IllegalStateException("Failed parsing favorites file: $file", e) } catch (e: IOException) { diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlAdapter.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlAdapter.kt index 563c2f677801..764fda05354c 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlAdapter.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlAdapter.kt @@ -68,6 +68,8 @@ class ControlAdapter( width = ViewGroup.LayoutParams.MATCH_PARENT } elevation = this@ControlAdapter.elevation + background = parent.context.getDrawable( + R.drawable.control_background_ripple) } ) { id, favorite -> model?.changeFavoriteStatus(id, favorite) @@ -137,10 +139,7 @@ private class ControlHolder(view: View, val favoriteCallback: ModelFavoriteChang private val title: TextView = itemView.requireViewById(R.id.title) private val subtitle: TextView = itemView.requireViewById(R.id.subtitle) private val removed: TextView = itemView.requireViewById(R.id.status) - private val favorite: CheckBox = itemView.requireViewById<CheckBox>(R.id.favorite) - private val favoriteFrame: ViewGroup = itemView - .requireViewById<ViewGroup>(R.id.favorite_container) - .apply { + private val favorite: CheckBox = itemView.requireViewById<CheckBox>(R.id.favorite).apply { visibility = View.VISIBLE } @@ -155,7 +154,7 @@ private class ControlHolder(view: View, val favoriteCallback: ModelFavoriteChang favorite.setOnClickListener { favoriteCallback(data.control.controlId, favorite.isChecked) } - favoriteFrame.setOnClickListener { favorite.performClick() } + itemView.setOnClickListener { favorite.performClick() } applyRenderInfo(renderInfo) } diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ChallengeDialogs.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ChallengeDialogs.kt index 15c2a0afe819..a7a41033bb5d 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ChallengeDialogs.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ChallengeDialogs.kt @@ -34,24 +34,29 @@ import com.android.systemui.R /** * Creates all dialogs for challengeValues that can occur from a call to - * {@link ControlsProviderService#performControlAction}. The types of challenge - * responses are listed in {@link ControlAction.ResponseResult}. + * [ControlsProviderService#performControlAction]. The types of challenge responses are listed in + * [ControlAction.ResponseResult]. */ object ChallengeDialogs { - fun createPinDialog(cvh: ControlViewHolder): Dialog? { + private const val WINDOW_TYPE = WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY + private const val STYLE = android.R.style.Theme_DeviceDefault_Dialog_Alert + + /** + * AlertDialogs to handle [ControlAction#RESPONSE_CHALLENGE_PIN] and + * [ControlAction#RESPONSE_CHALLENGE_PIN] responses, decided by the useAlphaNumeric + * parameter. + */ + fun createPinDialog(cvh: ControlViewHolder, useAlphaNumeric: Boolean): Dialog? { val lastAction = cvh.lastAction if (lastAction == null) { Log.e(ControlsUiController.TAG, "PIN Dialog attempted but no last action is set. Will not show") return null } - val builder = AlertDialog.Builder( - cvh.context, - android.R.style.Theme_DeviceDefault_Dialog_Alert - ).apply { + val builder = AlertDialog.Builder(cvh.context, STYLE).apply { val res = cvh.context.resources - setTitle(res.getString(R.string.controls_pin_verify, *arrayOf(cvh.title.getText()))) + setTitle(res.getString(R.string.controls_pin_verify, cvh.title.getText())) setView(R.layout.controls_dialog_pin) setPositiveButton( android.R.string.ok, @@ -71,25 +76,64 @@ object ChallengeDialogs { } return builder.create().apply { getWindow().apply { - setType(WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY) + setType(WINDOW_TYPE) setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE) } setOnShowListener(DialogInterface.OnShowListener { _ -> val editText = requireViewById<EditText>(R.id.controls_pin_input) - requireViewById<CheckBox>(R.id.controls_pin_use_alpha).setOnClickListener { v -> - if ((v as CheckBox).isChecked) { - editText.setInputType( - InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD) - } else { - editText.setInputType( - InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD) - } + val useAlphaCheckBox = requireViewById<CheckBox>(R.id.controls_pin_use_alpha) + useAlphaCheckBox.setChecked(useAlphaNumeric) + setInputType(editText, useAlphaCheckBox.isChecked()) + requireViewById<CheckBox>(R.id.controls_pin_use_alpha).setOnClickListener { _ -> + setInputType(editText, useAlphaCheckBox.isChecked()) } editText.requestFocus() }) } } + /** + * AlertDialogs to handle [ControlAction#RESPONSE_CHALLENGE_ACK] response type. + */ + fun createConfirmationDialog(cvh: ControlViewHolder): Dialog? { + val lastAction = cvh.lastAction + if (lastAction == null) { + Log.e(ControlsUiController.TAG, + "Confirmation Dialog attempted but no last action is set. Will not show") + return null + } + val builder = AlertDialog.Builder(cvh.context, STYLE).apply { + val res = cvh.context.resources + setMessage(res.getString( + R.string.controls_confirmation_message, cvh.title.getText())) + setPositiveButton( + android.R.string.ok, + DialogInterface.OnClickListener { dialog, _ -> + cvh.action(addChallengeValue(lastAction, "true")) + dialog.dismiss() + }) + setNegativeButton( + android.R.string.cancel, + DialogInterface.OnClickListener { dialog, _ -> dialog.cancel() } + ) + } + return builder.create().apply { + getWindow().apply { + setType(WINDOW_TYPE) + } + } + } + + private fun setInputType(editText: EditText, useTextInput: Boolean) { + if (useTextInput) { + editText.setInputType( + InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD) + } else { + editText.setInputType( + InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD) + } + } + private fun addChallengeValue(action: ControlAction, challengeValue: String): ControlAction { val id = action.getTemplateId() return when (action) { diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt index 9f5dd02b4514..7d3a86091869 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt @@ -21,6 +21,7 @@ import android.graphics.drawable.ClipDrawable import android.graphics.drawable.GradientDrawable import android.graphics.drawable.LayerDrawable import android.service.controls.Control +import android.service.controls.DeviceTypes import android.service.controls.actions.ControlAction import android.service.controls.templates.ControlTemplate import android.service.controls.templates.StatelessTemplate @@ -156,7 +157,11 @@ class ControlViewHolder( statusExtra.setTextColor(fg) icon.setImageDrawable(ri.icon) - icon.setImageTintList(fg) + + // do not color app icons + if (deviceType != DeviceTypes.TYPE_ROUTINE) { + icon.setImageTintList(fg) + } (clipLayer.getDrawable() as GradientDrawable).apply { setColor(context.getResources().getColor(bg, context.getTheme())) diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt index b0db4370f38d..05a0c45c2e15 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt @@ -442,7 +442,15 @@ class ControlsUiControllerImpl @Inject constructor ( controlViewsById.get(key)?.let { cvh -> when (response) { ControlAction.RESPONSE_CHALLENGE_PIN -> { - activeDialog = ChallengeDialogs.createPinDialog(cvh) + activeDialog = ChallengeDialogs.createPinDialog(cvh, false) + activeDialog?.show() + } + ControlAction.RESPONSE_CHALLENGE_PASSPHRASE -> { + activeDialog = ChallengeDialogs.createPinDialog(cvh, true) + activeDialog?.show() + } + ControlAction.RESPONSE_CHALLENGE_ACK -> { + activeDialog = ChallengeDialogs.createConfirmationDialog(cvh) activeDialog?.show() } else -> cvh.actionResponse(response) diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/RenderInfo.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/RenderInfo.kt index 27e46497b20a..d33cd94004fd 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/RenderInfo.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/RenderInfo.kt @@ -64,7 +64,7 @@ data class RenderInfo( val iconState = deviceIconMap.getValue(iconKey) val resourceId = iconState[enabled] - var icon: Drawable? = null + var icon: Drawable? if (resourceId == APP_ICON_ID) { icon = appIconMap.get(componentName) if (icon == null) { @@ -110,60 +110,160 @@ private val deviceColorMap = mapOf<Int, Pair<Int, Int>>( private val deviceIconMap = mapOf<Int, IconState>( THERMOSTAT_RANGE to IconState( - R.drawable.ic_device_thermostat_gm2_24px, - R.drawable.ic_device_thermostat_gm2_24px + R.drawable.ic_device_thermostat_off, + R.drawable.ic_device_thermostat_on ), (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_OFF) to IconState( - R.drawable.ic_device_thermostat_gm2_24px, - R.drawable.ic_device_thermostat_gm2_24px + R.drawable.ic_device_thermostat_off, + R.drawable.ic_device_thermostat_on ), (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_HEAT) to IconState( - R.drawable.ic_device_thermostat_gm2_24px, - R.drawable.ic_device_thermostat_gm2_24px + R.drawable.ic_device_thermostat_off, + R.drawable.ic_device_thermostat_on ), (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_COOL) to IconState( - R.drawable.ic_device_thermostat_gm2_24px, - R.drawable.ic_device_thermostat_gm2_24px + R.drawable.ic_device_thermostat_off, + R.drawable.ic_device_thermostat_on ), (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_HEAT_COOL) to IconState( - R.drawable.ic_device_thermostat_gm2_24px, - R.drawable.ic_device_thermostat_gm2_24px + R.drawable.ic_device_thermostat_off, + R.drawable.ic_device_thermostat_on ), (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_ECO) to IconState( - R.drawable.ic_device_thermostat_gm2_24px, - R.drawable.ic_device_thermostat_gm2_24px + R.drawable.ic_device_thermostat_off, + R.drawable.ic_device_thermostat_on ), DeviceTypes.TYPE_THERMOSTAT to IconState( - R.drawable.ic_device_thermostat_gm2_24px, - R.drawable.ic_device_thermostat_gm2_24px + R.drawable.ic_device_thermostat_off, + R.drawable.ic_device_thermostat_on ), DeviceTypes.TYPE_LIGHT to IconState( - R.drawable.ic_light_off_gm2_24px, - R.drawable.ic_lightbulb_outline_gm2_24px + R.drawable.ic_device_light_off, + R.drawable.ic_device_light_on ), DeviceTypes.TYPE_CAMERA to IconState( - R.drawable.ic_videocam_gm2_24px, - R.drawable.ic_videocam_gm2_24px + R.drawable.ic_device_camera_off, + R.drawable.ic_device_camera_on ), DeviceTypes.TYPE_LOCK to IconState( - R.drawable.ic_lock_open_gm2_24px, - R.drawable.ic_lock_gm2_24px + R.drawable.ic_device_lock_off, + R.drawable.ic_device_lock_on ), DeviceTypes.TYPE_SWITCH to IconState( - R.drawable.ic_switches_gm2_24px, - R.drawable.ic_switches_gm2_24px + R.drawable.ic_device_switch_off, + R.drawable.ic_device_switch_on ), DeviceTypes.TYPE_OUTLET to IconState( - R.drawable.ic_power_off_gm2_24px, - R.drawable.ic_power_gm2_24px + R.drawable.ic_device_outlet_off, + R.drawable.ic_device_outlet_on ), DeviceTypes.TYPE_VACUUM to IconState( - R.drawable.ic_vacuum_gm2_24px, - R.drawable.ic_vacuum_gm2_24px + R.drawable.ic_device_vacuum_off, + R.drawable.ic_device_vacuum_on ), DeviceTypes.TYPE_MOP to IconState( - R.drawable.ic_vacuum_gm2_24px, - R.drawable.ic_vacuum_gm2_24px + R.drawable.ic_device_mop_off, + R.drawable.ic_device_mop_on + ), + DeviceTypes.TYPE_AIR_FRESHENER to IconState( + R.drawable.ic_device_air_freshener_off, + R.drawable.ic_device_air_freshener_on + ), + DeviceTypes.TYPE_AIR_PURIFIER to IconState( + R.drawable.ic_device_air_purifier_off, + R.drawable.ic_device_air_purifier_on + ), + DeviceTypes.TYPE_FAN to IconState( + R.drawable.ic_device_fan_off, + R.drawable.ic_device_fan_on + ), + DeviceTypes.TYPE_HOOD to IconState( + R.drawable.ic_device_hood_off, + R.drawable.ic_device_hood_on + ), + DeviceTypes.TYPE_KETTLE to IconState( + R.drawable.ic_device_kettle_off, + R.drawable.ic_device_kettle_on + ), + DeviceTypes.TYPE_MICROWAVE to IconState( + R.drawable.ic_device_microwave_off, + R.drawable.ic_device_microwave_on + ), + DeviceTypes.TYPE_REMOTE_CONTROL to IconState( + R.drawable.ic_device_remote_control_off, + R.drawable.ic_device_remote_control_on + ), + DeviceTypes.TYPE_SET_TOP to IconState( + R.drawable.ic_device_set_top_off, + R.drawable.ic_device_set_top_on + ), + DeviceTypes.TYPE_STYLER to IconState( + R.drawable.ic_device_styler_off, + R.drawable.ic_device_styler_on + ), + DeviceTypes.TYPE_TV to IconState( + R.drawable.ic_device_tv_off, + R.drawable.ic_device_tv_on + ), + DeviceTypes.TYPE_WATER_HEATER to IconState( + R.drawable.ic_device_water_heater_off, + R.drawable.ic_device_water_heater_on + ), + DeviceTypes.TYPE_DISHWASHER to IconState( + R.drawable.ic_device_dishwasher_off, + R.drawable.ic_device_dishwasher_on + ), + DeviceTypes.TYPE_MULTICOOKER to IconState( + R.drawable.ic_device_multicooker_off, + R.drawable.ic_device_multicooker_on + ), + DeviceTypes.TYPE_SPRINKLER to IconState( + R.drawable.ic_device_sprinkler_off, + R.drawable.ic_device_sprinkler_on + ), + DeviceTypes.TYPE_WASHER to IconState( + R.drawable.ic_device_washer_off, + R.drawable.ic_device_washer_on + ), + DeviceTypes.TYPE_BLINDS to IconState( + R.drawable.ic_device_blinds_off, + R.drawable.ic_device_blinds_on + ), + DeviceTypes.TYPE_DRAWER to IconState( + R.drawable.ic_device_drawer_off, + R.drawable.ic_device_drawer_on + ), + DeviceTypes.TYPE_GARAGE to IconState( + R.drawable.ic_device_garage_off, + R.drawable.ic_device_garage_on + ), + DeviceTypes.TYPE_GATE to IconState( + R.drawable.ic_device_gate_off, + R.drawable.ic_device_gate_on + ), + DeviceTypes.TYPE_PERGOLA to IconState( + R.drawable.ic_device_pergola_off, + R.drawable.ic_device_pergola_on + ), + DeviceTypes.TYPE_WINDOW to IconState( + R.drawable.ic_device_window_off, + R.drawable.ic_device_window_on + ), + DeviceTypes.TYPE_VALVE to IconState( + R.drawable.ic_device_valve_off, + R.drawable.ic_device_valve_on + ), + DeviceTypes.TYPE_SECURITY_SYSTEM to IconState( + R.drawable.ic_device_security_system_off, + R.drawable.ic_device_security_system_on + ), + DeviceTypes.TYPE_REFRIGERATOR to IconState( + R.drawable.ic_device_refrigerator_off, + R.drawable.ic_device_refrigerator_on + ), + DeviceTypes.TYPE_DOORBELL to IconState( + R.drawable.ic_device_doorbell_off, + R.drawable.ic_device_doorbell_on ), DeviceTypes.TYPE_ROUTINE to IconState( RenderInfo.APP_ICON_ID, diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt index c495c58fff2a..f79c8b2393d0 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt @@ -64,12 +64,13 @@ class ToggleRangeBehavior : Behavior { val gestureListener = ToggleRangeGestureListener(cvh.layout) val gestureDetector = GestureDetector(context, gestureListener) - cvh.layout.setOnTouchListener { _: View, e: MotionEvent -> + cvh.layout.setOnTouchListener { v: View, e: MotionEvent -> if (gestureDetector.onTouchEvent(e)) { return@setOnTouchListener true } if (e.getAction() == MotionEvent.ACTION_UP && gestureListener.isDragging) { + v.getParent().requestDisallowInterceptTouchEvent(false) gestureListener.isDragging = false endUpdateRange() return@setOnTouchListener true @@ -254,6 +255,7 @@ class ToggleRangeBehavior : Behavior { yDiff: Float ): Boolean { if (!isDragging) { + v.getParent().requestDisallowInterceptTouchEvent(true) this@ToggleRangeBehavior.beginUpdateRange() isDragging = true } diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java index 12955a153360..ce29859f12ca 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java @@ -49,8 +49,6 @@ import dagger.Lazy; public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks { - private static final float SHUTDOWN_SCRIM_ALPHA = 0.95f; - private final Context mContext; private final Lazy<GlobalActionsDialog> mGlobalActionsDialogLazy; private final KeyguardStateController mKeyguardStateController; @@ -124,7 +122,7 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); window.setBackgroundDrawable(background); - window.setWindowAnimations(R.style.Animation_Toast); + window.setWindowAnimations(com.android.systemui.R.style.Animation_ShutdownUi); d.setContentView(R.layout.shutdown_dialog); d.setCancelable(false); @@ -153,7 +151,9 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks mBlurUtils.applyBlur(d.getWindow().getDecorView().getViewRootImpl(), mBlurUtils.blurRadiusOfRatio(1)); } else { - background.setAlpha((int) (SHUTDOWN_SCRIM_ALPHA * 255)); + float backgroundAlpha = mContext.getResources().getFloat( + com.android.systemui.R.dimen.shutdown_scrim_behind_alpha); + background.setAlpha((int) (backgroundAlpha * 255)); } d.show(); diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java index 54eca0e26692..703d5910500a 100644 --- a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java +++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java @@ -16,6 +16,8 @@ package com.android.systemui.glwallpaper; +import static com.android.systemui.glwallpaper.ImageWallpaperRenderer.WallpaperTexture; + import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; @@ -66,15 +68,15 @@ class ImageProcessHelper { private float mThreshold = DEFAULT_THRESHOLD; - void start(Bitmap bitmap) { - new ThresholdComputeTask(mHandler).execute(bitmap); + void start(WallpaperTexture texture) { + new ThresholdComputeTask(mHandler).execute(texture); } float getThreshold() { return Math.min(mThreshold, MAX_THRESHOLD); } - private static class ThresholdComputeTask extends AsyncTask<Bitmap, Void, Float> { + private static class ThresholdComputeTask extends AsyncTask<WallpaperTexture, Void, Float> { private Handler mUpdateHandler; ThresholdComputeTask(Handler handler) { @@ -83,13 +85,22 @@ class ImageProcessHelper { } @Override - protected Float doInBackground(Bitmap... bitmaps) { - Bitmap bitmap = bitmaps[0]; - if (bitmap != null) { - return new Threshold().compute(bitmap); + protected Float doInBackground(WallpaperTexture... textures) { + WallpaperTexture texture = textures[0]; + final float[] threshold = new float[] {DEFAULT_THRESHOLD}; + if (texture == null) { + Log.e(TAG, "ThresholdComputeTask: WallpaperTexture not initialized"); + return threshold[0]; } - Log.e(TAG, "ThresholdComputeTask: Can't get bitmap"); - return DEFAULT_THRESHOLD; + + texture.use(bitmap -> { + if (bitmap != null) { + threshold[0] = new Threshold().compute(bitmap); + } else { + Log.e(TAG, "ThresholdComputeTask: Can't get bitmap"); + } + }); + return threshold[0]; } @Override diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java index ed6675dcba2e..e9ddb3831b1a 100644 --- a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java +++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java @@ -36,6 +36,8 @@ import com.android.systemui.R; import java.io.FileDescriptor; import java.io.PrintWriter; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Consumer; /** * A GL renderer for image wallpaper. @@ -47,7 +49,6 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, private static final float SCALE_VIEWPORT_MAX = 1.1f; private static final boolean DEBUG = true; - private final WallpaperManager mWallpaperManager; private final ImageGLProgram mProgram; private final ImageGLWallpaper mWallpaper; private final ImageProcessHelper mImageProcessHelper; @@ -57,18 +58,18 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, private final Rect mScissor; private final Rect mSurfaceSize = new Rect(); private final Rect mViewport = new Rect(); - private Bitmap mBitmap; private boolean mScissorMode; private float mXOffset; private float mYOffset; - private boolean mWcgContent; + private final WallpaperTexture mTexture; public ImageWallpaperRenderer(Context context, SurfaceProxy proxy) { - mWallpaperManager = context.getSystemService(WallpaperManager.class); - if (mWallpaperManager == null) { + final WallpaperManager wpm = context.getSystemService(WallpaperManager.class); + if (wpm == null) { Log.w(TAG, "WallpaperManager not available"); } + mTexture = new WallpaperTexture(wpm); DisplayInfo displayInfo = new DisplayInfo(); context.getDisplay().getDisplayInfo(displayInfo); @@ -90,15 +91,13 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, } protected void startProcessingImage() { - if (loadBitmap()) { - // Compute threshold of the image, this is an async work. - mImageProcessHelper.start(mBitmap); - } + // Compute threshold of the image, this is an async work. + mImageProcessHelper.start(mTexture); } @Override public boolean isWcgContent() { - return mWcgContent; + return mTexture.isWcgContent(); } @Override @@ -107,30 +106,12 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, mProgram.useGLProgram( R.raw.image_wallpaper_vertex_shader, R.raw.image_wallpaper_fragment_shader); - if (!loadBitmap()) { - Log.w(TAG, "reload bitmap failed!"); - } - - mWallpaper.setup(mBitmap); - mBitmap = null; - } - - protected boolean loadBitmap() { - if (DEBUG) { - Log.d(TAG, "loadBitmap: mBitmap=" + mBitmap); - } - if (mWallpaperManager != null && mBitmap == null) { - mBitmap = mWallpaperManager.getBitmap(false /* hardware */); - mWcgContent = mWallpaperManager.wallpaperSupportsWcg(WallpaperManager.FLAG_SYSTEM); - mWallpaperManager.forgetLoadedWallpaper(); - if (mBitmap != null) { - mSurfaceSize.set(0, 0, mBitmap.getWidth(), mBitmap.getHeight()); + mTexture.use(bitmap -> { + if (bitmap == null) { + Log.w(TAG, "reload texture failed!"); } - } - if (DEBUG) { - Log.d(TAG, "loadBitmap done"); - } - return mBitmap != null; + mWallpaper.setup(bitmap); + }); } @Override @@ -174,6 +155,8 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, @Override public Size reportSurfaceSize() { + mTexture.use(null); + mSurfaceSize.set(mTexture.getTextureDimensions()); return new Size(mSurfaceSize.width(), mSurfaceSize.height()); } @@ -235,7 +218,69 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, out.print(prefix); out.print("mYOffset="); out.print(mYOffset); out.print(prefix); out.print("threshold="); out.print(mImageProcessHelper.getThreshold()); out.print(prefix); out.print("mReveal="); out.print(mImageRevealHelper.getReveal()); - out.print(prefix); out.print("mWcgContent="); out.print(mWcgContent); + out.print(prefix); out.print("mWcgContent="); out.print(isWcgContent()); mWallpaper.dump(prefix, fd, out, args); } + + static class WallpaperTexture { + private final AtomicInteger mRefCount; + private final Rect mDimensions; + private final WallpaperManager mWallpaperManager; + private Bitmap mBitmap; + private boolean mWcgContent; + + private WallpaperTexture(WallpaperManager wallpaperManager) { + mWallpaperManager = wallpaperManager; + mRefCount = new AtomicInteger(); + mDimensions = new Rect(); + } + + public void use(Consumer<Bitmap> consumer) { + mRefCount.incrementAndGet(); + synchronized (mRefCount) { + if (mBitmap == null) { + mBitmap = mWallpaperManager.getBitmap(false /* hardware */); + mWcgContent = mWallpaperManager.wallpaperSupportsWcg( + WallpaperManager.FLAG_SYSTEM); + mWallpaperManager.forgetLoadedWallpaper(); + if (mBitmap != null) { + mDimensions.set(0, 0, mBitmap.getWidth(), mBitmap.getHeight()); + } else { + Log.w(TAG, "Can't get bitmap"); + } + } + } + if (consumer != null) { + consumer.accept(mBitmap); + } + synchronized (mRefCount) { + final int count = mRefCount.decrementAndGet(); + if (count == 0 && mBitmap != null) { + if (DEBUG) { + Log.v(TAG, "WallpaperTexture: release 0x" + getHash() + + ", refCount=" + count); + } + mBitmap.recycle(); + mBitmap = null; + } + } + } + + private boolean isWcgContent() { + return mWcgContent; + } + + private String getHash() { + return mBitmap != null ? Integer.toHexString(mBitmap.hashCode()) : "null"; + } + + private Rect getTextureDimensions() { + return mDimensions; + } + + @Override + public String toString() { + return "{" + getHash() + ", " + mRefCount.get() + "}"; + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java index e208ee2b4ab7..9873d240efe3 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java @@ -37,6 +37,7 @@ import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; +import android.view.View.OnAttachStateChangeListener; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.ImageView; @@ -53,6 +54,8 @@ import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.NotificationMediaManager; +import com.android.systemui.statusbar.NotificationMediaManager.MediaListener; +import com.android.systemui.util.Assert; import java.util.List; import java.util.concurrent.Executor; @@ -60,7 +63,7 @@ import java.util.concurrent.Executor; /** * Base media control panel for System UI */ -public class MediaControlPanel implements NotificationMediaManager.MediaListener { +public class MediaControlPanel { private static final String TAG = "MediaControlPanel"; private final NotificationMediaManager mMediaManager; private final Executor mForegroundExecutor; @@ -74,6 +77,7 @@ public class MediaControlPanel implements NotificationMediaManager.MediaListener private int mForegroundColor; private int mBackgroundColor; protected ComponentName mRecvComponent; + private boolean mIsRegistered = false; private final int[] mActionIds; @@ -86,12 +90,34 @@ public class MediaControlPanel implements NotificationMediaManager.MediaListener com.android.internal.R.id.action4 }; - private MediaController.Callback mSessionCallback = new MediaController.Callback() { + private final MediaController.Callback mSessionCallback = new MediaController.Callback() { @Override public void onSessionDestroyed() { Log.d(TAG, "session destroyed"); mController.unregisterCallback(mSessionCallback); clearControls(); + makeInactive(); + } + }; + + private final MediaListener mMediaListener = new MediaListener() { + @Override + public void onMetadataOrStateChanged(MediaMetadata metadata, int state) { + if (state == PlaybackState.STATE_NONE) { + clearControls(); + makeInactive(); + } + } + }; + + private final OnAttachStateChangeListener mStateListener = new OnAttachStateChangeListener() { + @Override + public void onViewAttachedToWindow(View unused) { + makeActive(); + } + @Override + public void onViewDetachedFromWindow(View unused) { + makeInactive(); } }; @@ -111,6 +137,12 @@ public class MediaControlPanel implements NotificationMediaManager.MediaListener mContext = context; LayoutInflater inflater = LayoutInflater.from(mContext); mMediaNotifView = (LinearLayout) inflater.inflate(layoutId, parent, false); + // TODO(b/150854549): removeOnAttachStateChangeListener when this doesn't inflate views + // mStateListener shouldn't need to be unregistered since this object shares the same + // lifecycle with the inflated view. It would be better, however, if this controller used an + // attach/detach of views instead of inflating them in the constructor, which would allow + // mStateListener to be unregistered in detach. + mMediaNotifView.addOnAttachStateChangeListener(mStateListener); mMediaManager = manager; mActionIds = actionIds; mForegroundExecutor = foregroundExecutor; @@ -236,9 +268,7 @@ public class MediaControlPanel implements NotificationMediaManager.MediaListener }); } - // Ensure is only added once - mMediaManager.removeCallback(this); - mMediaManager.addCallback(this); + makeActive(); } /** @@ -422,11 +452,20 @@ public class MediaControlPanel implements NotificationMediaManager.MediaListener btn.setVisibility(View.VISIBLE); } - @Override - public void onMetadataOrStateChanged(MediaMetadata metadata, int state) { - if (state == PlaybackState.STATE_NONE) { - clearControls(); - mMediaManager.removeCallback(this); + private void makeActive() { + Assert.isMainThread(); + if (!mIsRegistered) { + mMediaManager.addCallback(mMediaListener); + mIsRegistered = true; } } + + private void makeInactive() { + Assert.isMainThread(); + if (mIsRegistered) { + mMediaManager.removeCallback(mMediaListener); + mIsRegistered = false; + } + } + } diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipAnimationController.java b/packages/SystemUI/src/com/android/systemui/pip/PipAnimationController.java index 232c23dc14f0..d219a9e65a3c 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/PipAnimationController.java +++ b/packages/SystemUI/src/com/android/systemui/pip/PipAnimationController.java @@ -49,10 +49,10 @@ public class PipAnimationController { @Retention(RetentionPolicy.SOURCE) public @interface AnimationType {} - static final int TRANSITION_DIRECTION_NONE = 0; - static final int TRANSITION_DIRECTION_SAME = 1; - static final int TRANSITION_DIRECTION_TO_PIP = 2; - static final int TRANSITION_DIRECTION_TO_FULLSCREEN = 3; + public static final int TRANSITION_DIRECTION_NONE = 0; + public static final int TRANSITION_DIRECTION_SAME = 1; + public static final int TRANSITION_DIRECTION_TO_PIP = 2; + public static final int TRANSITION_DIRECTION_TO_FULLSCREEN = 3; @IntDef(prefix = { "TRANSITION_DIRECTION_" }, value = { TRANSITION_DIRECTION_NONE, @@ -61,7 +61,7 @@ public class PipAnimationController { TRANSITION_DIRECTION_TO_FULLSCREEN }) @Retention(RetentionPolicy.SOURCE) - @interface TransitionDirection {} + public @interface TransitionDirection {} private final Interpolator mFastOutSlowInInterpolator; private final PipSurfaceTransactionHelper mSurfaceTransactionHelper; @@ -110,6 +110,10 @@ public class PipAnimationController { return mCurrentAnimator; } + PipTransitionAnimator getCurrentAnimator() { + return mCurrentAnimator; + } + private PipTransitionAnimator setupPipTransitionAnimator(PipTransitionAnimator animator) { animator.setSurfaceTransactionHelper(mSurfaceTransactionHelper); animator.setInterpolator(mFastOutSlowInInterpolator); @@ -239,6 +243,9 @@ public class PipAnimationController { void setDestinationBounds(Rect destinationBounds) { mDestinationBounds.set(destinationBounds); + if (mAnimationType == ANIM_TYPE_ALPHA) { + onStartTransaction(mLeash, newSurfaceControlTransaction()); + } } void setCurrentValue(T value) { diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java index 4969fc81978e..1868536dca98 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java +++ b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java @@ -199,6 +199,10 @@ public class PipBoundsHandler { return mLastDestinationBounds; } + public Rect getDisplayBounds() { + return new Rect(0, 0, mDisplayInfo.logicalWidth, mDisplayInfo.logicalHeight); + } + /** * Responds to IPinnedStackListener on {@link DisplayInfo} change. * It will normally follow up with a diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java index 6ce5e7cf506c..4b3847217e01 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java +++ b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java @@ -16,6 +16,9 @@ package com.android.systemui.pip; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; + import static com.android.systemui.pip.PipAnimationController.ANIM_TYPE_ALPHA; import static com.android.systemui.pip.PipAnimationController.ANIM_TYPE_BOUNDS; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_NONE; @@ -26,9 +29,8 @@ import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTI import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; -import android.app.ActivityTaskManager; -import android.window.ITaskOrganizerController; import android.app.PictureInPictureParams; +import android.content.ComponentName; import android.content.Context; import android.content.pm.ActivityInfo; import android.graphics.Rect; @@ -38,9 +40,9 @@ import android.os.Looper; import android.os.RemoteException; import android.util.Log; import android.util.Size; +import android.view.SurfaceControl; import android.window.ITaskOrganizer; import android.window.IWindowContainer; -import android.view.SurfaceControl; import android.window.WindowContainerTransaction; import android.window.WindowOrganizer; @@ -93,7 +95,8 @@ public class PipTaskOrganizer extends ITaskOrganizer.Stub { mMainHandler.post(() -> { for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) { final PipTransitionCallback callback = mPipTransitionCallbacks.get(i); - callback.onPipTransitionStarted(); + callback.onPipTransitionStarted(mTaskInfo.baseActivity, + animator.getTransitionDirection()); } }); } @@ -104,7 +107,8 @@ public class PipTaskOrganizer extends ITaskOrganizer.Stub { mMainHandler.post(() -> { for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) { final PipTransitionCallback callback = mPipTransitionCallbacks.get(i); - callback.onPipTransitionFinished(); + callback.onPipTransitionFinished(mTaskInfo.baseActivity, + animator.getTransitionDirection()); } }); finishResize(tx, animator.getDestinationBounds(), animator.getTransitionDirection()); @@ -115,7 +119,8 @@ public class PipTaskOrganizer extends ITaskOrganizer.Stub { mMainHandler.post(() -> { for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) { final PipTransitionCallback callback = mPipTransitionCallbacks.get(i); - callback.onPipTransitionCanceled(); + callback.onPipTransitionCanceled(mTaskInfo.baseActivity, + animator.getTransitionDirection()); } }); } @@ -200,6 +205,10 @@ public class PipTaskOrganizer extends ITaskOrganizer.Stub { return mUpdateHandler; } + public Rect getLastReportedBounds() { + return new Rect(mLastReportedBounds); + } + /** * Registers {@link PipTransitionCallback} to receive transition callbacks. */ @@ -216,6 +225,29 @@ public class PipTaskOrganizer extends ITaskOrganizer.Stub { mOneShotAnimationType = animationType; } + /** + * Dismiss PiP, this is done in two phases using {@link WindowContainerTransaction} + * - setActivityWindowingMode to fullscreen at beginning of the transaction. without changing + * the windowing mode of the Task itself. This makes sure the activity render it's fullscreen + * configuration while the Task is still in PiP. + * - setWindowingMode to fullscreen at the end of transition + * @param animationDurationMs duration in millisecond for the exiting PiP transition + */ + public void dismissPip(int animationDurationMs) { + try { + final WindowContainerTransaction wct = new WindowContainerTransaction(); + wct.setActivityWindowingMode(mToken, WINDOWING_MODE_FULLSCREEN); + WindowOrganizer.applyTransaction(wct); + } catch (RemoteException e) { + Log.e(TAG, "Failed to apply container transaction", e); + } + final Rect destinationBounds = mBoundsToRestore.remove(mToken.asBinder()); + scheduleAnimateResizePip(mLastReportedBounds, destinationBounds, + TRANSITION_DIRECTION_TO_FULLSCREEN, animationDurationMs, + null /* updateBoundsCallback */); + mInPip = false; + } + @Override public void onTaskAppeared(ActivityManager.RunningTaskInfo info) { Objects.requireNonNull(info, "Requires RunningTaskInfo"); @@ -235,7 +267,8 @@ public class PipTaskOrganizer extends ITaskOrganizer.Stub { mBoundsToRestore.put(mToken.asBinder(), currentBounds); if (mOneShotAnimationType == ANIM_TYPE_BOUNDS) { scheduleAnimateResizePip(currentBounds, destinationBounds, - TRANSITION_DIRECTION_TO_PIP, mEnterExitAnimationDuration, null); + TRANSITION_DIRECTION_TO_PIP, mEnterExitAnimationDuration, + null /* updateBoundsCallback */); } else if (mOneShotAnimationType == ANIM_TYPE_ALPHA) { mUpdateHandler.post(() -> mPipAnimationController .getAnimator(mLeash, destinationBounds, 0f, 1f) @@ -249,6 +282,12 @@ public class PipTaskOrganizer extends ITaskOrganizer.Stub { } } + /** + * Note that dismissing PiP is now originated from SystemUI, see {@link #dismissPip(int)}. + * Meanwhile this callback is invoked whenever the task is removed. For instance: + * - as a result of removeStacksInWindowingModes from WM + * - activity itself is died + */ @Override public void onTaskVanished(ActivityManager.RunningTaskInfo info) { IWindowContainer token = info.token; @@ -259,7 +298,8 @@ public class PipTaskOrganizer extends ITaskOrganizer.Stub { } final Rect boundsToRestore = mBoundsToRestore.remove(token.asBinder()); scheduleAnimateResizePip(mLastReportedBounds, boundsToRestore, - TRANSITION_DIRECTION_TO_FULLSCREEN, mEnterExitAnimationDuration, null); + TRANSITION_DIRECTION_TO_FULLSCREEN, mEnterExitAnimationDuration, + null /* updateBoundsCallback */); mInPip = false; } @@ -274,7 +314,31 @@ public class PipTaskOrganizer extends ITaskOrganizer.Stub { getAspectRatioOrDefault(newParams), null /* bounds */, getMinimalSize(info.topActivityInfo)); Objects.requireNonNull(destinationBounds, "Missing destination bounds"); - scheduleAnimateResizePip(destinationBounds, mEnterExitAnimationDuration, null); + scheduleAnimateResizePip(destinationBounds, mEnterExitAnimationDuration, + null /* updateBoundsCallback */); + } + + /** + * TODO(b/152809058): consolidate the display info handling logic in SysUI + */ + @SuppressWarnings("unchecked") + public void mayUpdateCurrentAnimationOnRotationChange() { + final PipAnimationController.PipTransitionAnimator animator = + mPipAnimationController.getCurrentAnimator(); + if (animator != null && animator.isRunning() + && animator.getTransitionDirection() == TRANSITION_DIRECTION_TO_PIP) { + final Rect currentDestinationBounds = animator.getDestinationBounds(); + if (mPipBoundsHandler.getDisplayBounds().contains(currentDestinationBounds)) { + return; + } + final Rect newDestinationBounds = mPipBoundsHandler.getDestinationBounds( + getAspectRatioOrDefault(mTaskInfo.pictureInPictureParams), + null /* bounds */, getMinimalSize(mTaskInfo.topActivityInfo)); + if (animator.getAnimationType() == ANIM_TYPE_BOUNDS) { + animator.updateEndValue(newDestinationBounds); + } + animator.setDestinationBounds(newDestinationBounds); + } } /** @@ -434,12 +498,19 @@ public class PipTaskOrganizer extends ITaskOrganizer.Stub { } mLastReportedBounds.set(destinationBounds); try { - // If we are animating to fullscreen, then we need to reset the override bounds on the - // task to ensure that the task "matches" the parent's bounds - Rect taskBounds = direction == TRANSITION_DIRECTION_TO_FULLSCREEN - ? null - : destinationBounds; final WindowContainerTransaction wct = new WindowContainerTransaction(); + final Rect taskBounds; + if (direction == TRANSITION_DIRECTION_TO_FULLSCREEN) { + // If we are animating to fullscreen, then we need to reset the override bounds + // on the task to ensure that the task "matches" the parent's bounds, this applies + // also to the final windowing mode, which should be reset to undefined rather than + // fullscreen. + taskBounds = null; + wct.setWindowingMode(mToken, WINDOWING_MODE_UNDEFINED) + .setActivityWindowingMode(mToken, WINDOWING_MODE_UNDEFINED); + } else { + taskBounds = destinationBounds; + } if (direction == TRANSITION_DIRECTION_TO_PIP) { wct.scheduleFinishEnterPip(mToken, taskBounds); } else { @@ -492,16 +563,16 @@ public class PipTaskOrganizer extends ITaskOrganizer.Stub { /** * Callback when the pip transition is started. */ - void onPipTransitionStarted(); + void onPipTransitionStarted(ComponentName activity, int direction); /** * Callback when the pip transition is finished. */ - void onPipTransitionFinished(); + void onPipTransitionFinished(ComponentName activity, int direction); /** * Callback when the pip transition is cancelled. */ - void onPipTransitionCanceled(); + void onPipTransitionCanceled(ComponentName activity, int direction); } } diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java index e89ce2e3a56f..8a25f4d441d3 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java @@ -20,6 +20,8 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.window.WindowOrganizer.TaskOrganizer; +import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_TO_FULLSCREEN; + import android.app.ActivityManager; import android.app.ActivityTaskManager; import android.app.IActivityManager; @@ -36,7 +38,6 @@ import android.util.Pair; import android.view.DisplayInfo; import android.view.IPinnedStackController; import android.window.WindowContainerTransaction; -import android.window.WindowOrganizer; import com.android.systemui.Dependency; import com.android.systemui.UiOffloadThread; @@ -171,24 +172,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio } @Override - public void onSaveReentryBounds(ComponentName componentName, Rect bounds) { - mHandler.post(() -> { - // On phones, the expansion animation that happens on pip tap before restoring - // to fullscreen makes it so that the bounds received here are the expanded - // bounds. We want to restore to the unexpanded bounds when re-entering pip, - // so we save the bounds before expansion (normal) instead of the current - // bounds. - mReentryBounds.set(mTouchHandler.getNormalBounds()); - // Apply the snap fraction of the current bounds to the normal bounds. - float snapFraction = mPipBoundsHandler.getSnapFraction(bounds); - mPipBoundsHandler.applySnapFraction(mReentryBounds, snapFraction); - // Save reentry bounds (normal non-expand bounds with current position applied). - mPipBoundsHandler.onSaveReentryBounds(componentName, mReentryBounds); - }); - } - - @Override - public void onResetReentryBounds(ComponentName componentName) { + public void onActivityHidden(ComponentName componentName) { mHandler.post(() -> mPipBoundsHandler.onResetReentryBounds(componentName)); } @@ -258,7 +242,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio // register the pip input consumer to ensure touch can send to it. mInputConsumerController.registerInputConsumer(); } - } catch (RemoteException e) { + } catch (RemoteException | UnsupportedOperationException e) { e.printStackTrace(); } } @@ -326,7 +310,21 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio } @Override - public void onPipTransitionStarted() { + public void onPipTransitionStarted(ComponentName activity, int direction) { + if (direction == TRANSITION_DIRECTION_TO_FULLSCREEN) { + // On phones, the expansion animation that happens on pip tap before restoring + // to fullscreen makes it so that the bounds received here are the expanded + // bounds. We want to restore to the unexpanded bounds when re-entering pip, + // so we save the bounds before expansion (normal) instead of the current + // bounds. + mReentryBounds.set(mTouchHandler.getNormalBounds()); + // Apply the snap fraction of the current bounds to the normal bounds. + final Rect bounds = mPipTaskOrganizer.getLastReportedBounds(); + float snapFraction = mPipBoundsHandler.getSnapFraction(bounds); + mPipBoundsHandler.applySnapFraction(mReentryBounds, snapFraction); + // Save reentry bounds (normal non-expand bounds with current position applied). + mPipBoundsHandler.onSaveReentryBounds(activity, mReentryBounds); + } // Disable touches while the animation is running mTouchHandler.setTouchEnabled(false); if (mPinnedStackAnimationRecentsListener != null) { @@ -339,12 +337,12 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio } @Override - public void onPipTransitionFinished() { + public void onPipTransitionFinished(ComponentName activity, int direction) { onPipTransitionFinishedOrCanceled(); } @Override - public void onPipTransitionCanceled() { + public void onPipTransitionCanceled(ComponentName activity, int direction) { onPipTransitionFinishedOrCanceled(); } @@ -365,6 +363,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio mTouchHandler.onMovementBoundsChanged(mTmpInsetBounds, mTmpNormalBounds, animatingBounds, fromImeAdjustment, fromShelfAdjustment, mTmpDisplayInfo.rotation); + mPipTaskOrganizer.mayUpdateCurrentAnimationOnRotationChange(); } public void dump(PrintWriter pw) { diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java index 449a2bca6abb..7974281b956f 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java @@ -219,11 +219,7 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, cancelAnimations(); mMenuController.hideMenuWithoutResize(); mPipTaskOrganizer.getUpdateHandler().post(() -> { - try { - mActivityTaskManager.dismissPip(!skipAnimation, EXPAND_STACK_TO_FULLSCREEN_DURATION); - } catch (RemoteException e) { - Log.e(TAG, "Error expanding PiP activity", e); - } + mPipTaskOrganizer.dismissPip(skipAnimation ? 0 : EXPAND_STACK_TO_FULLSCREEN_DURATION); }); } diff --git a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java index 2dcf1f89c3ec..c6e6da16652f 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java @@ -45,7 +45,6 @@ import android.text.TextUtils; import android.util.Log; import android.util.Pair; import android.view.DisplayInfo; -import android.window.WindowOrganizer; import com.android.systemui.Dependency; import com.android.systemui.R; @@ -296,7 +295,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio try { WindowManagerWrapper.getInstance().addPinnedStackListener(mPinnedStackListener); TaskOrganizer.registerOrganizer(mPipTaskOrganizer, WINDOWING_MODE_PINNED); - } catch (RemoteException e) { + } catch (RemoteException | UnsupportedOperationException e) { Log.e(TAG, "Failed to register pinned stack listener", e); } @@ -700,15 +699,15 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio }; @Override - public void onPipTransitionStarted() { } + public void onPipTransitionStarted(ComponentName activity, int direction) { } @Override - public void onPipTransitionFinished() { + public void onPipTransitionFinished(ComponentName activity, int direction) { onPipTransitionFinishedOrCanceled(); } @Override - public void onPipTransitionCanceled() { + public void onPipTransitionCanceled(ComponentName activity, int direction) { onPipTransitionFinishedOrCanceled(); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java index 0403a0505b00..cd737217b84a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java +++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java @@ -142,6 +142,9 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { @Override public void computeScroll() { if (!mScroller.isFinished() && mScroller.computeScrollOffset()) { + if (!isFakeDragging()) { + beginFakeDrag(); + } fakeDragBy(getScrollX() - mScroller.getCurrX()); // Keep on drawing until the animation has finished. postInvalidateOnAnimation(); diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java index aa6444973a6f..3b3d9dde3b7e 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java @@ -17,7 +17,6 @@ package com.android.systemui.recents; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON; import static com.android.systemui.Prefs.Key.DISMISSED_RECENTS_SWIPE_UP_ONBOARDING_COUNT; @@ -27,8 +26,7 @@ import static com.android.systemui.Prefs.Key.HAS_SEEN_RECENTS_SWIPE_UP_ONBOARDIN import static com.android.systemui.Prefs.Key.OVERVIEW_OPENED_COUNT; import static com.android.systemui.Prefs.Key.OVERVIEW_OPENED_FROM_HOME_COUNT; import static com.android.systemui.shared.system.LauncherEventUtil.DISMISS; -import static com.android.systemui.shared.system.LauncherEventUtil - .RECENTS_QUICK_SCRUB_ONBOARDING_TIP; +import static com.android.systemui.shared.system.LauncherEventUtil.RECENTS_QUICK_SCRUB_ONBOARDING_TIP; import static com.android.systemui.shared.system.LauncherEventUtil.RECENTS_SWIPE_UP_ONBOARDING_TIP; import static com.android.systemui.shared.system.LauncherEventUtil.VISIBLE; @@ -139,7 +137,7 @@ public class RecentsOnboarding { private void onAppLaunch() { ActivityManager.RunningTaskInfo info = ActivityManagerWrapper.getInstance() - .getRunningTask(ACTIVITY_TYPE_UNDEFINED /* ignoreActivityType */); + .getRunningTask(); if (info == null) { return; } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java index 25715212a344..c828c4cccce5 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java @@ -130,7 +130,7 @@ class SaveImageInBackgroundTask extends AsyncTask<Void, Void, Void> { try { CompletableFuture<List<Notification.Action>> smartActionsFuture = ScreenshotSmartActions.getSmartActionsFuture( - mScreenshotId, image, mSmartActionsProvider, + mScreenshotId, mImageFileName, image, mSmartActionsProvider, mSmartActionsEnabled, isManagedProfile(mContext)); // Save the screenshot to the MediaStore @@ -202,7 +202,7 @@ class SaveImageInBackgroundTask extends AsyncTask<Void, Void, Void> { 1000); smartActions.addAll(buildSmartActions( ScreenshotSmartActions.getSmartActions( - mScreenshotId, smartActionsFuture, timeoutMs, + mScreenshotId, mImageFileName, smartActionsFuture, timeoutMs, mSmartActionsProvider), mContext)); } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java index b6f5447d2867..09a0644159e2 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java @@ -56,16 +56,18 @@ public class ScreenshotNotificationSmartActionsProvider { * Default implementation that returns an empty list. * This method is overridden in vendor-specific Sys UI implementation. * - * @param screenshotId A generated random unique id for the screenshot. - * @param bitmap The bitmap of the screenshot. The bitmap config must be {@link - * HARDWARE}. - * @param componentName Contains package and activity class names where the screenshot was - * taken. This is used as an additional signal to generate and rank more - * relevant actions. - * @param isManagedProfile The screenshot was taken for a work profile app. + * @param screenshotId A generated random unique id for the screenshot. + * @param screenshotFileName name of the file where the screenshot will be written. + * @param bitmap The bitmap of the screenshot. The bitmap config must be {@link + * HARDWARE}. + * @param componentName Contains package and activity class names where the screenshot was + * taken. This is used as an additional signal to generate and rank + * more relevant actions. + * @param isManagedProfile The screenshot was taken for a work profile app. */ public CompletableFuture<List<Notification.Action>> getActions( String screenshotId, + String screenshotFileName, Bitmap bitmap, ComponentName componentName, boolean isManagedProfile) { @@ -77,7 +79,7 @@ public class ScreenshotNotificationSmartActionsProvider { * Notify exceptions and latency encountered during generating smart actions. * This method is overridden in vendor-specific Sys UI implementation. * - * @param screenshotId Unique id of the screenshot. + * @param screenshotId unique id of the screenshot. * @param op screenshot execution phase defined in {@link ScreenshotOp} * @param status {@link ScreenshotOpStatus} to report success or failure. * @param durationMs latency experienced in different phases of screenshots. diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java index e76e37e5c608..d31344446fac 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java @@ -44,8 +44,9 @@ public class ScreenshotSmartActions { private static final String TAG = "ScreenshotSmartActions"; @VisibleForTesting - static CompletableFuture<List<Notification.Action>> getSmartActionsFuture(String screenshotId, - Bitmap image, ScreenshotNotificationSmartActionsProvider smartActionsProvider, + static CompletableFuture<List<Notification.Action>> getSmartActionsFuture( + String screenshotId, String screenshotFileName, Bitmap image, + ScreenshotNotificationSmartActionsProvider smartActionsProvider, boolean smartActionsEnabled, boolean isManagedProfile) { if (!smartActionsEnabled) { Slog.i(TAG, "Screenshot Intelligence not enabled, returning empty list."); @@ -68,9 +69,8 @@ public class ScreenshotSmartActions { (runningTask != null && runningTask.topActivity != null) ? runningTask.topActivity : new ComponentName("", ""); - smartActionsFuture = smartActionsProvider.getActions(screenshotId, image, - componentName, - isManagedProfile); + smartActionsFuture = smartActionsProvider.getActions( + screenshotId, screenshotFileName, image, componentName, isManagedProfile); } catch (Throwable e) { long waitTimeMs = SystemClock.uptimeMillis() - startTimeMs; smartActionsFuture = CompletableFuture.completedFuture(Collections.emptyList()); @@ -84,7 +84,7 @@ public class ScreenshotSmartActions { } @VisibleForTesting - static List<Notification.Action> getSmartActions(String screenshotId, + static List<Notification.Action> getSmartActions(String screenshotId, String screenshotFileName, CompletableFuture<List<Notification.Action>> smartActionsFuture, int timeoutMs, ScreenshotNotificationSmartActionsProvider smartActionsProvider) { long startTimeMs = SystemClock.uptimeMillis(); diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java index 01498f933383..66e321145701 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java @@ -25,6 +25,7 @@ import static android.window.WindowOrganizer.TaskOrganizer; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; +import android.app.ActivityTaskManager; import android.content.Context; import android.content.res.Configuration; import android.graphics.Rect; @@ -32,11 +33,11 @@ import android.os.Handler; import android.os.RemoteException; import android.provider.Settings; import android.util.Slog; -import android.window.IWindowContainer; import android.view.LayoutInflater; import android.view.SurfaceControl; import android.view.SurfaceSession; import android.view.View; +import android.window.IWindowContainer; import android.window.WindowContainerTransaction; import android.window.WindowOrganizer; @@ -112,6 +113,9 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, private DisplayChangeController.OnDisplayChangingListener mRotationController = (display, fromRotation, toRotation, t) -> { + if (!mSplits.isSplitScreenSupported()) { + return; + } DisplayLayout displayLayout = new DisplayLayout(mDisplayController.getDisplayLayout(display)); SplitDisplayLayout sdl = new SplitDisplayLayout(mContext, displayLayout, mSplits); @@ -472,6 +476,10 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, mDisplayController.getDisplayLayout(displayId), mSplits); mImeController.addPositionProcessor(mImePositionProcessor); mDisplayController.addDisplayChangingController(mRotationController); + if (!ActivityTaskManager.supportsSplitScreenMultiWindow(mContext)) { + removeDivider(); + return; + } try { mSplits.init(mSurfaceSession); // Set starting tile bounds based on middle target @@ -481,13 +489,15 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, WindowOrganizer.applyTransaction(tct); } catch (Exception e) { Slog.e(TAG, "Failed to register docked stack listener", e); + removeDivider(); + return; } update(mDisplayController.getDisplayContext(displayId).getResources().getConfiguration()); } @Override public void onDisplayConfigurationChanged(int displayId, Configuration newConfig) { - if (displayId != DEFAULT_DISPLAY) { + if (displayId != DEFAULT_DISPLAY || !mSplits.isSplitScreenSupported()) { return; } mSplitLayout = new SplitDisplayLayout(mDisplayController.getDisplayContext(displayId), diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index 1aa78311a989..e21861ab426e 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -25,7 +25,6 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.annotation.Nullable; -import android.app.ActivityTaskManager; import android.content.Context; import android.content.res.Configuration; import android.graphics.Rect; @@ -130,7 +129,6 @@ public class DividerView extends FrameLayout implements OnTouchListener, private int mDividerInsets; private final Display mDefaultDisplay; - private boolean mSupportSplitScreenMultiWindow; private int mDividerSize; private int mTouchElevation; @@ -284,8 +282,6 @@ public class DividerView extends FrameLayout implements OnTouchListener, final DisplayManager displayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE); mDefaultDisplay = displayManager.getDisplay(Display.DEFAULT_DISPLAY); - mSupportSplitScreenMultiWindow = - ActivityTaskManager.supportsSplitScreenMultiWindow(mContext); } @Override @@ -358,11 +354,6 @@ public class DividerView extends FrameLayout implements OnTouchListener, @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - if (!mSupportSplitScreenMultiWindow) { - super.onLayout(changed, left, top, right, bottom); - return; - } - if (mFirstLayout) { // Wait for first layout so that the ViewRootImpl surface has been created. initializeSurfaceState(); @@ -1100,6 +1091,7 @@ public class DividerView extends FrameLayout implements OnTouchListener, t.setPosition(mTiles.mHomeAndRecentsSurfaces.get(i), mTiles.mHomeBounds.left - otherTaskRect.left, mTiles.mHomeBounds.top - otherTaskRect.top); + t.setWindowCrop(mTiles.mHomeAndRecentsSurfaces.get(i), null); } final SurfaceControl dividerCtrl = getWindowSurfaceControl(); if (dividerCtrl != null) { diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java b/packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java index 6cb7f4ff7204..0a528a63009e 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java @@ -49,6 +49,7 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub { ArrayList<SurfaceControl> mHomeAndRecentsSurfaces = new ArrayList<>(); Rect mHomeBounds = new Rect(); final Divider mDivider; + private boolean mSplitScreenSupported = false; SplitScreenTaskOrganizer(Divider divider) { mDivider = divider; @@ -57,12 +58,19 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub { void init(SurfaceSession session) throws RemoteException { TaskOrganizer.registerOrganizer(this, WINDOWING_MODE_SPLIT_SCREEN_PRIMARY); TaskOrganizer.registerOrganizer(this, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY); - mPrimary = TaskOrganizer.createRootTask(Display.DEFAULT_DISPLAY, - WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY); - mSecondary = TaskOrganizer.createRootTask(Display.DEFAULT_DISPLAY, - WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY); - mPrimarySurface = mPrimary.token.getLeash(); - mSecondarySurface = mSecondary.token.getLeash(); + try { + mPrimary = TaskOrganizer.createRootTask(Display.DEFAULT_DISPLAY, + WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY); + mSecondary = TaskOrganizer.createRootTask(Display.DEFAULT_DISPLAY, + WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY); + mPrimarySurface = mPrimary.token.getLeash(); + mSecondarySurface = mSecondary.token.getLeash(); + } catch (RemoteException e) { + // teardown to prevent callbacks + TaskOrganizer.unregisterOrganizer(this); + throw e; + } + mSplitScreenSupported = true; // Initialize dim surfaces: mPrimaryDim = new SurfaceControl.Builder(session).setParent(mPrimarySurface) @@ -78,6 +86,10 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub { releaseTransaction(t); } + boolean isSplitScreenSupported() { + return mSplitScreenSupported; + } + SurfaceControl.Transaction getTransaction() { return mDivider.mTransactionPool.acquire(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index bb0fa2d2c7cb..5475812b5563 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -93,7 +93,7 @@ public class KeyguardIndicationController implements StateListener, private String mRestingIndication; private String mAlignmentIndication; private CharSequence mTransientIndication; - private ColorStateList mTransientTextColorState; + private boolean mTransientTextIsError; private ColorStateList mInitialTextColorState; private boolean mVisible; private boolean mHideTransientMessageOnScreenOff; @@ -260,7 +260,7 @@ public class KeyguardIndicationController implements StateListener, * Shows {@param transientIndication} until it is hidden by {@link #hideTransientIndication}. */ public void showTransientIndication(CharSequence transientIndication) { - showTransientIndication(transientIndication, mInitialTextColorState, + showTransientIndication(transientIndication, false /* isError */, false /* hideOnScreenOff */); } @@ -268,10 +268,10 @@ public class KeyguardIndicationController implements StateListener, * Shows {@param transientIndication} until it is hidden by {@link #hideTransientIndication}. */ private void showTransientIndication(CharSequence transientIndication, - ColorStateList textColorState, boolean hideOnScreenOff) { + boolean isError, boolean hideOnScreenOff) { mTransientIndication = transientIndication; mHideTransientMessageOnScreenOff = hideOnScreenOff && transientIndication != null; - mTransientTextColorState = textColorState; + mTransientTextIsError = isError; mHandler.removeMessages(MSG_HIDE_TRANSIENT); mHandler.removeMessages(MSG_SWIPE_UP_TO_UNLOCK); if (mDozing && !TextUtils.isEmpty(mTransientIndication)) { @@ -311,7 +311,6 @@ public class KeyguardIndicationController implements StateListener, mTextView.switchIndication(mTransientIndication); } else if (!TextUtils.isEmpty(mAlignmentIndication)) { mTextView.switchIndication(mAlignmentIndication); - mTextView.setTextColor(Utils.getColorError(mContext)); } else if (mPowerPluggedIn) { String indication = computePowerIndication(); if (animate) { @@ -336,9 +335,9 @@ public class KeyguardIndicationController implements StateListener, powerIndication = computePowerIndication(); } + boolean isError = false; if (!mKeyguardUpdateMonitor.isUserUnlocked(userId)) { mTextView.switchIndication(com.android.internal.R.string.lockscreen_storage_locked); - mTextView.setTextColor(mInitialTextColorState); } else if (!TextUtils.isEmpty(mTransientIndication)) { if (powerIndication != null && !mTransientIndication.equals(powerIndication)) { String indication = mContext.getResources().getString( @@ -348,7 +347,7 @@ public class KeyguardIndicationController implements StateListener, } else { mTextView.switchIndication(mTransientIndication); } - mTextView.setTextColor(mTransientTextColorState); + isError = mTransientTextIsError; } else if (!TextUtils.isEmpty(trustGrantedIndication) && mKeyguardUpdateMonitor.getUserHasTrust(userId)) { if (powerIndication != null) { @@ -359,15 +358,13 @@ public class KeyguardIndicationController implements StateListener, } else { mTextView.switchIndication(trustGrantedIndication); } - mTextView.setTextColor(mInitialTextColorState); } else if (!TextUtils.isEmpty(mAlignmentIndication)) { mTextView.switchIndication(mAlignmentIndication); - mTextView.setTextColor(Utils.getColorError(mContext)); + isError = true; } else if (mPowerPluggedIn) { if (DEBUG_CHARGING_SPEED) { powerIndication += ", " + (mChargingWattage / 1000) + " mW"; } - mTextView.setTextColor(mInitialTextColorState); if (animate) { animateText(mTextView, powerIndication); } else { @@ -377,11 +374,11 @@ public class KeyguardIndicationController implements StateListener, && mKeyguardUpdateMonitor.getUserTrustIsManaged(userId) && !mKeyguardUpdateMonitor.getUserHasTrust(userId)) { mTextView.switchIndication(trustManagedIndication); - mTextView.setTextColor(mInitialTextColorState); } else { mTextView.switchIndication(mRestingIndication); - mTextView.setTextColor(mInitialTextColorState); } + mTextView.setTextColor(isError ? Utils.getColorError(mContext) + : mInitialTextColorState); } } @@ -532,7 +529,7 @@ public class KeyguardIndicationController implements StateListener, mStatusBarKeyguardViewManager.showBouncerMessage(message, mInitialTextColorState); } else if (mKeyguardUpdateMonitor.isScreenOn()) { showTransientIndication(mContext.getString(R.string.keyguard_unlock), - mInitialTextColorState, true /* hideOnScreenOff */); + false /* isError */, true /* hideOnScreenOff */); hideTransientIndicationDelayed(BaseKeyguardCallback.HIDE_DELAY_MS); } } @@ -551,7 +548,7 @@ public class KeyguardIndicationController implements StateListener, public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("KeyguardIndicationController:"); - pw.println(" mTransientTextColorState: " + mTransientTextColorState); + pw.println(" mTransientTextIsError: " + mTransientTextIsError); pw.println(" mInitialTextColorState: " + mInitialTextColorState); pw.println(" mPowerPluggedInWired: " + mPowerPluggedInWired); pw.println(" mPowerPluggedIn: " + mPowerPluggedIn); @@ -630,7 +627,7 @@ public class KeyguardIndicationController implements StateListener, mStatusBarKeyguardViewManager.showBouncerMessage(helpString, mInitialTextColorState); } else if (mKeyguardUpdateMonitor.isScreenOn()) { - showTransientIndication(helpString, mInitialTextColorState, showSwipeToUnlock); + showTransientIndication(helpString, false /* isError */, showSwipeToUnlock); if (!showSwipeToUnlock) { hideTransientIndicationDelayed(TRANSIENT_BIOMETRIC_ERROR_TIMEOUT); } @@ -704,14 +701,13 @@ public class KeyguardIndicationController implements StateListener, @Override public void onTrustAgentErrorMessage(CharSequence message) { - showTransientIndication(message, Utils.getColorError(mContext), - false /* hideOnScreenOff */); + showTransientIndication(message, true /* isError */, false /* hideOnScreenOff */); } @Override public void onScreenTurnedOn() { if (mMessageToShowOnScreenOn != null) { - showTransientIndication(mMessageToShowOnScreenOn, Utils.getColorError(mContext), + showTransientIndication(mMessageToShowOnScreenOn, true /* isError */, false /* hideOnScreenOff */); // We want to keep this message around in case the screen was off hideTransientIndicationDelayed(HIDE_DELAY_MS); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java index ea798928ebdd..d798692879f5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java @@ -410,12 +410,9 @@ public class NotificationShelf extends ActivatableNotificationView implements private void clipTransientViews() { for (int i = 0; i < mHostLayout.getTransientViewCount(); i++) { View transientView = mHostLayout.getTransientView(i); - if (transientView instanceof ExpandableNotificationRow) { - ExpandableNotificationRow transientRow = (ExpandableNotificationRow) transientView; - updateNotificationClipHeight(transientRow, getTranslationY(), -1); - } else { - Log.e(TAG, "NotificationShelf.clipTransientViews(): " - + "Trying to clip non-row transient view"); + if (transientView instanceof ExpandableView) { + ExpandableView transientExpandableView = (ExpandableView) transientView; + updateNotificationClipHeight(transientExpandableView, getTranslationY(), -1); } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ForegroundServiceDismissalFeatureController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ForegroundServiceDismissalFeatureController.kt index 571a85440b89..dfc2fc1c4584 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ForegroundServiceDismissalFeatureController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ForegroundServiceDismissalFeatureController.kt @@ -42,7 +42,7 @@ class ForegroundServiceDismissalFeatureController @Inject constructor( private fun isEnabled(proxy: DeviceConfigProxy): Boolean { if (sIsEnabled == null) { sIsEnabled = proxy.getBoolean( - DeviceConfig.NAMESPACE_SYSTEMUI, NOTIFICATIONS_ALLOW_FGS_DISMISSAL, true) + DeviceConfig.NAMESPACE_SYSTEMUI, NOTIFICATIONS_ALLOW_FGS_DISMISSAL, false) } return sIsEnabled!! diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.java index 5fd11fd3ef14..d38bc9f7a84d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.java @@ -67,6 +67,7 @@ public class NotificationSectionsManager implements StackScrollAlgorithm.Section private static final String TAG = "NotifSectionsManager"; private static final boolean DEBUG = false; + private static final boolean ENABLE_SNOOZED_CONVERSATION_HUB = false; private final ActivityStarter mActivityStarter; private final StatusBarStateController mStatusBarStateController; @@ -193,7 +194,9 @@ public class NotificationSectionsManager implements StackScrollAlgorithm.Section mPeopleHubSubscription.unsubscribe(); } mPeopleHubView = reinflateView(mPeopleHubView, layoutInflater, R.layout.people_strip); - mPeopleHubSubscription = mPeopleHubViewAdapter.bindView(mPeopleHubViewBoundary); + if (ENABLE_SNOOZED_CONVERSATION_HUB) { + mPeopleHubSubscription = mPeopleHubViewAdapter.bindView(mPeopleHubViewBoundary); + } if (mMediaControlsView != null) { mKeyguardMediaPlayer.unbindView(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java index adca10ff7677..8efda213d659 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java @@ -112,8 +112,10 @@ public class EdgeBackGestureHandler implements DisplayListener, private final int mLongPressTimeout; private final PointF mDownPoint = new PointF(); + private final PointF mEndPoint = new PointF(); private boolean mThresholdCrossed = false; private boolean mAllowGesture = false; + private boolean mLogGesture = false; private boolean mInRejectedExclusion = false; private boolean mIsOnLeftEdge; @@ -141,24 +143,16 @@ public class EdgeBackGestureHandler implements DisplayListener, mOverviewProxyService.notifyBackAction(true, (int) mDownPoint.x, (int) mDownPoint.y, false /* isButton */, !mIsOnLeftEdge); - int backtype = (mInRejectedExclusion - ? SysUiStatsLog.BACK_GESTURE__TYPE__COMPLETED_REJECTED : - SysUiStatsLog.BACK_GESTURE__TYPE__COMPLETED); - SysUiStatsLog.write(SysUiStatsLog.BACK_GESTURE_REPORTED_REPORTED, backtype, - (int) mDownPoint.y, mIsOnLeftEdge - ? SysUiStatsLog.BACK_GESTURE__X_LOCATION__LEFT : - SysUiStatsLog.BACK_GESTURE__X_LOCATION__RIGHT); + logGesture(mInRejectedExclusion + ? SysUiStatsLog.BACK_GESTURE__TYPE__COMPLETED_REJECTED + : SysUiStatsLog.BACK_GESTURE__TYPE__COMPLETED); } @Override public void cancelBack() { + logGesture(SysUiStatsLog.BACK_GESTURE__TYPE__INCOMPLETE); mOverviewProxyService.notifyBackAction(false, (int) mDownPoint.x, (int) mDownPoint.y, false /* isButton */, !mIsOnLeftEdge); - int backtype = SysUiStatsLog.BACK_GESTURE__TYPE__INCOMPLETE; - SysUiStatsLog.write(SysUiStatsLog.BACK_GESTURE_REPORTED_REPORTED, backtype, - (int) mDownPoint.y, mIsOnLeftEdge - ? SysUiStatsLog.BACK_GESTURE__X_LOCATION__LEFT : - SysUiStatsLog.BACK_GESTURE__X_LOCATION__RIGHT); } }; @@ -331,39 +325,55 @@ public class EdgeBackGestureHandler implements DisplayListener, } private boolean isWithinTouchRegion(int x, int y) { - // Disallow if too far from the edge - if (x > mEdgeWidthLeft + mLeftInset - && x < (mDisplaySize.x - mEdgeWidthRight - mRightInset)) { + // Disallow if we are in the bottom gesture area + if (y >= (mDisplaySize.y - mBottomGestureHeight)) { return false; } - // Disallow if we are in the bottom gesture area - if (y >= (mDisplaySize.y - mBottomGestureHeight)) { + // If the point is way too far (twice the margin), it is + // not interesting to us for logging purposes, nor we + // should process it. Simply return false and keep + // mLogGesture = false. + if (x > 2 * (mEdgeWidthLeft + mLeftInset) + && x < (mDisplaySize.x - 2 * (mEdgeWidthRight + mRightInset))) { return false; } + // Denotes whether we should proceed with the gesture. + // Even if it is false, we may want to log it assuming + // it is not invalid due to exclusion. + boolean withinRange = x <= mEdgeWidthLeft + mLeftInset + || x >= (mDisplaySize.x - mEdgeWidthRight - mRightInset); + // Always allow if the user is in a transient sticky immersive state if (mIsNavBarShownTransiently) { - return true; + mLogGesture = true; + return withinRange; } - boolean isInExcludedRegion = mExcludeRegion.contains(x, y); - if (isInExcludedRegion) { - mOverviewProxyService.notifyBackAction(false /* completed */, -1, -1, - false /* isButton */, !mIsOnLeftEdge); - SysUiStatsLog.write(SysUiStatsLog.BACK_GESTURE_REPORTED_REPORTED, - SysUiStatsLog.BACK_GESTURE__TYPE__INCOMPLETE_EXCLUDED, y, - mIsOnLeftEdge ? SysUiStatsLog.BACK_GESTURE__X_LOCATION__LEFT : - SysUiStatsLog.BACK_GESTURE__X_LOCATION__RIGHT); - } else { - mInRejectedExclusion = mUnrestrictedExcludeRegion.contains(x, y); + if (mExcludeRegion.contains(x, y)) { + if (withinRange) { + // Log as exclusion only if it is in acceptable range in the first place. + mOverviewProxyService.notifyBackAction( + false /* completed */, -1, -1, false /* isButton */, !mIsOnLeftEdge); + // We don't have the end point for logging purposes. + mEndPoint.x = -1; + mEndPoint.y = -1; + mLogGesture = true; + logGesture(SysUiStatsLog.BACK_GESTURE__TYPE__INCOMPLETE_EXCLUDED); + } + return false; } - return !isInExcludedRegion; + + mInRejectedExclusion = mUnrestrictedExcludeRegion.contains(x, y); + mLogGesture = true; + return withinRange; } private void cancelGesture(MotionEvent ev) { // Send action cancel to reset all the touch events mAllowGesture = false; + mLogGesture = false; mInRejectedExclusion = false; MotionEvent cancelEv = MotionEvent.obtain(ev); cancelEv.setAction(MotionEvent.ACTION_CANCEL); @@ -371,51 +381,86 @@ public class EdgeBackGestureHandler implements DisplayListener, cancelEv.recycle(); } + private void logGesture(int backType) { + if (!mLogGesture) { + return; + } + mLogGesture = false; + SysUiStatsLog.write(SysUiStatsLog.BACK_GESTURE_REPORTED_REPORTED, backType, + (int) mDownPoint.y, mIsOnLeftEdge + ? SysUiStatsLog.BACK_GESTURE__X_LOCATION__LEFT + : SysUiStatsLog.BACK_GESTURE__X_LOCATION__RIGHT, + (int) mDownPoint.x, (int) mDownPoint.y, + (int) mEndPoint.x, (int) mEndPoint.y, + mEdgeWidthLeft + mLeftInset, + mDisplaySize.x - (mEdgeWidthRight + mRightInset)); + } + private void onMotionEvent(MotionEvent ev) { int action = ev.getActionMasked(); if (action == MotionEvent.ACTION_DOWN) { // Verify if this is in within the touch region and we aren't in immersive mode, and // either the bouncer is showing or the notification panel is hidden mIsOnLeftEdge = ev.getX() <= mEdgeWidthLeft + mLeftInset; + mLogGesture = false; mInRejectedExclusion = false; mAllowGesture = !QuickStepContract.isBackGestureDisabled(mSysUiFlags) && isWithinTouchRegion((int) ev.getX(), (int) ev.getY()); if (mAllowGesture) { mEdgeBackPlugin.setIsLeftPanel(mIsOnLeftEdge); mEdgeBackPlugin.onMotionEvent(ev); - + } + if (mLogGesture) { mDownPoint.set(ev.getX(), ev.getY()); + mEndPoint.set(-1, -1); mThresholdCrossed = false; } - - } else if (mAllowGesture) { + } else if (mAllowGesture || mLogGesture) { if (!mThresholdCrossed) { + mEndPoint.x = (int) ev.getX(); + mEndPoint.y = (int) ev.getY(); if (action == MotionEvent.ACTION_POINTER_DOWN) { - // We do not support multi touch for back gesture - cancelGesture(ev); + if (mAllowGesture) { + logGesture(SysUiStatsLog.BACK_GESTURE__TYPE__INCOMPLETE_MULTI_TOUCH); + // We do not support multi touch for back gesture + cancelGesture(ev); + } + mLogGesture = false; return; } else if (action == MotionEvent.ACTION_MOVE) { if ((ev.getEventTime() - ev.getDownTime()) > mLongPressTimeout) { - cancelGesture(ev); + if (mAllowGesture) { + logGesture(SysUiStatsLog.BACK_GESTURE__TYPE__INCOMPLETE_LONG_PRESS); + cancelGesture(ev); + } + mLogGesture = false; return; } float dx = Math.abs(ev.getX() - mDownPoint.x); float dy = Math.abs(ev.getY() - mDownPoint.y); if (dy > dx && dy > mTouchSlop) { - cancelGesture(ev); + if (mAllowGesture) { + logGesture(SysUiStatsLog.BACK_GESTURE__TYPE__INCOMPLETE_VERTICAL_MOVE); + cancelGesture(ev); + } + mLogGesture = false; return; - } else if (dx > dy && dx > mTouchSlop) { - mThresholdCrossed = true; - // Capture inputs - mInputMonitor.pilferPointers(); + if (mAllowGesture) { + mThresholdCrossed = true; + // Capture inputs + mInputMonitor.pilferPointers(); + } else { + logGesture(SysUiStatsLog.BACK_GESTURE__TYPE__INCOMPLETE_FAR_FROM_EDGE); + } } } - } - // forward touch - mEdgeBackPlugin.onMotionEvent(ev); + if (mAllowGesture) { + // forward touch + mEdgeBackPlugin.onMotionEvent(ev); + } } Dependency.get(ProtoTracer.class).update(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java index 3074e33c46a8..f06cfec9480a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java @@ -203,6 +203,7 @@ public class KeyguardBouncer { Log.wtf(TAG, "onFullyShown when view was null"); } else { mKeyguardView.onResume(); + mRoot.announceForAccessibility(mKeyguardView.getAccessibilityTitleForCurrentMode()); } } @@ -247,6 +248,7 @@ public class KeyguardBouncer { if (mExpansion == EXPANSION_VISIBLE) { mKeyguardView.onResume(); mKeyguardView.resetSecurityContainer(); + showPromptReason(mBouncerPromptReason); } SysUiStatsLog.write(SysUiStatsLog.KEYGUARD_BOUNCER_STATE_CHANGED, SysUiStatsLog.KEYGUARD_BOUNCER_STATE_CHANGED__STATE__SHOWN); @@ -438,7 +440,6 @@ public class KeyguardBouncer { mStatusBarHeight = mRoot.getResources().getDimensionPixelOffset( com.android.systemui.R.dimen.status_bar_height); mRoot.setVisibility(View.INVISIBLE); - mRoot.setAccessibilityPaneTitle(mKeyguardView.getAccessibilityTitleForCurrentMode()); final WindowInsets rootInsets = mRoot.getRootWindowInsets(); if (rootInsets != null) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java index 496bf68e67a5..bf5900ff24bb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java @@ -67,9 +67,9 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC private final Handler mBgHandler; protected final Context mContext; - private int mLevel; - private boolean mPluggedIn; - private boolean mCharging; + protected int mLevel; + protected boolean mPluggedIn; + protected boolean mCharging; private boolean mCharged; private boolean mPowerSave; private boolean mAodPowerSave; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java index 9ce31d030c43..69eaaa4f54a9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java @@ -360,7 +360,7 @@ public class UserSwitcherController implements Dumpable { if (record.isGuest && record.info == null) { // No guest user. Create one. UserInfo guest = mUserManager.createGuest( - mContext, mContext.getString(R.string.guest_nickname)); + mContext, mContext.getString(com.android.settingslib.R.string.guest_nickname)); if (guest == null) { // Couldn't create guest, most likely because there already exists one, we just // haven't reloaded the user list yet. @@ -583,7 +583,7 @@ public class UserSwitcherController implements Dumpable { if (mUsers.isEmpty()) return null; UserRecord item = mUsers.get(0); if (item == null || item.info == null) return null; - if (item.isGuest) return context.getString(R.string.guest_nickname); + if (item.isGuest) return context.getString(com.android.settingslib.R.string.guest_nickname); return item.info.name; } @@ -671,10 +671,11 @@ public class UserSwitcherController implements Dumpable { public String getName(Context context, UserRecord item) { if (item.isGuest) { if (item.isCurrent) { - return context.getString(R.string.guest_exit_guest); + return context.getString(com.android.settingslib.R.string.guest_exit_guest); } else { return context.getString( - item.info == null ? R.string.guest_new_guest : R.string.guest_nickname); + item.info == null ? com.android.settingslib.R.string.guest_new_guest + : com.android.settingslib.R.string.guest_nickname); } } else if (item.isAddUser) { return context.getString(R.string.user_add_user); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java index 7c963869ed47..c2fc18fe21a1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java @@ -37,10 +37,10 @@ import java.util.Objects; public class WifiSignalController extends SignalController<WifiSignalController.WifiState, SignalController.IconGroup> { - private final boolean mHasMobileData; + private final boolean mHasMobileDataFeature; private final WifiStatusTracker mWifiTracker; - public WifiSignalController(Context context, boolean hasMobileData, + public WifiSignalController(Context context, boolean hasMobileDataFeature, CallbackHandler callbackHandler, NetworkControllerImpl networkController, WifiManager wifiManager) { super("WifiSignalController", context, NetworkCapabilities.TRANSPORT_WIFI, @@ -52,7 +52,7 @@ public class WifiSignalController extends mWifiTracker = new WifiStatusTracker(mContext, wifiManager, networkScoreManager, connectivityManager, this::handleStatusUpdated); mWifiTracker.setListening(true); - mHasMobileData = hasMobileData; + mHasMobileDataFeature = hasMobileDataFeature; if (wifiManager != null) { wifiManager.registerTrafficStateCallback(context.getMainExecutor(), new WifiTrafficStateCallback()); @@ -85,9 +85,10 @@ public class WifiSignalController extends // only show wifi in the cluster if connected or if wifi-only boolean visibleWhenEnabled = mContext.getResources().getBoolean( R.bool.config_showWifiIndicatorWhenEnabled); - boolean wifiVisible = mCurrentState.enabled - && ((mCurrentState.connected && mCurrentState.inetCondition == 1) - || !mHasMobileData || visibleWhenEnabled); + boolean wifiVisible = mCurrentState.enabled && ( + (mCurrentState.connected && mCurrentState.inetCondition == 1) + || !mHasMobileDataFeature || mWifiTracker.isDefaultNetwork + || visibleWhenEnabled); String wifiDesc = mCurrentState.connected ? mCurrentState.ssid : null; boolean ssidPresent = wifiVisible && mCurrentState.ssid != null; String contentDescription = getTextIfExists(getContentDescription()).toString(); diff --git a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java index 11885c55b51d..442c7eaae729 100644 --- a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java +++ b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java @@ -187,8 +187,9 @@ public class StorageNotification extends SystemUI { } private void updateMissingPrivateVolumes() { - if (isTv()) { + if (isTv() || isAutomotive()) { // On TV, TvSettings displays a modal full-screen activity in this case. + // Not applicable for automotive. return; } @@ -595,6 +596,9 @@ public class StorageNotification extends SystemUI { if (isTv()) { intent.setPackage("com.android.tv.settings"); intent.setAction("com.android.tv.settings.action.NEW_STORAGE"); + } else if (isAutomotive()) { + // TODO(b/151671685): add intent to handle unsupported usb + return null; } else { intent.setClassName("com.android.settings", "com.android.settings.deviceinfo.StorageWizardInit"); @@ -611,6 +615,9 @@ public class StorageNotification extends SystemUI { if (isTv()) { intent.setPackage("com.android.tv.settings"); intent.setAction("com.android.tv.settings.action.NEW_STORAGE"); + } else if (isAutomotive()) { + // TODO(b/151671685): add intent to handle unmountable usb + return null; } else { intent.setClassName("com.android.settings", "com.android.settings.deviceinfo.StorageWizardInit"); @@ -669,6 +676,9 @@ public class StorageNotification extends SystemUI { if (isTv()) { intent.setPackage("com.android.tv.settings"); intent.setAction(Settings.ACTION_INTERNAL_STORAGE_SETTINGS); + } else if (isAutomotive()) { + // TODO(b/151671685): add volume settings intent for automotive + return null; } else { switch (vol.getType()) { case VolumeInfo.TYPE_PRIVATE: @@ -700,7 +710,7 @@ public class StorageNotification extends SystemUI { } private PendingIntent buildForgetPendingIntent(VolumeRecord rec) { - // Not used on TV + // Not used on TV and Automotive final Intent intent = new Intent(); intent.setClassName("com.android.settings", "com.android.settings.Settings$PrivateVolumeForgetActivity"); @@ -716,6 +726,9 @@ public class StorageNotification extends SystemUI { if (isTv()) { intent.setPackage("com.android.tv.settings"); intent.setAction("com.android.tv.settings.action.MIGRATE_STORAGE"); + } else if (isAutomotive()) { + // TODO(b/151671685): add storage migrate intent for automotive + return null; } else { intent.setClassName("com.android.settings", "com.android.settings.deviceinfo.StorageWizardMigrateProgress"); @@ -735,6 +748,9 @@ public class StorageNotification extends SystemUI { if (isTv()) { intent.setPackage("com.android.tv.settings"); intent.setAction("com.android.tv.settings.action.MOVE_APP"); + } else if (isAutomotive()) { + // TODO(b/151671685): add storage move intent for automotive + return null; } else { intent.setClassName("com.android.settings", "com.android.settings.deviceinfo.StorageWizardMoveProgress"); @@ -750,6 +766,9 @@ public class StorageNotification extends SystemUI { if (isTv()) { intent.setPackage("com.android.tv.settings"); intent.setAction(Settings.ACTION_INTERNAL_STORAGE_SETTINGS); + } else if (isAutomotive()) { + // TODO(b/151671685): add storage ready intent for automotive + return null; } else { intent.setClassName("com.android.settings", "com.android.settings.deviceinfo.StorageWizardReady"); diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java index 9d9ba1bc91b9..eecde7218d28 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java @@ -52,6 +52,7 @@ import android.hardware.face.FaceManager; import android.hardware.fingerprint.FingerprintManager; import android.os.Bundle; import android.os.Handler; +import android.os.IRemoteCallback; import android.os.UserHandle; import android.os.UserManager; import android.telephony.ServiceState; @@ -63,6 +64,7 @@ import android.testing.TestableContext; import android.testing.TestableLooper; import com.android.internal.telephony.TelephonyIntents; +import com.android.keyguard.KeyguardUpdateMonitor.BiometricAuthenticated; import com.android.systemui.SysuiTestCase; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dump.DumpManager; @@ -506,6 +508,24 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { } @Test + public void testBiometricsCleared_whenUserSwitches() throws Exception { + final IRemoteCallback reply = new IRemoteCallback.Stub() { + @Override + public void sendResult(Bundle data) {} // do nothing + }; + final BiometricAuthenticated dummyAuthentication = + new BiometricAuthenticated(true /* authenticated */, true /* strong */); + mKeyguardUpdateMonitor.mUserFaceAuthenticated.put(0 /* user */, dummyAuthentication); + mKeyguardUpdateMonitor.mUserFingerprintAuthenticated.put(0 /* user */, dummyAuthentication); + assertThat(mKeyguardUpdateMonitor.mUserFingerprintAuthenticated.size()).isEqualTo(1); + assertThat(mKeyguardUpdateMonitor.mUserFaceAuthenticated.size()).isEqualTo(1); + + mKeyguardUpdateMonitor.handleUserSwitching(10 /* user */, reply); + assertThat(mKeyguardUpdateMonitor.mUserFingerprintAuthenticated.size()).isEqualTo(0); + assertThat(mKeyguardUpdateMonitor.mUserFaceAuthenticated.size()).isEqualTo(0); + } + + @Test public void testGetUserCanSkipBouncer_whenTrust() { int user = KeyguardUpdateMonitor.getCurrentUser(); mKeyguardUpdateMonitor.onTrustChanged(true /* enabled */, user, 0 /* flags */); diff --git a/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java b/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java index 678cfd23e3a5..475023e2506d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java @@ -134,7 +134,7 @@ public class ImageWallpaperTest extends SysuiTestCase { return new ImageWallpaperRenderer(mMockContext, engine) { @Override public void startProcessingImage() { - loadBitmap(); + // No - Op } }; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java index b6537bf8c615..b9ddff3a59ea 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java @@ -32,6 +32,7 @@ import static org.junit.Assert.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -52,6 +53,7 @@ import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; import android.view.Display; import android.view.DisplayCutout; +import android.view.View; import android.view.WindowManager; import android.view.WindowMetrics; @@ -213,6 +215,78 @@ public class ScreenDecorationsTest extends SysuiTestCase { } @Test + public void testRoundingTopBottomRadius_OnTopBottomOverlay() { + final int testTopRadius = 1; + final int testBottomRadius = 5; + mContext.getOrCreateTestableResources().addOverride( + com.android.internal.R.bool.config_fillMainBuiltInDisplayCutout, false); + mContext.getOrCreateTestableResources().addOverride( + com.android.internal.R.dimen.rounded_corner_radius, testTopRadius); + mContext.getOrCreateTestableResources().addOverride( + com.android.internal.R.dimen.rounded_corner_radius_top, testTopRadius); + mContext.getOrCreateTestableResources().addOverride( + com.android.internal.R.dimen.rounded_corner_radius_bottom, testBottomRadius); + mContext.getOrCreateTestableResources() + .addOverride(R.bool.config_roundedCornerMultipleRadius, false); + + // no cutout + doReturn(null).when(mScreenDecorations).getCutout(); + + mScreenDecorations.start(); + View leftRoundedCorner = + mScreenDecorations.mOverlays[BOUNDS_POSITION_TOP].findViewById(R.id.left); + View rightRoundedCorner = + mScreenDecorations.mOverlays[BOUNDS_POSITION_TOP].findViewById(R.id.right); + verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testTopRadius); + verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testTopRadius); + leftRoundedCorner = + mScreenDecorations.mOverlays[BOUNDS_POSITION_BOTTOM].findViewById(R.id.left); + rightRoundedCorner = + mScreenDecorations.mOverlays[BOUNDS_POSITION_BOTTOM].findViewById(R.id.right); + verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testBottomRadius); + verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testBottomRadius); + } + + @Test + public void testRoundingTopBottomRadius_OnLeftRightOverlay() { + final int testTopRadius = 1; + final int testBottomRadius = 5; + mContext.getOrCreateTestableResources().addOverride( + com.android.internal.R.bool.config_fillMainBuiltInDisplayCutout, false); + mContext.getOrCreateTestableResources().addOverride( + com.android.internal.R.dimen.rounded_corner_radius, testTopRadius); + mContext.getOrCreateTestableResources().addOverride( + com.android.internal.R.dimen.rounded_corner_radius_top, testTopRadius); + mContext.getOrCreateTestableResources().addOverride( + com.android.internal.R.dimen.rounded_corner_radius_bottom, testBottomRadius); + mContext.getOrCreateTestableResources() + .addOverride(R.bool.config_roundedCornerMultipleRadius, false); + + // left cutout + doReturn(new DisplayCutout( + Insets.of(0, 10, 0, 0), + new Rect(0, 200, 1, 210), + ZERO_RECT, + ZERO_RECT, + ZERO_RECT, + Insets.NONE)).when(mScreenDecorations).getCutout(); + + mScreenDecorations.start(); + View leftRoundedCorner = + mScreenDecorations.mOverlays[BOUNDS_POSITION_LEFT].findViewById(R.id.left); + View rightRoundedCorner = + mScreenDecorations.mOverlays[BOUNDS_POSITION_LEFT].findViewById(R.id.right); + verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testTopRadius); + verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testBottomRadius); + leftRoundedCorner = + mScreenDecorations.mOverlays[BOUNDS_POSITION_RIGHT].findViewById(R.id.left); + rightRoundedCorner = + mScreenDecorations.mOverlays[BOUNDS_POSITION_RIGHT].findViewById(R.id.right); + verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testTopRadius); + verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testBottomRadius); + } + + @Test public void testRoundingMultipleRadius_NoCutout() { final VectorDrawable d = (VectorDrawable) mContext.getDrawable(R.drawable.rounded); final int multipleRadiusSize = Math.max(d.getIntrinsicWidth(), d.getIntrinsicHeight()); diff --git a/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java index d973bb12071a..50b7af27f7d9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java @@ -32,7 +32,6 @@ import static org.mockito.Mockito.verify; import static java.lang.Thread.sleep; import android.app.AppOpsManager; -import android.content.pm.PackageManager; import android.os.UserHandle; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; @@ -61,8 +60,6 @@ public class AppOpsControllerTest extends SysuiTestCase { @Mock private AppOpsManager mAppOpsManager; @Mock - private PackageManager mPackageManager; - @Mock private AppOpsController.Callback mCallback; @Mock private AppOpsControllerImpl.H mMockHandler; @@ -79,10 +76,6 @@ public class AppOpsControllerTest extends SysuiTestCase { getContext().addMockSystemService(AppOpsManager.class, mAppOpsManager); - // All permissions of TEST_UID and TEST_UID_OTHER are user sensitive. None of - // TEST_UID_NON_USER_SENSITIVE are user sensitive. - getContext().setMockPackageManager(mPackageManager); - mController = new AppOpsControllerImpl(mContext, mTestableLooper.getLooper(), mDumpManager); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java index 1db8e4c3d73e..74d0610ee0d6 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java @@ -34,6 +34,7 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.hardware.biometrics.BiometricAuthenticator; +import android.hardware.biometrics.BiometricConstants; import android.hardware.biometrics.BiometricPrompt; import android.os.Bundle; import android.os.IBinder; @@ -89,6 +90,8 @@ public class AuthContainerViewTest extends SysuiTestCase { mAuthContainer.mBiometricCallback.onAction( AuthBiometricView.Callback.ACTION_USER_CANCELED); + verify(mCallback).onSystemEvent(eq( + BiometricConstants.BIOMETRIC_SYSTEM_EVENT_EARLY_USER_CANCEL)); verify(mCallback).onDismissed( eq(AuthDialogCallback.DISMISSED_USER_CANCELED), eq(null) /* credentialAttestation */); diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java index 4f16031741bc..6f3fbb9cbd2c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java @@ -92,6 +92,8 @@ import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.util.FloatingContentCoordinator; import com.android.systemui.util.InjectionInflationController; +import com.google.common.collect.ImmutableList; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -318,6 +320,23 @@ public class BubbleControllerTest extends SysuiTestCase { } @Test + public void testPromoteBubble_autoExpand() { + mBubbleController.updateBubble(mRow2.getEntry()); + mBubbleController.updateBubble(mRow.getEntry()); + mBubbleController.removeBubble( + mRow.getEntry(), BubbleController.DISMISS_USER_GESTURE); + + Bubble b = mBubbleData.getOverflowBubbleWithKey(mRow.getEntry().getKey()); + assertThat(mBubbleData.getOverflowBubbles()).isEqualTo(ImmutableList.of(b)); + + Bubble b2 = mBubbleData.getBubbleWithKey(mRow2.getEntry().getKey()); + assertThat(mBubbleData.getSelectedBubble()).isEqualTo(b2); + + mBubbleController.promoteBubbleFromOverflow(b); + assertThat(mBubbleData.getSelectedBubble()).isEqualTo(b); + } + + @Test public void testRemoveBubble_withDismissedNotif() { mEntryListener.onPendingEntryAdded(mRow.getEntry()); mBubbleController.updateBubble(mRow.getEntry()); diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/AuxiliaryPersistenceWrapperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/AuxiliaryPersistenceWrapperTest.kt new file mode 100644 index 000000000000..129fe9a36a0d --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/AuxiliaryPersistenceWrapperTest.kt @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.controls.controller + +import android.content.ComponentName +import android.testing.AndroidTestingRunner +import androidx.test.filters.SmallTest +import com.android.systemui.SysuiTestCase +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.ArgumentMatchers +import org.mockito.Mock +import org.mockito.Mockito +import org.mockito.Mockito.`when` +import org.mockito.Mockito.inOrder +import org.mockito.Mockito.mock +import org.mockito.Mockito.never +import org.mockito.Mockito.verify +import org.mockito.MockitoAnnotations +import java.io.File + +@SmallTest +@RunWith(AndroidTestingRunner::class) +class AuxiliaryPersistenceWrapperTest : SysuiTestCase() { + + companion object { + fun <T> any(): T = Mockito.any() + private val TEST_COMPONENT = ComponentName.unflattenFromString("test_pkg/.test_cls")!! + private val TEST_COMPONENT_OTHER = + ComponentName.unflattenFromString("test_pkg/.test_other")!! + } + + @Mock + private lateinit var persistenceWrapper: ControlsFavoritePersistenceWrapper + @Mock + private lateinit var structure1: StructureInfo + @Mock + private lateinit var structure2: StructureInfo + @Mock + private lateinit var structure3: StructureInfo + + private lateinit var auxiliaryFileWrapper: AuxiliaryPersistenceWrapper + + @Before + fun setUp() { + MockitoAnnotations.initMocks(this) + + `when`(structure1.componentName).thenReturn(TEST_COMPONENT) + `when`(structure2.componentName).thenReturn(TEST_COMPONENT_OTHER) + `when`(structure3.componentName).thenReturn(TEST_COMPONENT) + + `when`(persistenceWrapper.fileExists).thenReturn(true) + `when`(persistenceWrapper.readFavorites()).thenReturn( + listOf(structure1, structure2, structure3)) + + auxiliaryFileWrapper = AuxiliaryPersistenceWrapper(persistenceWrapper) + } + + @Test + fun testInitialStructures() { + val expected = listOf(structure1, structure2, structure3) + assertEquals(expected, auxiliaryFileWrapper.favorites) + } + + @Test + fun testInitialize_fileDoesNotExist() { + `when`(persistenceWrapper.fileExists).thenReturn(false) + auxiliaryFileWrapper.initialize() + assertTrue(auxiliaryFileWrapper.favorites.isEmpty()) + } + + @Test + fun testGetCachedValues_component() { + val cached = auxiliaryFileWrapper.getCachedFavoritesAndRemoveFor(TEST_COMPONENT) + val expected = listOf(structure1, structure3) + + assertEquals(expected, cached) + } + + @Test + fun testGetCachedValues_componentOther() { + val cached = auxiliaryFileWrapper.getCachedFavoritesAndRemoveFor(TEST_COMPONENT_OTHER) + val expected = listOf(structure2) + + assertEquals(expected, cached) + } + + @Test + fun testGetCachedValues_component_removed() { + auxiliaryFileWrapper.getCachedFavoritesAndRemoveFor(TEST_COMPONENT) + verify(persistenceWrapper).storeFavorites(listOf(structure2)) + } + + @Test + fun testChangeFile() { + auxiliaryFileWrapper.changeFile(mock(File::class.java)) + val inOrder = inOrder(persistenceWrapper) + inOrder.verify(persistenceWrapper).changeFileAndBackupManager( + any(), ArgumentMatchers.isNull()) + inOrder.verify(persistenceWrapper).readFavorites() + } + + @Test + fun testFileRemoved() { + `when`(persistenceWrapper.fileExists).thenReturn(false) + + assertEquals(emptyList<StructureInfo>(), + auxiliaryFileWrapper.getCachedFavoritesAndRemoveFor(TEST_COMPONENT)) + assertEquals(emptyList<StructureInfo>(), + auxiliaryFileWrapper.getCachedFavoritesAndRemoveFor(TEST_COMPONENT_OTHER)) + + verify(persistenceWrapper, never()).storeFavorites(ArgumentMatchers.anyList()) + } +}
\ No newline at end of file diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt index d5a654dc2b6f..8630570c4e70 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt @@ -31,6 +31,7 @@ import android.service.controls.actions.ControlAction import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase +import com.android.systemui.backup.BackupHelper import com.android.systemui.broadcast.BroadcastDispatcher import com.android.systemui.controls.ControlStatus import com.android.systemui.controls.ControlsServiceInfo @@ -39,6 +40,7 @@ import com.android.systemui.controls.ui.ControlsUiController import com.android.systemui.dump.DumpManager import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.time.FakeSystemClock +import org.junit.After import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertNotEquals @@ -57,6 +59,7 @@ import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.reset import org.mockito.Mockito.verify +import org.mockito.Mockito.verifyNoMoreInteractions import org.mockito.MockitoAnnotations import java.util.Optional import java.util.function.Consumer @@ -74,6 +77,8 @@ class ControlsControllerImplTest : SysuiTestCase() { @Mock private lateinit var persistenceWrapper: ControlsFavoritePersistenceWrapper @Mock + private lateinit var auxiliaryPersistenceWrapper: AuxiliaryPersistenceWrapper + @Mock private lateinit var broadcastDispatcher: BroadcastDispatcher @Mock private lateinit var listingController: ControlsListingController @@ -154,6 +159,8 @@ class ControlsControllerImplTest : SysuiTestCase() { Optional.of(persistenceWrapper), mock(DumpManager::class.java) ) + controller.auxiliaryPersistenceWrapper = auxiliaryPersistenceWrapper + assertTrue(controller.available) verify(broadcastDispatcher).registerReceiver( capture(broadcastReceiverCaptor), any(), any(), eq(UserHandle.ALL)) @@ -161,7 +168,12 @@ class ControlsControllerImplTest : SysuiTestCase() { verify(listingController).addCallback(capture(listingCallbackCaptor)) } - private fun builderFromInfo( + @After + fun tearDown() { + controller.destroy() + } + + private fun statelessBuilderFromInfo( controlInfo: ControlInfo, structure: CharSequence = "" ): Control.StatelessBuilder { @@ -170,6 +182,15 @@ class ControlsControllerImplTest : SysuiTestCase() { .setSubtitle(controlInfo.controlSubtitle).setStructure(structure) } + private fun statefulBuilderFromInfo( + controlInfo: ControlInfo, + structure: CharSequence = "" + ): Control.StatefulBuilder { + return Control.StatefulBuilder(controlInfo.controlId, pendingIntent) + .setDeviceType(controlInfo.deviceType).setTitle(controlInfo.controlTitle) + .setSubtitle(controlInfo.controlSubtitle).setStructure(structure) + } + @Test fun testStartOnUser() { assertEquals(user, controller.currentUserId) @@ -236,7 +257,7 @@ class ControlsControllerImplTest : SysuiTestCase() { @Test fun testLoadForComponent_noFavorites() { var loaded = false - val control = builderFromInfo(TEST_CONTROL_INFO).build() + val control = statelessBuilderFromInfo(TEST_CONTROL_INFO).build() controller.loadForComponent(TEST_COMPONENT, Consumer { data -> val controls = data.allControls @@ -263,8 +284,8 @@ class ControlsControllerImplTest : SysuiTestCase() { @Test fun testLoadForComponent_favorites() { var loaded = false - val control = builderFromInfo(TEST_CONTROL_INFO).build() - val control2 = builderFromInfo(TEST_CONTROL_INFO_2).build() + val control = statelessBuilderFromInfo(TEST_CONTROL_INFO).build() + val control2 = statelessBuilderFromInfo(TEST_CONTROL_INFO_2).build() controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO_2) delayableExecutor.runAllReady() @@ -307,6 +328,7 @@ class ControlsControllerImplTest : SysuiTestCase() { assertEquals(1, controls.size) val controlStatus = controls[0] assertEquals(TEST_CONTROL_ID, controlStatus.control.controlId) + assertEquals(TEST_STRUCTURE_INFO.structure, controlStatus.control.structure) assertTrue(controlStatus.favorite) assertTrue(controlStatus.removed) @@ -337,6 +359,7 @@ class ControlsControllerImplTest : SysuiTestCase() { assertEquals(1, controls.size) val controlStatus = controls[0] assertEquals(TEST_CONTROL_ID, controlStatus.control.controlId) + assertEquals(TEST_STRUCTURE_INFO.structure, controlStatus.control.structure) assertTrue(controlStatus.favorite) assertFalse(controlStatus.removed) @@ -443,7 +466,7 @@ class ControlsControllerImplTest : SysuiTestCase() { delayableExecutor.runAllReady() val newControlInfo = TEST_CONTROL_INFO.copy(controlTitle = TEST_CONTROL_TITLE_2) - val control = builderFromInfo(newControlInfo).build() + val control = statelessBuilderFromInfo(newControlInfo).build() controller.loadForComponent(TEST_COMPONENT, Consumer {}) @@ -459,11 +482,11 @@ class ControlsControllerImplTest : SysuiTestCase() { } @Test - fun testFavoriteInformationModifiedOnRefresh() { + fun testFavoriteInformationModifiedOnRefreshWithOkStatus() { controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) val newControlInfo = TEST_CONTROL_INFO.copy(controlTitle = TEST_CONTROL_TITLE_2) - val control = builderFromInfo(newControlInfo).build() + val control = statefulBuilderFromInfo(newControlInfo).setStatus(Control.STATUS_OK).build() controller.refreshStatus(TEST_COMPONENT, control) @@ -475,6 +498,23 @@ class ControlsControllerImplTest : SysuiTestCase() { } @Test + fun testFavoriteInformationNotModifiedOnRefreshWithNonOkStatus() { + controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) + + val newControlInfo = TEST_CONTROL_INFO.copy(controlTitle = TEST_CONTROL_TITLE_2) + val control = statefulBuilderFromInfo(newControlInfo).setStatus(Control.STATUS_ERROR) + .build() + + controller.refreshStatus(TEST_COMPONENT, control) + + delayableExecutor.runAllReady() + + val favorites = controller.getFavorites().flatMap { it.controls } + assertEquals(1, favorites.size) + assertEquals(TEST_CONTROL_INFO, favorites[0]) + } + + @Test fun testSwitchUsers() { controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) delayableExecutor.runAllReady() @@ -489,8 +529,9 @@ class ControlsControllerImplTest : SysuiTestCase() { broadcastReceiverCaptor.value.onReceive(mContext, intent) - verify(persistenceWrapper).changeFile(any()) + verify(persistenceWrapper).changeFileAndBackupManager(any(), any()) verify(persistenceWrapper).readFavorites() + verify(auxiliaryPersistenceWrapper).changeFile(any()) verify(bindingController).changeUser(UserHandle.of(otherUser)) verify(listingController).changeUser(UserHandle.of(otherUser)) assertTrue(controller.getFavorites().isEmpty()) @@ -740,6 +781,41 @@ class ControlsControllerImplTest : SysuiTestCase() { } @Test + fun testExistingPackage_removedFromCache() { + `when`(auxiliaryPersistenceWrapper.favorites).thenReturn( + listOf(TEST_STRUCTURE_INFO, TEST_STRUCTURE_INFO_2)) + + controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) + delayableExecutor.runAllReady() + + val serviceInfo = mock(ServiceInfo::class.java) + `when`(serviceInfo.componentName).thenReturn(TEST_COMPONENT) + val info = ControlsServiceInfo(mContext, serviceInfo) + + listingCallbackCaptor.value.onServicesUpdated(listOf(info)) + delayableExecutor.runAllReady() + + verify(auxiliaryPersistenceWrapper).getCachedFavoritesAndRemoveFor(TEST_COMPONENT) + } + + @Test + fun testAddedPackage_requestedFromCache() { + `when`(auxiliaryPersistenceWrapper.favorites).thenReturn( + listOf(TEST_STRUCTURE_INFO, TEST_STRUCTURE_INFO_2)) + + val serviceInfo = mock(ServiceInfo::class.java) + `when`(serviceInfo.componentName).thenReturn(TEST_COMPONENT) + val info = ControlsServiceInfo(mContext, serviceInfo) + + listingCallbackCaptor.value.onServicesUpdated(listOf(info)) + delayableExecutor.runAllReady() + + verify(auxiliaryPersistenceWrapper).getCachedFavoritesAndRemoveFor(TEST_COMPONENT) + verify(auxiliaryPersistenceWrapper, never()) + .getCachedFavoritesAndRemoveFor(TEST_COMPONENT_2) + } + + @Test fun testListingCallbackNotListeningWhileReadingFavorites() { val intent = Intent(Intent.ACTION_USER_SWITCHED).apply { putExtra(Intent.EXTRA_USER_HANDLE, otherUser) @@ -760,7 +836,8 @@ class ControlsControllerImplTest : SysuiTestCase() { @Test fun testSeedFavoritesForComponent() { var succeeded = false - val control = builderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure).build() + val control = statelessBuilderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure) + .build() controller.seedFavoritesForComponent(TEST_COMPONENT, Consumer { accepted -> succeeded = accepted @@ -801,7 +878,8 @@ class ControlsControllerImplTest : SysuiTestCase() { fun testSeedFavoritesForComponent_inProgressCallback() { var succeeded = false var seeded = false - val control = builderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure).build() + val control = statelessBuilderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure) + .build() controller.seedFavoritesForComponent(TEST_COMPONENT, Consumer { accepted -> succeeded = accepted @@ -822,4 +900,40 @@ class ControlsControllerImplTest : SysuiTestCase() { assertTrue(succeeded) assertTrue(seeded) } + + @Test + fun testRestoreReceiver_loadsAuxiliaryData() { + val receiver = controller.restoreFinishedReceiver + + val structure1 = mock(StructureInfo::class.java) + val structure2 = mock(StructureInfo::class.java) + val listOfStructureInfo = listOf(structure1, structure2) + `when`(auxiliaryPersistenceWrapper.favorites).thenReturn(listOfStructureInfo) + + val intent = Intent(BackupHelper.ACTION_RESTORE_FINISHED) + intent.putExtra(Intent.EXTRA_USER_ID, context.userId) + receiver.onReceive(context, intent) + delayableExecutor.runAllReady() + + val inOrder = inOrder(auxiliaryPersistenceWrapper, persistenceWrapper) + inOrder.verify(auxiliaryPersistenceWrapper).initialize() + inOrder.verify(auxiliaryPersistenceWrapper).favorites + inOrder.verify(persistenceWrapper).storeFavorites(listOfStructureInfo) + inOrder.verify(persistenceWrapper).readFavorites() + } + + @Test + fun testRestoreReceiver_noActionOnWrongUser() { + val receiver = controller.restoreFinishedReceiver + + reset(persistenceWrapper) + reset(auxiliaryPersistenceWrapper) + val intent = Intent(BackupHelper.ACTION_RESTORE_FINISHED) + intent.putExtra(Intent.EXTRA_USER_ID, context.userId + 1) + receiver.onReceive(context, intent) + delayableExecutor.runAllReady() + + verifyNoMoreInteractions(persistenceWrapper) + verifyNoMoreInteractions(auxiliaryPersistenceWrapper) + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapperTest.kt index 4f6cbe11149a..861c6207f5b0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapperTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapperTest.kt @@ -48,7 +48,7 @@ class ControlsFavoritePersistenceWrapperTest : SysuiTestCase() { @After fun tearDown() { - if (file.exists() ?: false) { + if (file.exists()) { file.delete() } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/DeletionJobServiceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/DeletionJobServiceTest.kt new file mode 100644 index 000000000000..4439586497ff --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/DeletionJobServiceTest.kt @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.controls.controller + +import android.app.job.JobParameters +import android.content.Context +import android.testing.AndroidTestingRunner +import androidx.test.filters.SmallTest +import com.android.systemui.SysuiTestCase +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mock +import org.mockito.Mockito.`when` +import org.mockito.Mockito.mock +import org.mockito.Mockito.verify +import org.mockito.MockitoAnnotations +import java.util.concurrent.TimeUnit + +@SmallTest +@RunWith(AndroidTestingRunner::class) +class DeletionJobServiceTest : SysuiTestCase() { + + @Mock + private lateinit var context: Context + + private lateinit var service: AuxiliaryPersistenceWrapper.DeletionJobService + + @Before + fun setUp() { + MockitoAnnotations.initMocks(this) + + service = AuxiliaryPersistenceWrapper.DeletionJobService() + service.attachContext(context) + } + + @Test + fun testOnStartJob() { + // false means job is terminated + assertFalse(service.onStartJob(mock(JobParameters::class.java))) + verify(context).deleteFile(AuxiliaryPersistenceWrapper.AUXILIARY_FILE_NAME) + } + + @Test + fun testOnStopJob() { + // true means run after backoff + assertTrue(service.onStopJob(mock(JobParameters::class.java))) + } + + @Test + fun testJobHasRightParameters() { + val userId = 10 + `when`(context.userId).thenReturn(userId) + `when`(context.packageName).thenReturn(mContext.packageName) + + val jobInfo = AuxiliaryPersistenceWrapper.DeletionJobService.getJobForContext(context) + assertEquals( + AuxiliaryPersistenceWrapper.DeletionJobService.DELETE_FILE_JOB_ID + userId, jobInfo.id) + assertTrue(jobInfo.isPersisted) + assertEquals(TimeUnit.DAYS.toMillis(7), jobInfo.minLatencyMillis) + } +}
\ No newline at end of file diff --git a/packages/SystemUI/tests/src/com/android/systemui/glwallpaper/ImageWallpaperRendererTest.java b/packages/SystemUI/tests/src/com/android/systemui/glwallpaper/ImageWallpaperRendererTest.java index d881fd51712d..d61be37692c4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/glwallpaper/ImageWallpaperRendererTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/glwallpaper/ImageWallpaperRendererTest.java @@ -92,6 +92,7 @@ public class ImageWallpaperRendererTest extends SysuiTestCase { mWpmSpy.setBitmap(p3Bitmap); ImageWallpaperRenderer rendererP3 = new ImageWallpaperRenderer(mContext, mSurfaceProxy); + rendererP3.reportSurfaceSize(); assertThat(rendererP3.isWcgContent()).isTrue(); mWpmSpy.setBitmap(srgbBitmap); diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java index aeb31e11be23..11649ca34709 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java @@ -76,11 +76,11 @@ public class ScreenshotNotificationSmartActionsTest extends SysuiTestCase { when(bitmap.getConfig()).thenReturn(Bitmap.Config.HARDWARE); ScreenshotNotificationSmartActionsProvider smartActionsProvider = mock( ScreenshotNotificationSmartActionsProvider.class); - when(smartActionsProvider.getActions(any(), any(), any(), + when(smartActionsProvider.getActions(any(), any(), any(), any(), eq(false))).thenThrow( RuntimeException.class); CompletableFuture<List<Notification.Action>> smartActionsFuture = - ScreenshotSmartActions.getSmartActionsFuture("", bitmap, + ScreenshotSmartActions.getSmartActionsFuture("", "", bitmap, smartActionsProvider, true, false); Assert.assertNotNull(smartActionsFuture); List<Notification.Action> smartActions = smartActionsFuture.get(5, TimeUnit.MILLISECONDS); @@ -98,7 +98,7 @@ public class ScreenshotNotificationSmartActionsTest extends SysuiTestCase { when(smartActionsFuture.get(timeoutMs, TimeUnit.MILLISECONDS)).thenThrow( RuntimeException.class); List<Notification.Action> actions = ScreenshotSmartActions.getSmartActions( - "", smartActionsFuture, timeoutMs, mSmartActionsProvider); + "", "", smartActionsFuture, timeoutMs, mSmartActionsProvider); Assert.assertEquals(Collections.emptyList(), actions); } @@ -119,9 +119,9 @@ public class ScreenshotNotificationSmartActionsTest extends SysuiTestCase { Bitmap bitmap = mock(Bitmap.class); when(bitmap.getConfig()).thenReturn(Bitmap.Config.RGB_565); CompletableFuture<List<Notification.Action>> smartActionsFuture = - ScreenshotSmartActions.getSmartActionsFuture("", bitmap, + ScreenshotSmartActions.getSmartActionsFuture("", "", bitmap, mSmartActionsProvider, true, true); - verify(mSmartActionsProvider, never()).getActions(any(), any(), any(), + verify(mSmartActionsProvider, never()).getActions(any(), any(), any(), any(), eq(false)); Assert.assertNotNull(smartActionsFuture); List<Notification.Action> smartActions = smartActionsFuture.get(5, TimeUnit.MILLISECONDS); @@ -133,10 +133,10 @@ public class ScreenshotNotificationSmartActionsTest extends SysuiTestCase { public void testScreenshotNotificationSmartActionsProviderInvokedOnce() { Bitmap bitmap = mock(Bitmap.class); when(bitmap.getConfig()).thenReturn(Bitmap.Config.HARDWARE); - ScreenshotSmartActions.getSmartActionsFuture("", bitmap, mSmartActionsProvider, + ScreenshotSmartActions.getSmartActionsFuture("", "", bitmap, mSmartActionsProvider, true, true); verify(mSmartActionsProvider, times(1)) - .getActions(any(), any(), any(), eq(true)); + .getActions(any(), any(), any(), any(), eq(true)); } // Tests for a hardware bitmap, a completed future is returned. @@ -149,7 +149,7 @@ public class ScreenshotNotificationSmartActionsTest extends SysuiTestCase { SystemUIFactory.getInstance().createScreenshotNotificationSmartActionsProvider( mContext, null, mHandler); CompletableFuture<List<Notification.Action>> smartActionsFuture = - ScreenshotSmartActions.getSmartActionsFuture("", bitmap, + ScreenshotSmartActions.getSmartActionsFuture("", "", bitmap, actionsProvider, true, true); Assert.assertNotNull(smartActionsFuture); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java index fb401778d891..be5b190b54a5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java @@ -192,8 +192,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { assertThat(mTextView.getText()).isEqualTo( mContext.getResources().getString(R.string.dock_alignment_slow_charging)); - assertThat(mTextView.getCurrentTextColor()).isEqualTo( - Utils.getColorError(mContext).getDefaultColor()); + assertThat(mTextView.getCurrentTextColor()).isEqualTo(Color.WHITE); } @Test @@ -210,8 +209,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { assertThat(mTextView.getText()).isEqualTo( mContext.getResources().getString(R.string.dock_alignment_not_charging)); - assertThat(mTextView.getCurrentTextColor()).isEqualTo( - Utils.getColorError(mContext).getDefaultColor()); + assertThat(mTextView.getCurrentTextColor()).isEqualTo(Color.WHITE); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java index 35971bd4037c..e052ae2653f0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java @@ -26,6 +26,7 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyZeroInteractions; @@ -56,11 +57,13 @@ import com.android.systemui.statusbar.policy.KeyguardStateController; import org.junit.Assert; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; @SmallTest @RunWith(AndroidTestingRunner.class) @@ -91,13 +94,14 @@ public class KeyguardBouncerTest extends SysuiTestCase { private Handler mHandler; @Mock private KeyguardSecurityModel mKeyguardSecurityModel; - + @Rule + public MockitoRule mRule = MockitoJUnit.rule(); + private ViewGroup mRootView; private KeyguardBouncer mBouncer; @Before public void setup() { allowTestableLooperAsMainThread(); - MockitoAnnotations.initMocks(this); mDependency.injectTestDependency(KeyguardUpdateMonitor.class, mKeyguardUpdateMonitor); mDependency.injectTestDependency(KeyguardSecurityModel.class, mKeyguardSecurityModel); mDependency.injectMockDependency(KeyguardStateController.class); @@ -115,6 +119,8 @@ public class KeyguardBouncerTest extends SysuiTestCase { protected void inflateView() { super.inflateView(); mKeyguardView = mKeyguardHostView; + mRoot = spy(mRoot); + mRootView = mRoot; } }; } @@ -217,6 +223,7 @@ public class KeyguardBouncerTest extends SysuiTestCase { mBouncer.setExpansion(0); verify(mKeyguardHostView).onResume(); + verify(mRootView).announceForAccessibility(any()); } @Test diff --git a/packages/Tethering/common/TetheringLib/Android.bp b/packages/Tethering/common/TetheringLib/Android.bp index 00d0d9c428ff..31c40d2a3343 100644 --- a/packages/Tethering/common/TetheringLib/Android.bp +++ b/packages/Tethering/common/TetheringLib/Android.bp @@ -65,12 +65,7 @@ java_library { stubs_defaults { name: "framework-tethering-stubs-defaults", - srcs: [ - "src/android/net/TetheredClient.java", - "src/android/net/TetheringManager.java", - "src/android/net/TetheringConstants.java", - ], - libs: ["tethering-aidl-interfaces-java"], + srcs: [":framework-tethering-srcs"], } filegroup { @@ -126,17 +121,17 @@ droidstubs { java_library { name: "framework-tethering-stubs-publicapi", srcs: [":framework-tethering-stubs-srcs-publicapi"], - sdk_version: "current", + defaults: ["framework-module-stubs-lib-defaults-publicapi"], } java_library { name: "framework-tethering-stubs-systemapi", srcs: [":framework-tethering-stubs-srcs-systemapi"], - sdk_version: "system_current", + defaults: ["framework-module-stubs-lib-defaults-systemapi"], } java_library { name: "framework-tethering-stubs-module_libs_api", srcs: [":framework-tethering-stubs-srcs-module_libs_api"], - sdk_version: "module_current", + defaults: ["framework-module-stubs-lib-defaults-systemapi"], } diff --git a/packages/Tethering/src/com/android/server/connectivity/tethering/Tethering.java b/packages/Tethering/src/com/android/server/connectivity/tethering/Tethering.java index 36113acf97d3..4b2c9215f7b7 100644 --- a/packages/Tethering/src/com/android/server/connectivity/tethering/Tethering.java +++ b/packages/Tethering/src/com/android/server/connectivity/tethering/Tethering.java @@ -303,31 +303,26 @@ public class Tethering { final UserManager userManager = (UserManager) mContext.getSystemService( Context.USER_SERVICE); - mTetheringRestriction = new UserRestrictionActionListener(userManager, this); + mTetheringRestriction = new UserRestrictionActionListener( + userManager, this, mNotificationUpdater); mExecutor = new TetheringThreadExecutor(mHandler); mActiveDataSubIdListener = new ActiveDataSubIdListener(mExecutor); + mNetdCallback = new NetdCallback(); // Load tethering configuration. updateConfiguration(); - // NetdCallback should be registered after updateConfiguration() to ensure - // TetheringConfiguration is created. - mNetdCallback = new NetdCallback(); + } + + /** + * Start to register callbacks. + * Call this function when tethering is ready to handle callback events. + */ + public void startStateMachineUpdaters() { try { mNetd.registerUnsolicitedEventListener(mNetdCallback); } catch (RemoteException e) { mLog.e("Unable to register netd UnsolicitedEventListener"); } - - startStateMachineUpdaters(mHandler); - startTrackDefaultNetwork(); - - final WifiManager wifiManager = getWifiManager(); - if (wifiManager != null) { - wifiManager.registerSoftApCallback(mExecutor, new TetheringSoftApCallback()); - } - } - - private void startStateMachineUpdaters(Handler handler) { mCarrierConfigChange.startListening(); mContext.getSystemService(TelephonyManager.class).listen(mActiveDataSubIdListener, PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE); @@ -340,7 +335,14 @@ public class Tethering { filter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION); filter.addAction(UserManager.ACTION_USER_RESTRICTIONS_CHANGED); filter.addAction(ACTION_RESTRICT_BACKGROUND_CHANGED); - mContext.registerReceiver(mStateReceiver, filter, null, handler); + mContext.registerReceiver(mStateReceiver, filter, null, mHandler); + + final WifiManager wifiManager = getWifiManager(); + if (wifiManager != null) { + wifiManager.registerSoftApCallback(mExecutor, new TetheringSoftApCallback()); + } + + startTrackDefaultNetwork(); } private class TetheringThreadExecutor implements Executor { @@ -369,9 +371,10 @@ public class Tethering { mActiveDataSubId = subId; updateConfiguration(); + mNotificationUpdater.onActiveDataSubscriptionIdChanged(subId); // To avoid launching unexpected provisioning checks, ignore re-provisioning // when no CarrierConfig loaded yet. Assume reevaluateSimCardProvisioning() - // ill be triggered again when CarrierConfig is loaded. + // will be triggered again when CarrierConfig is loaded. if (mEntitlementMgr.getCarrierConfig(mConfig) != null) { mEntitlementMgr.reevaluateSimCardProvisioning(mConfig); } else { @@ -431,9 +434,7 @@ public class Tethering { // Called by wifi when the number of soft AP clients changed. @Override public void onConnectedClientsChanged(final List<WifiClient> clients) { - if (mConnectedClientsTracker.updateConnectedClients(mForwardedDownstreams, clients)) { - reportTetherClientsChanged(mConnectedClientsTracker.getLastTetheredClients()); - } + updateConnectedClients(clients); } } @@ -635,7 +636,10 @@ public class Tethering { Context.ETHERNET_SERVICE); synchronized (mPublicSync) { if (enable) { - if (mEthernetCallback != null) return TETHER_ERROR_NO_ERROR; + if (mEthernetCallback != null) { + Log.d(TAG, "Ethernet tethering already started"); + return TETHER_ERROR_NO_ERROR; + } mEthernetCallback = new EthernetCallback(); mEthernetIfaceRequest = em.requestTetheredInterface(mExecutor, mEthernetCallback); @@ -996,11 +1000,14 @@ public class Tethering { protected static class UserRestrictionActionListener { private final UserManager mUserManager; private final Tethering mWrapper; + private final TetheringNotificationUpdater mNotificationUpdater; public boolean mDisallowTethering; - public UserRestrictionActionListener(UserManager um, Tethering wrapper) { + public UserRestrictionActionListener(@NonNull UserManager um, @NonNull Tethering wrapper, + @NonNull TetheringNotificationUpdater updater) { mUserManager = um; mWrapper = wrapper; + mNotificationUpdater = updater; mDisallowTethering = false; } @@ -1019,13 +1026,21 @@ public class Tethering { return; } - // TODO: Add user restrictions notification. - final boolean isTetheringActiveOnDevice = (mWrapper.getTetheredIfaces().length != 0); - - if (newlyDisallowed && isTetheringActiveOnDevice) { - mWrapper.untetherAll(); - // TODO(b/148139325): send tetheringSupported on restriction change + if (!newlyDisallowed) { + // Clear the restricted notification when user is allowed to have tethering + // function. + mNotificationUpdater.tetheringRestrictionLifted(); + return; } + + // Restricted notification is shown when tethering function is disallowed on + // user's device. + mNotificationUpdater.notifyTetheringDisabledByRestriction(); + + // Untether from all downstreams since tethering is disallowed. + mWrapper.untetherAll(); + + // TODO(b/148139325): send tetheringSupported on restriction change } } @@ -1559,6 +1574,7 @@ public class Tethering { mIPv6TetheringCoordinator.removeActiveDownstream(who); mOffload.excludeDownstreamInterface(who.interfaceName()); mForwardedDownstreams.remove(who); + updateConnectedClients(null /* wifiClients */); // If this is a Wi-Fi interface, tell WifiManager of any errors // or the inactive serving state. @@ -2141,6 +2157,12 @@ public class Tethering { return false; } + private void updateConnectedClients(final List<WifiClient> wifiClients) { + if (mConnectedClientsTracker.updateConnectedClients(mForwardedDownstreams, wifiClients)) { + reportTetherClientsChanged(mConnectedClientsTracker.getLastTetheredClients()); + } + } + private IpServer.Callback makeControlCallback() { return new IpServer.Callback() { @Override @@ -2155,10 +2177,7 @@ public class Tethering { @Override public void dhcpLeasesChanged() { - if (mConnectedClientsTracker.updateConnectedClients( - mForwardedDownstreams, null /* wifiClients */)) { - reportTetherClientsChanged(mConnectedClientsTracker.getLastTetheredClients()); - } + updateConnectedClients(null /* wifiClients */); } }; } diff --git a/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringNotificationUpdater.java b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringNotificationUpdater.java index b97f75268a3b..992cdd8de6a7 100644 --- a/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringNotificationUpdater.java +++ b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringNotificationUpdater.java @@ -29,12 +29,14 @@ import android.content.Intent; import android.content.res.Resources; import android.os.UserHandle; import android.provider.Settings; +import android.telephony.SubscriptionManager; import android.text.TextUtils; import android.util.Log; import android.util.SparseArray; import androidx.annotation.ArrayRes; import androidx.annotation.DrawableRes; +import androidx.annotation.IntDef; import androidx.annotation.IntRange; import androidx.annotation.NonNull; @@ -54,10 +56,15 @@ import com.android.networkstack.tethering.R; public class TetheringNotificationUpdater { private static final String TAG = TetheringNotificationUpdater.class.getSimpleName(); private static final String CHANNEL_ID = "TETHERING_STATUS"; + private static final String WIFI_DOWNSTREAM = "WIFI"; + private static final String USB_DOWNSTREAM = "USB"; + private static final String BLUETOOTH_DOWNSTREAM = "BT"; private static final boolean NOTIFY_DONE = true; private static final boolean NO_NOTIFY = false; // Id to update and cancel tethering notification. Must be unique within the tethering app. - private static final int NOTIFY_ID = 20191115; + private static final int ENABLE_NOTIFICATION_ID = 1000; + // Id to update and cancel restricted notification. Must be unique within the tethering app. + private static final int RESTRICTED_NOTIFICATION_ID = 1001; @VisibleForTesting static final int NO_ICON_ID = 0; @VisibleForTesting @@ -65,14 +72,25 @@ public class TetheringNotificationUpdater { private final Context mContext; private final NotificationManager mNotificationManager; private final NotificationChannel mChannel; - // Downstream type is one of ConnectivityManager.TETHERING_* constants, 0 1 or 2. - // This value has to be made 1 2 and 4, and OR'd with the others. + // WARNING : the constructor is called on a different thread. Thread safety therefore // relies on this value being initialized to 0, and not any other value. If you need // to change this, you will need to change the thread where the constructor is invoked, // or to introduce synchronization. + // Downstream type is one of ConnectivityManager.TETHERING_* constants, 0 1 or 2. + // This value has to be made 1 2 and 4, and OR'd with the others. private int mDownstreamTypesMask = DOWNSTREAM_NONE; + // WARNING : this value is not able to being initialized to 0 and must have volatile because + // telephony service is not guaranteed that is up before tethering service starts. If telephony + // is up later than tethering, TetheringNotificationUpdater will use incorrect and valid + // subscription id(0) to query resources. Therefore, initialized subscription id must be + // INVALID_SUBSCRIPTION_ID. + private volatile int mActiveDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; + + @IntDef({ENABLE_NOTIFICATION_ID, RESTRICTED_NOTIFICATION_ID}) + @interface NotificationId {} + public TetheringNotificationUpdater(@NonNull final Context context) { mContext = context; mNotificationManager = (NotificationManager) context.createContextAsUser(UserHandle.ALL, 0) @@ -88,19 +106,46 @@ public class TetheringNotificationUpdater { public void onDownstreamChanged(@IntRange(from = 0, to = 7) final int downstreamTypesMask) { if (mDownstreamTypesMask == downstreamTypesMask) return; mDownstreamTypesMask = downstreamTypesMask; - updateNotification(); + updateEnableNotification(); + } + + /** Called when active data subscription id changed */ + public void onActiveDataSubscriptionIdChanged(final int subId) { + if (mActiveDataSubId == subId) return; + mActiveDataSubId = subId; + updateEnableNotification(); } - private void updateNotification() { + @VisibleForTesting + Resources getResourcesForSubId(@NonNull final Context c, final int subId) { + return SubscriptionManager.getResourcesForSubId(c, subId); + } + + private void updateEnableNotification() { final boolean tetheringInactive = mDownstreamTypesMask <= DOWNSTREAM_NONE; if (tetheringInactive || setupNotification() == NO_NOTIFY) { - clearNotification(); + clearNotification(ENABLE_NOTIFICATION_ID); } } - private void clearNotification() { - mNotificationManager.cancel(null /* tag */, NOTIFY_ID); + @VisibleForTesting + void tetheringRestrictionLifted() { + clearNotification(RESTRICTED_NOTIFICATION_ID); + } + + private void clearNotification(@NotificationId final int id) { + mNotificationManager.cancel(null /* tag */, id); + } + + @VisibleForTesting + void notifyTetheringDisabledByRestriction() { + final Resources res = getResourcesForSubId(mContext, mActiveDataSubId); + final String title = res.getString(R.string.disable_tether_notification_title); + final String message = res.getString(R.string.disable_tether_notification_message); + + showNotification(R.drawable.stat_sys_tether_general, title, message, + RESTRICTED_NOTIFICATION_ID); } /** @@ -110,16 +155,17 @@ public class TetheringNotificationUpdater { * * @return downstream types mask value. */ + @VisibleForTesting @IntRange(from = 0, to = 7) - private int getDownstreamTypesMask(@NonNull final String types) { + int getDownstreamTypesMask(@NonNull final String types) { int downstreamTypesMask = DOWNSTREAM_NONE; final String[] downstreams = types.split("\\|"); for (String downstream : downstreams) { - if ("USB".equals(downstream.trim())) { + if (USB_DOWNSTREAM.equals(downstream.trim())) { downstreamTypesMask |= (1 << TETHERING_USB); - } else if ("WIFI".equals(downstream.trim())) { + } else if (WIFI_DOWNSTREAM.equals(downstream.trim())) { downstreamTypesMask |= (1 << TETHERING_WIFI); - } else if ("BT".equals(downstream.trim())) { + } else if (BLUETOOTH_DOWNSTREAM.equals(downstream.trim())) { downstreamTypesMask |= (1 << TETHERING_BLUETOOTH); } } @@ -134,9 +180,8 @@ public class TetheringNotificationUpdater { * * @return {@link android.util.SparseArray} with downstream types and icon id info. */ - @NonNull - private SparseArray<Integer> getIcons(@ArrayRes int id) { - final Resources res = mContext.getResources(); + @VisibleForTesting + SparseArray<Integer> getIcons(@ArrayRes int id, @NonNull Resources res) { final String[] array = res.getStringArray(id); final SparseArray<Integer> icons = new SparseArray<>(); for (String config : array) { @@ -161,8 +206,9 @@ public class TetheringNotificationUpdater { } private boolean setupNotification() { - final Resources res = mContext.getResources(); - final SparseArray<Integer> downstreamIcons = getIcons(R.array.tethering_notification_icons); + final Resources res = getResourcesForSubId(mContext, mActiveDataSubId); + final SparseArray<Integer> downstreamIcons = + getIcons(R.array.tethering_notification_icons, res); final int iconId = downstreamIcons.get(mDownstreamTypesMask, NO_ICON_ID); if (iconId == NO_ICON_ID) return NO_NOTIFY; @@ -170,12 +216,12 @@ public class TetheringNotificationUpdater { final String title = res.getString(R.string.tethering_notification_title); final String message = res.getString(R.string.tethering_notification_message); - showNotification(iconId, title, message); + showNotification(iconId, title, message, ENABLE_NOTIFICATION_ID); return NOTIFY_DONE; } private void showNotification(@DrawableRes final int iconId, @NonNull final String title, - @NonNull final String message) { + @NonNull final String message, @NotificationId final int id) { final Intent intent = new Intent(Settings.ACTION_TETHER_SETTINGS); final PendingIntent pi = PendingIntent.getActivity( mContext.createContextAsUser(UserHandle.CURRENT, 0), @@ -193,6 +239,6 @@ public class TetheringNotificationUpdater { .setContentIntent(pi) .build(); - mNotificationManager.notify(null /* tag */, NOTIFY_ID, notification); + mNotificationManager.notify(null /* tag */, id, notification); } } diff --git a/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringService.java b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringService.java index c5329d8d3316..c30be25dbd22 100644 --- a/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringService.java +++ b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringService.java @@ -80,6 +80,7 @@ public class TetheringService extends Service { mContext = mDeps.getContext(); mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mTethering = makeTethering(mDeps); + mTethering.startStateMachineUpdaters(); } /** diff --git a/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringNotificationUpdaterTest.kt b/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringNotificationUpdaterTest.kt new file mode 100644 index 000000000000..b86949185c69 --- /dev/null +++ b/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringNotificationUpdaterTest.kt @@ -0,0 +1,262 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.connectivity.tethering + +import android.app.Notification +import android.app.NotificationManager +import android.content.Context +import android.content.res.Resources +import android.net.ConnectivityManager.TETHERING_BLUETOOTH +import android.net.ConnectivityManager.TETHERING_USB +import android.net.ConnectivityManager.TETHERING_WIFI +import android.os.UserHandle +import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.filters.SmallTest +import androidx.test.runner.AndroidJUnit4 +import com.android.internal.util.test.BroadcastInterceptingContext +import com.android.networkstack.tethering.R +import com.android.server.connectivity.tethering.TetheringNotificationUpdater.DOWNSTREAM_NONE +import org.junit.Assert.assertEquals +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.ArgumentCaptor +import org.mockito.ArgumentMatchers.any +import org.mockito.ArgumentMatchers.anyInt +import org.mockito.ArgumentMatchers.eq +import org.mockito.Mock +import org.mockito.Mockito.doReturn +import org.mockito.Mockito.never +import org.mockito.Mockito.reset +import org.mockito.Mockito.times +import org.mockito.Mockito.verifyZeroInteractions +import org.mockito.Mockito.verify +import org.mockito.MockitoAnnotations + +const val TEST_SUBID = 1 +const val WIFI_ICON_ID = 1 +const val USB_ICON_ID = 2 +const val BT_ICON_ID = 3 +const val GENERAL_ICON_ID = 4 +const val WIFI_MASK = 1 shl TETHERING_WIFI +const val USB_MASK = 1 shl TETHERING_USB +const val BT_MASK = 1 shl TETHERING_BLUETOOTH +const val TITTLE = "Tethering active" +const val MESSAGE = "Tap here to set up." +const val TEST_TITTLE = "Hotspot active" +const val TEST_MESSAGE = "Tap to set up hotspot." + +@RunWith(AndroidJUnit4::class) +@SmallTest +class TetheringNotificationUpdaterTest { + // lateinit used here for mocks as they need to be reinitialized between each test and the test + // should crash if they are used before being initialized. + @Mock private lateinit var mockContext: Context + @Mock private lateinit var notificationManager: NotificationManager + @Mock private lateinit var defaultResources: Resources + @Mock private lateinit var testResources: Resources + + // lateinit for this class under test, as it should be reset to a different instance for every + // tests but should always be initialized before use (or the test should crash). + private lateinit var notificationUpdater: TetheringNotificationUpdater + + private val ENABLE_ICON_CONFIGS = arrayOf( + "USB;android.test:drawable/usb", "BT;android.test:drawable/bluetooth", + "WIFI|BT;android.test:drawable/general", "WIFI|USB;android.test:drawable/general", + "USB|BT;android.test:drawable/general", "WIFI|USB|BT;android.test:drawable/general") + + private inner class TestContext(c: Context) : BroadcastInterceptingContext(c) { + override fun createContextAsUser(user: UserHandle, flags: Int) = + if (user == UserHandle.ALL) mockContext else this + } + + private inner class WrappedNotificationUpdater(c: Context) : TetheringNotificationUpdater(c) { + override fun getResourcesForSubId(context: Context, subId: Int) = + if (subId == TEST_SUBID) testResources else defaultResources + } + + private fun setupResources() { + doReturn(ENABLE_ICON_CONFIGS).`when`(defaultResources) + .getStringArray(R.array.tethering_notification_icons) + doReturn(arrayOf("WIFI;android.test:drawable/wifi")).`when`(testResources) + .getStringArray(R.array.tethering_notification_icons) + doReturn(TITTLE).`when`(defaultResources).getString(R.string.tethering_notification_title) + doReturn(MESSAGE).`when`(defaultResources) + .getString(R.string.tethering_notification_message) + doReturn(TEST_TITTLE).`when`(testResources).getString(R.string.tethering_notification_title) + doReturn(TEST_MESSAGE).`when`(testResources) + .getString(R.string.tethering_notification_message) + doReturn(USB_ICON_ID).`when`(defaultResources) + .getIdentifier(eq("android.test:drawable/usb"), any(), any()) + doReturn(BT_ICON_ID).`when`(defaultResources) + .getIdentifier(eq("android.test:drawable/bluetooth"), any(), any()) + doReturn(GENERAL_ICON_ID).`when`(defaultResources) + .getIdentifier(eq("android.test:drawable/general"), any(), any()) + doReturn(WIFI_ICON_ID).`when`(testResources) + .getIdentifier(eq("android.test:drawable/wifi"), any(), any()) + } + + @Before + fun setUp() { + MockitoAnnotations.initMocks(this) + val context = TestContext(InstrumentationRegistry.getInstrumentation().context) + doReturn(notificationManager).`when`(mockContext) + .getSystemService(Context.NOTIFICATION_SERVICE) + notificationUpdater = WrappedNotificationUpdater(context) + setupResources() + } + + private fun Notification.title() = this.extras.getString(Notification.EXTRA_TITLE) + private fun Notification.text() = this.extras.getString(Notification.EXTRA_TEXT) + + private fun verifyNotification(iconId: Int = 0, title: String = "", text: String = "") { + verify(notificationManager, never()).cancel(any(), anyInt()) + + val notificationCaptor = ArgumentCaptor.forClass(Notification::class.java) + verify(notificationManager, times(1)) + .notify(any(), anyInt(), notificationCaptor.capture()) + + val notification = notificationCaptor.getValue() + assertEquals(iconId, notification.smallIcon.resId) + assertEquals(title, notification.title()) + assertEquals(text, notification.text()) + + reset(notificationManager) + } + + private fun verifyNoNotification() { + verify(notificationManager, times(1)).cancel(any(), anyInt()) + verify(notificationManager, never()).notify(any(), anyInt(), any()) + + reset(notificationManager) + } + + @Test + fun testNotificationWithDownstreamChanged() { + // Wifi downstream. No notification. + notificationUpdater.onDownstreamChanged(WIFI_MASK) + verifyNoNotification() + + // Same downstream changed. Nothing happened. + notificationUpdater.onDownstreamChanged(WIFI_MASK) + verifyZeroInteractions(notificationManager) + + // Wifi and usb downstreams. Show enable notification + notificationUpdater.onDownstreamChanged(WIFI_MASK or USB_MASK) + verifyNotification(GENERAL_ICON_ID, TITTLE, MESSAGE) + + // Usb downstream. Still show enable notification. + notificationUpdater.onDownstreamChanged(USB_MASK) + verifyNotification(USB_ICON_ID, TITTLE, MESSAGE) + + // No downstream. No notification. + notificationUpdater.onDownstreamChanged(DOWNSTREAM_NONE) + verifyNoNotification() + } + + @Test + fun testNotificationWithActiveDataSubscriptionIdChanged() { + // Usb downstream. Showed enable notification with default resource. + notificationUpdater.onDownstreamChanged(USB_MASK) + verifyNotification(USB_ICON_ID, TITTLE, MESSAGE) + + // Same subId changed. Nothing happened. + notificationUpdater.onActiveDataSubscriptionIdChanged(INVALID_SUBSCRIPTION_ID) + verifyZeroInteractions(notificationManager) + + // Set test sub id. Clear notification with test resource. + notificationUpdater.onActiveDataSubscriptionIdChanged(TEST_SUBID) + verifyNoNotification() + + // Wifi downstream. Show enable notification with test resource. + notificationUpdater.onDownstreamChanged(WIFI_MASK) + verifyNotification(WIFI_ICON_ID, TEST_TITTLE, TEST_MESSAGE) + + // No downstream. No notification. + notificationUpdater.onDownstreamChanged(DOWNSTREAM_NONE) + verifyNoNotification() + } + + private fun assertIconNumbers(number: Int, configs: Array<String?>) { + doReturn(configs).`when`(defaultResources) + .getStringArray(R.array.tethering_notification_icons) + assertEquals(number, notificationUpdater.getIcons( + R.array.tethering_notification_icons, defaultResources).size()) + } + + @Test + fun testGetIcons() { + assertIconNumbers(0, arrayOfNulls<String>(0)) + assertIconNumbers(0, arrayOf(null, "")) + assertIconNumbers(3, arrayOf( + // These configurations are invalid with wrong strings or symbols. + ";", ",", "|", "|,;", "WIFI", "1;2", " U SB; ", "bt;", "WIFI;USB;BT", "WIFI|USB|BT", + "WIFI,BT,USB", " WIFI| | | USB, test:drawable/test", + // This configuration is valid with two downstream types (USB, BT). + "USB|,,,,,|BT;drawable/test ", + // This configuration is valid with one downstream types (WIFI). + " WIFI ; android.test:drawable/xxx ")) + } + + @Test + fun testGetDownstreamTypesMask() { + assertEquals(DOWNSTREAM_NONE, notificationUpdater.getDownstreamTypesMask("")) + assertEquals(DOWNSTREAM_NONE, notificationUpdater.getDownstreamTypesMask("1")) + assertEquals(DOWNSTREAM_NONE, notificationUpdater.getDownstreamTypesMask("WIFI_P2P")) + assertEquals(DOWNSTREAM_NONE, notificationUpdater.getDownstreamTypesMask("usb")) + assertEquals(WIFI_MASK, notificationUpdater.getDownstreamTypesMask(" WIFI ")) + assertEquals(USB_MASK, notificationUpdater.getDownstreamTypesMask("USB | B T")) + assertEquals(BT_MASK, notificationUpdater.getDownstreamTypesMask(" WIFI: | BT")) + assertEquals(WIFI_MASK or USB_MASK, + notificationUpdater.getDownstreamTypesMask("1|2|USB|WIFI|BLUETOOTH||")) + } + + @Test + fun testSetupRestrictedNotification() { + val title = InstrumentationRegistry.getInstrumentation().context.resources + .getString(R.string.disable_tether_notification_title) + val message = InstrumentationRegistry.getInstrumentation().context.resources + .getString(R.string.disable_tether_notification_message) + val disallowTitle = "Tether function is disallowed" + val disallowMessage = "Please contact your admin" + doReturn(title).`when`(defaultResources) + .getString(R.string.disable_tether_notification_title) + doReturn(message).`when`(defaultResources) + .getString(R.string.disable_tether_notification_message) + doReturn(disallowTitle).`when`(testResources) + .getString(R.string.disable_tether_notification_title) + doReturn(disallowMessage).`when`(testResources) + .getString(R.string.disable_tether_notification_message) + + // User restrictions on. Show restricted notification. + notificationUpdater.notifyTetheringDisabledByRestriction() + verifyNotification(R.drawable.stat_sys_tether_general, title, message) + + // User restrictions off. Clear notification. + notificationUpdater.tetheringRestrictionLifted() + verifyNoNotification() + + // Set test sub id. No notification. + notificationUpdater.onActiveDataSubscriptionIdChanged(TEST_SUBID) + verifyNoNotification() + + // User restrictions on again. Show restricted notification with test resource. + notificationUpdater.notifyTetheringDisabledByRestriction() + verifyNotification(R.drawable.stat_sys_tether_general, disallowTitle, disallowMessage) + } +}
\ No newline at end of file diff --git a/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringTest.java b/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringTest.java index 60d7ad1c5b1e..a59c6fd9e193 100644 --- a/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringTest.java +++ b/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringTest.java @@ -210,7 +210,6 @@ public class TetheringTest { private PhoneStateListener mPhoneStateListener; private InterfaceConfigurationParcel mInterfaceConfiguration; - private class TestContext extends BroadcastInterceptingContext { TestContext(Context base) { super(base); @@ -485,6 +484,7 @@ public class TetheringTest { mServiceContext.registerReceiver(mBroadcastReceiver, new IntentFilter(ACTION_TETHER_STATE_CHANGED)); mTethering = makeTethering(); + mTethering.startStateMachineUpdaters(); verify(mStatsManager, times(1)).registerNetworkStatsProvider(anyString(), any()); verify(mNetd).registerUnsolicitedEventListener(any()); final ArgumentCaptor<PhoneStateListener> phoneListenerCaptor = @@ -1073,13 +1073,15 @@ public class TetheringTest { when(mUserManager.getUserRestrictions()).thenReturn(newRestrictions); final Tethering.UserRestrictionActionListener ural = - new Tethering.UserRestrictionActionListener(mUserManager, mockTethering); + new Tethering.UserRestrictionActionListener( + mUserManager, mockTethering, mNotificationUpdater); ural.mDisallowTethering = currentDisallow; ural.onUserRestrictionsChanged(); - verify(mockTethering, times(expectedInteractionsWithShowNotification)) - .untetherAll(); + verify(mNotificationUpdater, times(expectedInteractionsWithShowNotification)) + .notifyTetheringDisabledByRestriction(); + verify(mockTethering, times(expectedInteractionsWithShowNotification)).untetherAll(); } @Test @@ -1087,7 +1089,7 @@ public class TetheringTest { final String[] emptyActiveIfacesList = new String[]{}; final boolean currDisallow = false; final boolean nextDisallow = true; - final int expectedInteractionsWithShowNotification = 0; + final int expectedInteractionsWithShowNotification = 1; runUserRestrictionsChange(currDisallow, nextDisallow, emptyActiveIfacesList, expectedInteractionsWithShowNotification); @@ -1399,6 +1401,7 @@ public class TetheringTest { mPhoneStateListener.onActiveDataSubscriptionIdChanged(fakeSubId); final TetheringConfiguration newConfig = mTethering.getTetheringConfiguration(); assertEquals(fakeSubId, newConfig.activeDataSubId); + verify(mNotificationUpdater, times(1)).onActiveDataSubscriptionIdChanged(eq(fakeSubId)); } @Test diff --git a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java index 6112da5cd13b..fe9f60fe2859 100644 --- a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java +++ b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java @@ -37,7 +37,6 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; -import android.util.Size; import android.view.Display; import android.view.View; import android.widget.Toast; @@ -358,8 +357,8 @@ public class WallpaperCropActivity extends Activity { // Get the crop boolean ltr = mCropView.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR; - Size windowSize = getWindowManager().getCurrentWindowMetrics().getSize(); - boolean isPortrait = windowSize.getWidth() < windowSize.getHeight(); + Rect windowBounds = getWindowManager().getCurrentWindowMetrics().getBounds(); + boolean isPortrait = windowBounds.width() < windowBounds.height(); Point defaultWallpaperSize = getDefaultWallpaperSize(getResources(), getDisplay()); diff --git a/packages/overlays/Android.mk b/packages/overlays/Android.mk index dcdb80b497d0..ef0e04456421 100644 --- a/packages/overlays/Android.mk +++ b/packages/overlays/Android.mk @@ -45,6 +45,8 @@ LOCAL_REQUIRED_MODULES := \ IconPackRoundedSettingsOverlay \ IconPackRoundedSystemUIOverlay \ IconPackRoundedThemePickerOverlay \ + IconShapeFlowerOverlay \ + IconShapeHexagonOverlay \ IconShapeRoundedRectOverlay \ IconShapeSquircleOverlay \ IconShapeTeardropOverlay \ diff --git a/services/Android.bp b/services/Android.bp index 490481c7e5a2..730b9a5dc3e3 100644 --- a/services/Android.bp +++ b/services/Android.bp @@ -81,10 +81,6 @@ java_library { "framework-tethering-stubs-module_libs_api", ], - plugins: [ - "compat-changeid-annotation-processor", - ], - // Uncomment to enable output of certain warnings (deprecated, unchecked) //javacflags: ["-Xlint"], @@ -126,6 +122,7 @@ droidstubs { " --hide DeprecationMismatch" + " --hide HiddenTypedefConstant", visibility: ["//visibility:private"], + filter_packages: ["com.android."], check_api: { current: { api_file: "api/current.txt", @@ -142,6 +139,11 @@ droidstubs { baseline_file: "api/lint-baseline.txt", }, }, + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/system-server/api", + dest: "android.txt", + }, } java_library { diff --git a/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionFactory.java b/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionFactory.java index 2306329e689c..a86d34d4eb3e 100644 --- a/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionFactory.java +++ b/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionFactory.java @@ -35,11 +35,11 @@ import android.view.SurfaceControlViewHost; import android.view.autofill.AutofillId; import android.view.autofill.AutofillManager; import android.view.autofill.AutofillValue; -import android.view.inline.InlinePresentationSpec; import android.view.inputmethod.InlineSuggestion; import android.view.inputmethod.InlineSuggestionInfo; import android.view.inputmethod.InlineSuggestionsRequest; import android.view.inputmethod.InlineSuggestionsResponse; +import android.widget.inline.InlinePresentationSpec; import com.android.internal.view.inline.IInlineContentCallback; import com.android.internal.view.inline.IInlineContentProvider; @@ -263,7 +263,7 @@ public final class InlineSuggestionFactory { private static InlinePresentation mergedInlinePresentation( @NonNull InlineSuggestionsRequest request, int index, @NonNull InlinePresentation inlinePresentation) { - final List<InlinePresentationSpec> specs = request.getPresentationSpecs(); + final List<InlinePresentationSpec> specs = request.getInlinePresentationSpecs(); if (specs.isEmpty()) { return inlinePresentation; } diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java index 5d2b9f359381..ce539dabfac1 100644 --- a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java +++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java @@ -89,7 +89,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -919,35 +918,24 @@ public final class ContentCaptureManagerService extends private static class DataShareCallbackDelegate extends IDataShareCallback.Stub { @NonNull private final DataShareRequest mDataShareRequest; - @NonNull private final WeakReference<IDataShareWriteAdapter> mClientAdapterReference; - @NonNull private final WeakReference<ContentCaptureManagerService> mParentServiceReference; + @NonNull private final IDataShareWriteAdapter mClientAdapter; + @NonNull private final ContentCaptureManagerService mParentService; DataShareCallbackDelegate(@NonNull DataShareRequest dataShareRequest, @NonNull IDataShareWriteAdapter clientAdapter, ContentCaptureManagerService parentService) { mDataShareRequest = dataShareRequest; - mClientAdapterReference = new WeakReference<>(clientAdapter); - mParentServiceReference = new WeakReference<>(parentService); + mClientAdapter = clientAdapter; + mParentService = parentService; } @Override public void accept(IDataShareReadAdapter serviceAdapter) throws RemoteException { Slog.i(TAG, "Data share request accepted by Content Capture service"); - final ContentCaptureManagerService parentService = mParentServiceReference.get(); - final IDataShareWriteAdapter clientAdapter = mClientAdapterReference.get(); - if (parentService == null || clientAdapter == null) { - Slog.w(TAG, "Can't fulfill accept() request, because remote objects have been " - + "GC'ed"); - return; - } - - final WeakReference<IDataShareReadAdapter> serviceAdapterReference = - new WeakReference<>(serviceAdapter); - Pair<ParcelFileDescriptor, ParcelFileDescriptor> clientPipe = createPipe(); if (clientPipe == null) { - clientAdapter.error(ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN); + mClientAdapter.error(ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN); serviceAdapter.error(ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN); return; } @@ -959,7 +947,7 @@ public final class ContentCaptureManagerService extends if (servicePipe == null) { bestEffortCloseFileDescriptors(sourceIn, sinkIn); - clientAdapter.error(ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN); + mClientAdapter.error(ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN); serviceAdapter.error(ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN); return; } @@ -967,9 +955,9 @@ public final class ContentCaptureManagerService extends ParcelFileDescriptor sourceOut = servicePipe.second; ParcelFileDescriptor sinkOut = servicePipe.first; - parentService.mPackagesWithShareRequests.add(mDataShareRequest.getPackageName()); + mParentService.mPackagesWithShareRequests.add(mDataShareRequest.getPackageName()); - clientAdapter.write(sourceIn); + mClientAdapter.write(sourceIn); serviceAdapter.start(sinkOut); // File descriptor received by the client app will be a copy of the current one. Close @@ -977,7 +965,7 @@ public final class ContentCaptureManagerService extends // current pipe. bestEffortCloseFileDescriptor(sourceIn); - parentService.mDataShareExecutor.execute(() -> { + mParentService.mDataShareExecutor.execute(() -> { try (InputStream fis = new ParcelFileDescriptor.AutoCloseInputStream(sinkIn); OutputStream fos = @@ -996,23 +984,23 @@ public final class ContentCaptureManagerService extends } catch (IOException e) { Slog.e(TAG, "Failed to pipe client and service streams", e); - sendErrorSignal(mClientAdapterReference, serviceAdapterReference, + sendErrorSignal(mClientAdapter, serviceAdapter, ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN); } finally { - synchronized (parentService.mLock) { - parentService.mPackagesWithShareRequests + synchronized (mParentService.mLock) { + mParentService.mPackagesWithShareRequests .remove(mDataShareRequest.getPackageName()); } } }); - parentService.mHandler.postDelayed(() -> + mParentService.mHandler.postDelayed(() -> enforceDataSharingTtl( sourceIn, sinkIn, sourceOut, sinkOut, - serviceAdapterReference), + serviceAdapter), MAX_DATA_SHARE_FILE_DESCRIPTORS_TTL_MS); } @@ -1020,31 +1008,17 @@ public final class ContentCaptureManagerService extends public void reject() throws RemoteException { Slog.i(TAG, "Data share request rejected by Content Capture service"); - IDataShareWriteAdapter clientAdapter = mClientAdapterReference.get(); - if (clientAdapter == null) { - Slog.w(TAG, "Can't fulfill reject() request, because remote objects have been " - + "GC'ed"); - return; - } - - clientAdapter.rejected(); + mClientAdapter.rejected(); } private void enforceDataSharingTtl(ParcelFileDescriptor sourceIn, ParcelFileDescriptor sinkIn, ParcelFileDescriptor sourceOut, ParcelFileDescriptor sinkOut, - WeakReference<IDataShareReadAdapter> serviceAdapterReference) { + IDataShareReadAdapter serviceAdapter) { - final ContentCaptureManagerService parentService = mParentServiceReference.get(); - if (parentService == null) { - Slog.w(TAG, "Can't enforce data sharing TTL, because remote objects have been " - + "GC'ed"); - return; - } - - synchronized (parentService.mLock) { - parentService.mPackagesWithShareRequests + synchronized (mParentService.mLock) { + mParentService.mPackagesWithShareRequests .remove(mDataShareRequest.getPackageName()); // Interaction finished successfully <=> all data has been written to Content @@ -1069,7 +1043,7 @@ public final class ContentCaptureManagerService extends bestEffortCloseFileDescriptors(sourceIn, sinkIn, sourceOut, sinkOut); if (!finishedSuccessfully) { - sendErrorSignal(mClientAdapterReference, serviceAdapterReference, + sendErrorSignal(mClientAdapter, serviceAdapter, ContentCaptureManager.DATA_SHARE_ERROR_TIMEOUT_INTERRUPTED); } } @@ -1115,19 +1089,9 @@ public final class ContentCaptureManagerService extends } private static void sendErrorSignal( - WeakReference<IDataShareWriteAdapter> clientAdapterReference, - WeakReference<IDataShareReadAdapter> serviceAdapterReference, + IDataShareWriteAdapter clientAdapter, + IDataShareReadAdapter serviceAdapter, int errorCode) { - - final IDataShareWriteAdapter clientAdapter = clientAdapterReference.get(); - final IDataShareReadAdapter serviceAdapter = serviceAdapterReference.get(); - - if (clientAdapter == null || serviceAdapter == null) { - Slog.w(TAG, "Can't propagate error() to read/write data share adapters, because " - + "remote objects have been GC'ed"); - return; - } - try { clientAdapter.error(errorCode); } catch (RemoteException e) { diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java index 32bca35009a8..9486b0d39bc2 100644 --- a/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java +++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java @@ -17,7 +17,7 @@ package com.android.server.contentcapture; import static android.service.contentcapture.ContentCaptureService.setClientState; -import static android.view.contentcapture.ContentCaptureSession.NO_SESSION_ID; +import static android.view.contentcapture.ContentCaptureManager.NO_SESSION_ID; import static android.view.contentcapture.ContentCaptureSession.STATE_DISABLED; import static android.view.contentcapture.ContentCaptureSession.STATE_DUPLICATED_ID; import static android.view.contentcapture.ContentCaptureSession.STATE_INTERNAL_ERROR; diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureServerSession.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureServerSession.java index aa63e40747ee..06ab426c6698 100644 --- a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureServerSession.java +++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureServerSession.java @@ -16,9 +16,9 @@ package com.android.server.contentcapture; import static android.service.contentcapture.ContentCaptureService.setClientState; +import static android.view.contentcapture.ContentCaptureManager.NO_SESSION_ID; import static android.view.contentcapture.ContentCaptureManager.RESULT_CODE_FALSE; import static android.view.contentcapture.ContentCaptureManager.RESULT_CODE_TRUE; -import static android.view.contentcapture.ContentCaptureSession.NO_SESSION_ID; import static android.view.contentcapture.ContentCaptureSession.STATE_ACTIVE; import static android.view.contentcapture.ContentCaptureSession.STATE_DISABLED; import static android.view.contentcapture.ContentCaptureSession.STATE_SERVICE_RESURRECTED; diff --git a/services/core/Android.bp b/services/core/Android.bp index 7a26b21d6ac7..052026c2746a 100644 --- a/services/core/Android.bp +++ b/services/core/Android.bp @@ -130,10 +130,6 @@ java_library_static { "netd_event_listener_interface-java", "overlayable_policy_aidl-java", ], - - plugins: [ - "compat-changeid-annotation-processor", - ], } java_genrule { @@ -154,6 +150,10 @@ java_library { static_libs: ["services.core.priorityboosted"], } +java_library_host { + name: "core_cts_test_resources", + srcs: ["java/com/android/server/notification/SmallHash.java"] +} prebuilt_etc { name: "gps_debug.conf", diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java index 7d85966d7bf6..c27ec66b5db3 100644 --- a/services/core/java/android/content/pm/PackageManagerInternal.java +++ b/services/core/java/android/content/pm/PackageManagerInternal.java @@ -427,17 +427,6 @@ public abstract class PackageManagerInternal { public abstract String getNameForUid(int uid); /** - * Marks a package as installed (or not installed) for a given user. - * - * @param pkg the package whose installation is to be set - * @param userId the user for whom to set it - * @param installed the new installed state - * @return true if the installed state changed as a result - */ - public abstract boolean setInstalled(AndroidPackage pkg, - @UserIdInt int userId, boolean installed); - - /** * Request to perform the second phase of ephemeral resolution. * @param responseObj The response of the first phase of ephemeral resolution * @param origIntent The original intent that triggered ephemeral resolution @@ -522,12 +511,6 @@ public abstract class PackageManagerInternal { public abstract boolean isPackagePersistent(String packageName); /** - * Returns whether or not the given package represents a legacy system application released - * prior to runtime permissions. - */ - public abstract boolean isLegacySystemApp(AndroidPackage pkg); - - /** * Get all overlay packages for a user. * @param userId The user for which to get the overlays. * @return A list of overlay packages. An empty list is returned if the diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java index f1f5005b23db..8dd4fa6d8fd1 100644 --- a/services/core/java/com/android/server/BatteryService.java +++ b/services/core/java/com/android/server/BatteryService.java @@ -1101,6 +1101,9 @@ public final class BatteryService extends SystemService { * Synchronize on BatteryService. */ public void updateLightsLocked() { + if (mBatteryLight == null) { + return; + } final int level = mHealthInfo.batteryLevel; final int status = mHealthInfo.batteryStatus; if (level < mLowBatteryWarningLevel) { diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java index 1bf559a17021..192ea72224b1 100644 --- a/services/core/java/com/android/server/BluetoothManagerService.java +++ b/services/core/java/com/android/server/BluetoothManagerService.java @@ -828,13 +828,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub { } } - public int updateBleAppCount(IBinder token, boolean enable, String packageName) { - // Check if packageName belongs to callingUid - final int callingUid = Binder.getCallingUid(); - final boolean isCallerSystem = UserHandle.getAppId(callingUid) == Process.SYSTEM_UID; - if (!isCallerSystem) { - checkPackage(callingUid, packageName); - } + private int updateBleAppCount(IBinder token, boolean enable, String packageName) { ClientDeathRecipient r = mBleApps.get(token); if (r == null && enable) { ClientDeathRecipient deathRec = new ClientDeathRecipient(packageName); @@ -859,13 +853,94 @@ class BluetoothManagerService extends IBluetoothManager.Stub { if (DBG) { Slog.d(TAG, appCount + " registered Ble Apps"); } - if (appCount == 0 && mEnable) { - disableBleScanMode(); + return appCount; + } + + private boolean checkBluetoothPermissions(String packageName, boolean requireForeground) { + if (isBluetoothDisallowed()) { + if (DBG) { + Slog.d(TAG, "checkBluetoothPermissions: bluetooth disallowed"); + } + return false; } - if (appCount == 0 && !mEnableExternal) { - sendBrEdrDownCallback(); + // Check if packageName belongs to callingUid + final int callingUid = Binder.getCallingUid(); + final boolean isCallerSystem = UserHandle.getAppId(callingUid) == Process.SYSTEM_UID; + if (!isCallerSystem) { + checkPackage(callingUid, packageName); + + if (requireForeground && !checkIfCallerIsForegroundUser()) { + Slog.w(TAG, "Not allowed for non-active and non system user"); + return false; + } + + mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, + "Need BLUETOOTH ADMIN permission"); } - return appCount; + return true; + } + + public boolean enableBle(String packageName, IBinder token) throws RemoteException { + if (!checkBluetoothPermissions(packageName, false)) { + if (DBG) { + Slog.d(TAG, "enableBle(): bluetooth disallowed"); + } + return false; + } + + if (DBG) { + Slog.d(TAG, "enableBle(" + packageName + "): mBluetooth =" + mBluetooth + + " mBinding = " + mBinding + " mState = " + + BluetoothAdapter.nameForState(mState)); + } + updateBleAppCount(token, true, packageName); + + if (mState == BluetoothAdapter.STATE_ON + || mState == BluetoothAdapter.STATE_BLE_ON + || mState == BluetoothAdapter.STATE_TURNING_ON + || mState == BluetoothAdapter.STATE_TURNING_OFF) { + Log.d(TAG, "enableBLE(): Bluetooth already enabled"); + return true; + } + synchronized (mReceiver) { + // waive WRITE_SECURE_SETTINGS permission check + sendEnableMsg(false, + BluetoothProtoEnums.ENABLE_DISABLE_REASON_APPLICATION_REQUEST, packageName); + } + return true; + } + + public boolean disableBle(String packageName, IBinder token) throws RemoteException { + if (!checkBluetoothPermissions(packageName, false)) { + if (DBG) { + Slog.d(TAG, "disableBLE(): bluetooth disallowed"); + } + return false; + } + + if (DBG) { + Slog.d(TAG, "disableBle(" + packageName + "): mBluetooth =" + mBluetooth + + " mBinding = " + mBinding + " mState = " + + BluetoothAdapter.nameForState(mState)); + } + + if (mState == BluetoothAdapter.STATE_OFF) { + Slog.d(TAG, "disableBLE(): Already disabled"); + return false; + } + updateBleAppCount(token, false, packageName); + + if (mState == BluetoothAdapter.STATE_BLE_ON && !isBleAppPresent()) { + if (mEnable) { + disableBleScanMode(); + } + if (!mEnableExternal) { + addActiveLog(BluetoothProtoEnums.ENABLE_DISABLE_REASON_APPLICATION_REQUEST, + packageName, false); + sendBrEdrDownCallback(); + } + } + return true; } // Clear all apps using BLE scan only mode. @@ -894,6 +969,13 @@ class BluetoothManagerService extends IBluetoothManager.Stub { Slog.e(TAG, "onBluetoothServiceUp: mBluetooth is null!"); return; } + if (!mEnableExternal && !isBleAppPresent() && isAirplaneModeOn()) { + // Airplane mode is turned on while enabling BLE only mode, disable + // BLE now. + disableBleScanMode(); + sendBrEdrDownCallback(); + return; + } if (isBluetoothPersistedStateOnBluetooth() || !isBleAppPresent()) { // This triggers transition to STATE_ON mBluetooth.onLeServiceUp(); @@ -943,29 +1025,19 @@ class BluetoothManagerService extends IBluetoothManager.Stub { } public boolean enableNoAutoConnect(String packageName) { - if (isBluetoothDisallowed()) { + if (!checkBluetoothPermissions(packageName, false)) { if (DBG) { Slog.d(TAG, "enableNoAutoConnect(): not enabling - bluetooth disallowed"); } return false; } - // Check if packageName belongs to callingUid - final int callingUid = Binder.getCallingUid(); - final boolean isCallerSystem = UserHandle.getAppId(callingUid) == Process.SYSTEM_UID; - if (!isCallerSystem) { - checkPackage(callingUid, packageName); - } - - mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, - "Need BLUETOOTH ADMIN permission"); - if (DBG) { Slog.d(TAG, "enableNoAutoConnect(): mBluetooth =" + mBluetooth + " mBinding = " + mBinding); } - int callingAppId = UserHandle.getAppId(callingUid); + int callingAppId = UserHandle.getAppId(Binder.getCallingUid()); if (callingAppId != Process.NFC_UID) { throw new SecurityException("no permission to enable Bluetooth quietly"); } @@ -980,32 +1052,19 @@ class BluetoothManagerService extends IBluetoothManager.Stub { } public boolean enable(String packageName) throws RemoteException { - final int callingUid = Binder.getCallingUid(); - final boolean callerSystem = UserHandle.getAppId(callingUid) == Process.SYSTEM_UID; - - if (isBluetoothDisallowed()) { + if (!checkBluetoothPermissions(packageName, true)) { if (DBG) { Slog.d(TAG, "enable(): not enabling - bluetooth disallowed"); } return false; } - if (!callerSystem) { - // Check if packageName belongs to callingUid - checkPackage(callingUid, packageName); - - if (!checkIfCallerIsForegroundUser()) { - Slog.w(TAG, "enable(): not allowed for non-active and non system user"); - return false; - } - - mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, - "Need BLUETOOTH ADMIN permission"); - - if (!isEnabled() && mWirelessConsentRequired && startConsentUiIfNeeded(packageName, - callingUid, BluetoothAdapter.ACTION_REQUEST_ENABLE)) { - return false; - } + final int callingUid = Binder.getCallingUid(); + final boolean callerSystem = UserHandle.getAppId(callingUid) == Process.SYSTEM_UID; + if (!callerSystem && !isEnabled() && mWirelessConsentRequired + && startConsentUiIfNeeded(packageName, + callingUid, BluetoothAdapter.ACTION_REQUEST_ENABLE)) { + return false; } if (DBG) { @@ -1027,25 +1086,19 @@ class BluetoothManagerService extends IBluetoothManager.Stub { } public boolean disable(String packageName, boolean persist) throws RemoteException { - final int callingUid = Binder.getCallingUid(); - final boolean callerSystem = UserHandle.getAppId(callingUid) == Process.SYSTEM_UID; - - if (!callerSystem) { - // Check if packageName belongs to callingUid - checkPackage(callingUid, packageName); - - if (!checkIfCallerIsForegroundUser()) { - Slog.w(TAG, "disable(): not allowed for non-active and non system user"); - return false; + if (!checkBluetoothPermissions(packageName, true)) { + if (DBG) { + Slog.d(TAG, "disable(): not disabling - bluetooth disallowed"); } + return false; + } - mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, - "Need BLUETOOTH ADMIN permission"); - - if (isEnabled() && mWirelessConsentRequired && startConsentUiIfNeeded(packageName, - callingUid, BluetoothAdapter.ACTION_REQUEST_DISABLE)) { - return false; - } + final int callingUid = Binder.getCallingUid(); + final boolean callerSystem = UserHandle.getAppId(callingUid) == Process.SYSTEM_UID; + if (!callerSystem && isEnabled() && mWirelessConsentRequired + && startConsentUiIfNeeded(packageName, + callingUid, BluetoothAdapter.ACTION_REQUEST_DISABLE)) { + return false; } if (DBG) { diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 76a8e1474a95..d684f0c19930 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -63,6 +63,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.PackageManager; import android.content.res.Configuration; import android.database.ContentObserver; import android.net.CaptivePortal; @@ -5405,12 +5406,25 @@ public class ConnectivityService extends IConnectivityManager.Stub } } + private boolean checkUnsupportedStartingFrom(int version, String callingPackageName) { + final PackageManager pm = mContext.getPackageManager(); + final int userId = UserHandle.getCallingUserId(); + try { + final int callingVersion = pm.getApplicationInfoAsUser( + callingPackageName, 0 /* flags */, userId).targetSdkVersion; + if (callingVersion < version) return false; + } catch (PackageManager.NameNotFoundException e) { } + return true; + } + @Override public NetworkRequest requestNetwork(NetworkCapabilities networkCapabilities, Messenger messenger, int timeoutMs, IBinder binder, int legacyType, @NonNull String callingPackageName) { if (legacyType != TYPE_NONE && !checkNetworkStackPermission()) { - throw new SecurityException("Insufficient permissions to specify legacy type"); + if (checkUnsupportedStartingFrom(Build.VERSION_CODES.M, callingPackageName)) { + throw new SecurityException("Insufficient permissions to specify legacy type"); + } } final int callingUid = Binder.getCallingUid(); final NetworkRequest.Type type = (networkCapabilities == null) @@ -7967,19 +7981,18 @@ public class ConnectivityService extends IConnectivityManager.Stub return false; } + final Network[] underlyingNetworks; synchronized (mVpns) { - if (getVpnIfOwner(callbackUid) != null) { - return true; - } + final Vpn vpn = getVpnIfOwner(callbackUid); + underlyingNetworks = (vpn == null) ? null : vpn.getUnderlyingNetworks(); + } + if (underlyingNetworks != null) { + if (Arrays.asList(underlyingNetworks).contains(nai.network)) return true; } // Administrator UIDs also contains the Owner UID final int[] administratorUids = nai.networkCapabilities.getAdministratorUids(); - for (final int uid : administratorUids) { - if (uid == callbackUid) return true; - } - - return false; + return ArrayUtils.contains(administratorUids, callbackUid); } @Override diff --git a/services/core/java/com/android/server/IpSecService.java b/services/core/java/com/android/server/IpSecService.java index 9540f4336464..905c489e1dcb 100644 --- a/services/core/java/com/android/server/IpSecService.java +++ b/services/core/java/com/android/server/IpSecService.java @@ -46,6 +46,7 @@ import android.net.TrafficStats; import android.net.util.NetdService; import android.os.Binder; import android.os.IBinder; +import android.os.INetworkManagementService; import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.os.ServiceSpecificException; @@ -114,6 +115,9 @@ public class IpSecService extends IIpSecService.Stub { /* Binder context for this service */ private final Context mContext; + /* NetworkManager instance */ + private final INetworkManagementService mNetworkManager; + /** * The next non-repeating global ID for tracking resources between users, this service, and * kernel data structures. Accessing this variable is not thread safe, so it is only read or @@ -359,10 +363,14 @@ public class IpSecService extends IIpSecService.Stub { @VisibleForTesting static final class UserRecord { /* Maximum number of each type of resource that a single UID may possess */ - public static final int MAX_NUM_TUNNEL_INTERFACES = 2; - public static final int MAX_NUM_ENCAP_SOCKETS = 2; - public static final int MAX_NUM_TRANSFORMS = 4; - public static final int MAX_NUM_SPIS = 8; + + // Up to 4 active VPNs/IWLAN with potential soft handover. + public static final int MAX_NUM_TUNNEL_INTERFACES = 8; + public static final int MAX_NUM_ENCAP_SOCKETS = 16; + + // SPIs and Transforms are both cheap, and are 1:1 correlated. + public static final int MAX_NUM_TRANSFORMS = 64; + public static final int MAX_NUM_SPIS = 64; /** * Store each of the OwnedResource types in an (thinly wrapped) sparse array for indexing @@ -988,12 +996,13 @@ public class IpSecService extends IIpSecService.Stub { * * @param context Binder context for this service */ - private IpSecService(Context context) { - this(context, IpSecServiceConfiguration.GETSRVINSTANCE); + private IpSecService(Context context, INetworkManagementService networkManager) { + this(context, networkManager, IpSecServiceConfiguration.GETSRVINSTANCE); } - static IpSecService create(Context context) throws InterruptedException { - final IpSecService service = new IpSecService(context); + static IpSecService create(Context context, INetworkManagementService networkManager) + throws InterruptedException { + final IpSecService service = new IpSecService(context, networkManager); service.connectNativeNetdService(); return service; } @@ -1007,9 +1016,11 @@ public class IpSecService extends IIpSecService.Stub { /** @hide */ @VisibleForTesting - public IpSecService(Context context, IpSecServiceConfiguration config) { + public IpSecService(Context context, INetworkManagementService networkManager, + IpSecServiceConfiguration config) { this( context, + networkManager, config, (fd, uid) -> { try { @@ -1023,9 +1034,10 @@ public class IpSecService extends IIpSecService.Stub { /** @hide */ @VisibleForTesting - public IpSecService( - Context context, IpSecServiceConfiguration config, UidFdTagger uidFdTagger) { + public IpSecService(Context context, INetworkManagementService networkManager, + IpSecServiceConfiguration config, UidFdTagger uidFdTagger) { mContext = context; + mNetworkManager = Objects.requireNonNull(networkManager); mSrvConfig = config; mUidFdTagger = uidFdTagger; } @@ -1304,6 +1316,10 @@ public class IpSecService extends IIpSecService.Stub { final INetd netd = mSrvConfig.getNetdInstance(); netd.ipSecAddTunnelInterface(intfName, localAddr, remoteAddr, ikey, okey, resourceId); + Binder.withCleanCallingIdentity(() -> { + mNetworkManager.setInterfaceUp(intfName); + }); + for (int selAddrFamily : ADDRESS_FAMILIES) { // Always send down correct local/remote addresses for template. netd.ipSecAddSecurityPolicy( diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java index d814b9c9f1fa..8ccff7605811 100644 --- a/services/core/java/com/android/server/LocationManagerService.java +++ b/services/core/java/com/android/server/LocationManagerService.java @@ -16,7 +16,6 @@ package com.android.server; -import static android.Manifest.permission.ACCESS_COARSE_LOCATION; import static android.Manifest.permission.ACCESS_FINE_LOCATION; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE; import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; @@ -27,6 +26,9 @@ import static android.location.LocationManager.NETWORK_PROVIDER; import static android.location.LocationManager.PASSIVE_PROVIDER; import static android.os.PowerManager.locationPowerSaveModeToString; +import static com.android.server.location.CallerIdentity.PERMISSION_COARSE; +import static com.android.server.location.CallerIdentity.PERMISSION_FINE; + import static java.util.concurrent.TimeUnit.NANOSECONDS; import android.Manifest; @@ -34,17 +36,16 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.ActivityManager; -import android.app.AppOpsManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.pm.PackageManager; import android.location.Address; import android.location.Criteria; import android.location.GeocoderParams; import android.location.Geofence; +import android.location.GnssCapabilities; import android.location.GnssMeasurementCorrections; import android.location.GnssRequest; import android.location.IBatchedLocationCallback; @@ -58,6 +59,7 @@ import android.location.ILocationManager; import android.location.Location; import android.location.LocationManager; import android.location.LocationManagerInternal; +import android.location.LocationProvider; import android.location.LocationRequest; import android.location.LocationTime; import android.os.Binder; @@ -86,14 +88,15 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.content.PackageMonitor; import com.android.internal.location.ProviderProperties; import com.android.internal.location.ProviderRequest; -import com.android.internal.util.ArrayUtils; import com.android.internal.util.DumpUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.Preconditions; import com.android.server.location.AbstractLocationProvider; import com.android.server.location.AbstractLocationProvider.State; import com.android.server.location.AppForegroundHelper; +import com.android.server.location.AppOpsHelper; import com.android.server.location.CallerIdentity; +import com.android.server.location.CallerIdentity.PermissionLevel; import com.android.server.location.GeocoderProxy; import com.android.server.location.GeofenceManager; import com.android.server.location.GeofenceProxy; @@ -176,10 +179,6 @@ public class LocationManagerService extends ILocationManager.Stub { private static final String WAKELOCK_KEY = "*location*"; - private static final int RESOLUTION_LEVEL_NONE = 0; - private static final int RESOLUTION_LEVEL_COARSE = 1; - private static final int RESOLUTION_LEVEL_FINE = 2; - private static final String NETWORK_LOCATION_SERVICE_ACTION = "com.android.location.service.v3.NetworkLocationProvider"; private static final String FUSED_LOCATION_SERVICE_ACTION = @@ -208,6 +207,7 @@ public class LocationManagerService extends ILocationManager.Stub { private final Context mContext; private final Handler mHandler; private final LocalService mLocalService; + private final AppOpsHelper mAppOpsHelper; private final UserInfoHelper mUserInfoHelper; private final SettingsHelper mSettingsHelper; private final AppForegroundHelper mAppForegroundHelper; @@ -217,8 +217,6 @@ public class LocationManagerService extends ILocationManager.Stub { private final PassiveLocationProviderManager mPassiveManager; - private AppOpsManager mAppOps; - private PackageManager mPackageManager; private PowerManager mPowerManager; private GeofenceManager mGeofenceManager; @@ -252,6 +250,7 @@ public class LocationManagerService extends ILocationManager.Stub { LocalServices.addService(LocationManagerInternal.class, mLocalService); + mAppOpsHelper = new AppOpsHelper(mContext); mUserInfoHelper = new UserInfoHelper(mContext); mSettingsHelper = new SettingsHelper(mContext, mHandler); mAppForegroundHelper = new AppForegroundHelper(mContext); @@ -280,32 +279,17 @@ public class LocationManagerService extends ILocationManager.Stub { } private void onSystemReady() { + mAppOpsHelper.onSystemReady(); mUserInfoHelper.onSystemReady(); mSettingsHelper.onSystemReady(); mAppForegroundHelper.onSystemReady(); synchronized (mLock) { - mPackageManager = mContext.getPackageManager(); - mAppOps = mContext.getSystemService(AppOpsManager.class); mPowerManager = mContext.getSystemService(PowerManager.class); mGeofenceManager = new GeofenceManager(mContext, mSettingsHelper); - PowerManagerInternal localPowerManager = - LocalServices.getService(PowerManagerInternal.class); - // add listeners - mAppOps.startWatchingMode( - AppOpsManager.OP_COARSE_LOCATION, - null, - AppOpsManager.WATCH_FOREGROUND_CHANGES, - new AppOpsManager.OnOpChangedInternalListener() { - public void onOpChanged(int op, String packageName) { - // onOpChanged invoked on ui thread, move to our thread to reduce risk - // of blocking ui thread - mHandler.post(() -> onAppOpChanged(packageName)); - } - }); - mPackageManager.addOnPermissionsChangeListener( + mContext.getPackageManager().addOnPermissionsChangeListener( uid -> { // listener invoked on ui thread, move to our thread to reduce risk of // blocking ui thread @@ -316,7 +300,8 @@ public class LocationManagerService extends ILocationManager.Stub { }); }); - localPowerManager.registerLowPowerModeObserver(ServiceType.LOCATION, + LocalServices.getService(PowerManagerInternal.class).registerLowPowerModeObserver( + ServiceType.LOCATION, state -> { // listener invoked on ui thread, move to our thread to reduce risk of // blocking ui thread @@ -328,6 +313,8 @@ public class LocationManagerService extends ILocationManager.Stub { }); mBatterySaverMode = mPowerManager.getLocationPowerSaveMode(); + mAppOpsHelper.addListener(this::onAppOpChanged); + mSettingsHelper.addOnLocationEnabledChangedListener(this::onLocationModeChanged); mSettingsHelper.addOnBackgroundThrottleIntervalChangedListener( this::onBackgroundThrottleIntervalChanged); @@ -336,40 +323,32 @@ public class LocationManagerService extends ILocationManager.Stub { mSettingsHelper.addOnIgnoreSettingsPackageWhitelistChangedListener( this::onIgnoreSettingsWhitelistChanged); - new PackageMonitor() { + PackageMonitor packageMonitor = new PackageMonitor() { @Override public void onPackageDisappeared(String packageName, int reason) { synchronized (mLock) { - LocationManagerService.this.onPackageDisappearedLocked(packageName); + LocationManagerService.this.onPackageDisappeared(packageName); } } - }.register(mContext, mHandler.getLooper(), true); + }; + packageMonitor.register(mContext, null, true, mHandler); mUserInfoHelper.addListener(this::onUserChanged); mAppForegroundHelper.addListener(this::onAppForegroundChanged); - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(Intent.ACTION_SCREEN_OFF); - intentFilter.addAction(Intent.ACTION_SCREEN_ON); - + IntentFilter screenIntentFilter = new IntentFilter(); + screenIntentFilter.addAction(Intent.ACTION_SCREEN_OFF); + screenIntentFilter.addAction(Intent.ACTION_SCREEN_ON); mContext.registerReceiverAsUser(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - final String action = intent.getAction(); - if (action == null) { - return; - } - synchronized (mLock) { - switch (action) { - case Intent.ACTION_SCREEN_ON: - case Intent.ACTION_SCREEN_OFF: - onScreenStateChangedLocked(); - break; - } + if (Intent.ACTION_SCREEN_ON.equals(intent.getAction()) + || Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) { + onScreenStateChanged(); } } - }, UserHandle.ALL, intentFilter, null, mHandler); + }, UserHandle.ALL, screenIntentFilter, null, mHandler); // initialize the current users. we would get the user started notifications for these // users eventually anyways, but this takes care of it as early as possible. @@ -389,7 +368,7 @@ public class LocationManagerService extends ILocationManager.Stub { private void onAppOpChanged(String packageName) { synchronized (mLock) { for (Receiver receiver : mReceivers.values()) { - if (receiver.mCallerIdentity.mPackageName.equals(packageName)) { + if (receiver.mCallerIdentity.packageName.equals(packageName)) { receiver.updateMonitoring(true); } } @@ -398,7 +377,7 @@ public class LocationManagerService extends ILocationManager.Stub { for (Entry<String, ArrayList<UpdateRecord>> entry : mRecordsByProvider.entrySet()) { String provider = entry.getKey(); for (UpdateRecord record : entry.getValue()) { - if (record.mReceiver.mCallerIdentity.mPackageName.equals(packageName)) { + if (record.mReceiver.mCallerIdentity.packageName.equals(packageName)) { affectedProviders.add(provider); } } @@ -436,11 +415,12 @@ public class LocationManagerService extends ILocationManager.Stub { } } - @GuardedBy("mLock") - private void onScreenStateChangedLocked() { - if (mBatterySaverMode == PowerManager.LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF) { - for (LocationProviderManager manager : mProviderManagers) { - applyRequirementsLocked(manager); + private void onScreenStateChanged() { + synchronized (mLock) { + if (mBatterySaverMode == PowerManager.LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF) { + for (LocationProviderManager manager : mProviderManagers) { + applyRequirementsLocked(manager); + } } } } @@ -466,23 +446,24 @@ public class LocationManagerService extends ILocationManager.Stub { } } - @GuardedBy("mLock") - private void onPackageDisappearedLocked(String packageName) { - ArrayList<Receiver> deadReceivers = null; + private void onPackageDisappeared(String packageName) { + synchronized (mLock) { + ArrayList<Receiver> deadReceivers = null; - for (Receiver receiver : mReceivers.values()) { - if (receiver.mCallerIdentity.mPackageName.equals(packageName)) { - if (deadReceivers == null) { - deadReceivers = new ArrayList<>(); + for (Receiver receiver : mReceivers.values()) { + if (receiver.mCallerIdentity.packageName.equals(packageName)) { + if (deadReceivers == null) { + deadReceivers = new ArrayList<>(); + } + deadReceivers.add(receiver); } - deadReceivers.add(receiver); } - } - // perform removal outside of mReceivers loop - if (deadReceivers != null) { - for (Receiver receiver : deadReceivers) { - removeUpdatesLocked(receiver); + // perform removal outside of mReceivers loop + if (deadReceivers != null) { + for (Receiver receiver : deadReceivers) { + removeUpdatesLocked(receiver); + } } } } @@ -493,7 +474,7 @@ public class LocationManagerService extends ILocationManager.Stub { for (Entry<String, ArrayList<UpdateRecord>> entry : mRecordsByProvider.entrySet()) { String provider = entry.getKey(); for (UpdateRecord record : entry.getValue()) { - if (record.mReceiver.mCallerIdentity.mUid == uid + if (record.mReceiver.mCallerIdentity.uid == uid && record.mIsForegroundUid != foreground) { record.updateForeground(foreground); @@ -574,17 +555,6 @@ public class LocationManagerService extends ILocationManager.Stub { Log.e(TAG, "no geocoder provider found"); } - // bind to geofence proxy - if (mGnssManagerService != null) { - IGpsGeofenceHardware gpsGeofenceHardware = mGnssManagerService.getGpsGeofenceProxy(); - if (gpsGeofenceHardware != null) { - GeofenceProxy provider = GeofenceProxy.createAndBind(mContext, gpsGeofenceHardware); - if (provider == null) { - Log.e(TAG, "unable to bind to GeofenceProxy"); - } - } - } - // bind to hardware activity recognition HardwareActivityRecognitionProxy hardwareActivityRecognitionProxy = HardwareActivityRecognitionProxy.createAndRegister(mContext); @@ -607,19 +577,33 @@ public class LocationManagerService extends ILocationManager.Stub { Boolean.parseBoolean(fragments[7]) /* supportsBearing */, Integer.parseInt(fragments[8]) /* powerRequirement */, Integer.parseInt(fragments[9]) /* accuracy */); - addTestProvider(name, properties, mContext.getOpPackageName()); + LocationProviderManager manager = getLocationProviderManager(name); + if (manager == null) { + manager = new LocationProviderManager(name); + mProviderManagers.add(manager); + } + manager.setMockProvider(new MockProvider(properties)); } // initialize gnss last because it has no awareness of boot phases and blindly assumes that // all other location providers are loaded at initialization if (GnssManagerService.isGnssSupported()) { - mGnssManagerService = new GnssManagerService(mContext, mSettingsHelper, + mGnssManagerService = new GnssManagerService(mContext, mAppOpsHelper, mSettingsHelper, mAppForegroundHelper, mLocationUsageLogger); mGnssManagerService.onSystemReady(); LocationProviderManager gnssManager = new LocationProviderManager(GPS_PROVIDER); mProviderManagers.add(gnssManager); gnssManager.setRealProvider(mGnssManagerService.getGnssLocationProvider()); + + // bind to geofence proxy + IGpsGeofenceHardware gpsGeofenceHardware = mGnssManagerService.getGpsGeofenceProxy(); + if (gpsGeofenceHardware != null) { + GeofenceProxy provider = GeofenceProxy.createAndBind(mContext, gpsGeofenceHardware); + if (provider == null) { + Log.e(TAG, "unable to bind to GeofenceProxy"); + } + } } } @@ -742,16 +726,16 @@ public class LocationManagerService extends ILocationManager.Stub { } @Nullable - public Location getLastFineLocation(int userId) { + public Location getLastLocation(int userId, @PermissionLevel int permissionlevel) { synchronized (mLock) { - return mLastLocation.get(userId); - } - } - - @Nullable - public Location getLastCoarseLocation(int userId) { - synchronized (mLock) { - return mLastCoarseLocation.get(userId); + switch (permissionlevel) { + case PERMISSION_COARSE: + return mLastCoarseLocation.get(userId); + case PERMISSION_FINE: + return mLastLocation.get(userId); + default: + throw new AssertionError(); + } } } @@ -1037,7 +1021,6 @@ public class LocationManagerService extends ILocationManager.Stub { private final class Receiver extends LocationManagerServiceUtils.LinkedListenerBase implements PendingIntent.OnFinished { private static final long WAKELOCK_TIMEOUT_MILLIS = 60 * 1000; - private final int mAllowedResolutionLevel; // resolution level allowed to receiver private final ILocationListener mListener; final PendingIntent mPendingIntent; @@ -1054,11 +1037,9 @@ public class LocationManagerService extends ILocationManager.Stub { private int mPendingBroadcasts; PowerManager.WakeLock mWakeLock; - private Receiver(ILocationListener listener, PendingIntent intent, int pid, int uid, - String packageName, @Nullable String featureId, WorkSource workSource, - boolean hideFromAppOps, @NonNull String listenerIdentifier) { - super(new CallerIdentity(uid, pid, packageName, featureId, listenerIdentifier), - "LocationListener"); + private Receiver(ILocationListener listener, PendingIntent intent, CallerIdentity identity, + WorkSource workSource, boolean hideFromAppOps) { + super(identity); mListener = listener; mPendingIntent = intent; if (listener != null) { @@ -1066,7 +1047,6 @@ public class LocationManagerService extends ILocationManager.Stub { } else { mKey = intent; } - mAllowedResolutionLevel = getAllowedResolutionLevel(pid, uid); if (workSource != null && workSource.isEmpty()) { workSource = null; } @@ -1078,7 +1058,7 @@ public class LocationManagerService extends ILocationManager.Stub { // construct/configure wakelock mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_KEY); if (workSource == null) { - workSource = new WorkSource(mCallerIdentity.mUid, mCallerIdentity.mPackageName); + workSource = new WorkSource(mCallerIdentity.uid, mCallerIdentity.packageName); } mWakeLock.setWorkSource(workSource); @@ -1136,7 +1116,7 @@ public class LocationManagerService extends ILocationManager.Stub { if (manager == null) { continue; } - if (!manager.isEnabled(UserHandle.getUserId(mCallerIdentity.mUid)) + if (!manager.isEnabled(UserHandle.getUserId(mCallerIdentity.uid)) && !isSettingsExempt(updateRecord)) { continue; } @@ -1156,42 +1136,43 @@ public class LocationManagerService extends ILocationManager.Stub { mOpMonitoring = updateMonitoring( requestingLocation, mOpMonitoring, - AppOpsManager.OP_MONITOR_LOCATION); + false); // Now update monitoring of high power requests only. boolean wasHighPowerMonitoring = mOpHighPowerMonitoring; mOpHighPowerMonitoring = updateMonitoring( requestingHighPowerLocation, mOpHighPowerMonitoring, - AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION); + true); if (mOpHighPowerMonitoring != wasHighPowerMonitoring) { - // Send an intent to notify that a high power request has been added/removed. - Intent intent = new Intent(LocationManager.HIGH_POWER_REQUEST_CHANGE_ACTION); - mContext.sendBroadcastAsUser(intent, UserHandle.ALL); + long identity = Binder.clearCallingIdentity(); + try { + // Send an intent to notify that a high power request has been added/removed. + Intent intent = new Intent(LocationManager.HIGH_POWER_REQUEST_CHANGE_ACTION); + mContext.sendBroadcastAsUser(intent, UserHandle.ALL); + } finally { + Binder.restoreCallingIdentity(identity); + } } } - /** - * Update AppOps monitoring for a single location request and op type. - * - * @param allowMonitoring True if monitoring is allowed for this request/op. - * @param currentlyMonitoring True if AppOps is currently monitoring this request/op. - * @param op AppOps code for the op to update. - * @return True if monitoring is on for this request/op after updating. - */ private boolean updateMonitoring(boolean allowMonitoring, boolean currentlyMonitoring, - int op) { + boolean highPower) { if (!currentlyMonitoring) { if (allowMonitoring) { - return mAppOps.startOpNoThrow(op, mCallerIdentity.mUid, - mCallerIdentity.mPackageName, false, mCallerIdentity.mFeatureId, null) - == AppOpsManager.MODE_ALLOWED; + if (!highPower) { + return mAppOpsHelper.startLocationMonitoring(mCallerIdentity); + } else { + return mAppOpsHelper.startHighPowerLocationMonitoring(mCallerIdentity); + } } } else { - if (!allowMonitoring - || mAppOps.checkOpNoThrow(op, mCallerIdentity.mUid, - mCallerIdentity.mPackageName) != AppOpsManager.MODE_ALLOWED) { - mAppOps.finishOp(op, mCallerIdentity.mUid, mCallerIdentity.mPackageName); + if (!allowMonitoring || !mAppOpsHelper.checkLocationAccess(mCallerIdentity)) { + if (!highPower) { + mAppOpsHelper.stopLocationMonitoring(mCallerIdentity); + } else { + mAppOpsHelper.stopHighPowerLocationMonitoring(mCallerIdentity); + } return false; } } @@ -1230,7 +1211,7 @@ public class LocationManagerService extends ILocationManager.Stub { new Location(location)); try { mPendingIntent.send(mContext, 0, locationChanged, this, mHandler, - getResolutionPermission(mAllowedResolutionLevel), + CallerIdentity.asPermission(mCallerIdentity.permissionLevel), PendingIntentUtils.createDontSendToRestrictedAppsBundle(null)); // call this after broadcasting so we do not increment // if we throw an exception. @@ -1265,7 +1246,7 @@ public class LocationManagerService extends ILocationManager.Stub { providerIntent.putExtra(LocationManager.KEY_PROVIDER_ENABLED, enabled); try { mPendingIntent.send(mContext, 0, providerIntent, this, mHandler, - getResolutionPermission(mAllowedResolutionLevel), + CallerIdentity.asPermission(mCallerIdentity.permissionLevel), PendingIntentUtils.createDontSendToRestrictedAppsBundle(null)); // call this after broadcasting so we do not increment // if we throw an exception. @@ -1289,8 +1270,6 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public void binderDied() { - if (D) Log.d(TAG, "Remote " + mListenerName + " died."); - synchronized (mLock) { removeUpdatesLocked(this); clearPendingBroadcastsLocked(); @@ -1380,11 +1359,9 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public boolean addGnssBatchingCallback(IBatchedLocationCallback callback, String packageName, - String featureId, String listenerIdentifier) { - Objects.requireNonNull(listenerIdentifier); - + String featureId) { return mGnssManagerService != null && mGnssManagerService.addGnssBatchingCallback( - callback, packageName, featureId, listenerIdentifier); + callback, packageName, featureId); } @Override @@ -1393,9 +1370,10 @@ public class LocationManagerService extends ILocationManager.Stub { } @Override - public boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName) { + public boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName, + String featureId) { return mGnssManagerService != null && mGnssManagerService.startGnssBatch(periodNanos, - wakeOnFifoFull, packageName); + wakeOnFifoFull, packageName, featureId); } @Override @@ -1419,110 +1397,6 @@ public class LocationManagerService extends ILocationManager.Stub { return null; } - private String getResolutionPermission(int resolutionLevel) { - switch (resolutionLevel) { - case RESOLUTION_LEVEL_FINE: - return ACCESS_FINE_LOCATION; - case RESOLUTION_LEVEL_COARSE: - return ACCESS_COARSE_LOCATION; - default: - return null; - } - } - - private int getAllowedResolutionLevel(int pid, int uid) { - if (mContext.checkPermission(ACCESS_FINE_LOCATION, pid, uid) == PERMISSION_GRANTED) { - return RESOLUTION_LEVEL_FINE; - } else if (mContext.checkPermission(ACCESS_COARSE_LOCATION, pid, uid) - == PERMISSION_GRANTED) { - return RESOLUTION_LEVEL_COARSE; - } else { - return RESOLUTION_LEVEL_NONE; - } - } - - private int getCallerAllowedResolutionLevel() { - return getAllowedResolutionLevel(Binder.getCallingPid(), Binder.getCallingUid()); - } - - private boolean checkCallingOrSelfLocationPermission() { - return mContext.checkCallingOrSelfPermission(ACCESS_COARSE_LOCATION) == PERMISSION_GRANTED - || mContext.checkCallingOrSelfPermission(ACCESS_FINE_LOCATION) - == PERMISSION_GRANTED; - } - - private void enforceCallingOrSelfLocationPermission() { - if (checkCallingOrSelfLocationPermission()) { - return; - } - - throw new SecurityException("uid " + Binder.getCallingUid() + " does not have " - + ACCESS_COARSE_LOCATION + " or " + ACCESS_FINE_LOCATION + "."); - } - - private void enforceCallingOrSelfPackageName(String packageName) { - int uid = Binder.getCallingUid(); - if (ArrayUtils.contains(mPackageManager.getPackagesForUid(uid), packageName)) { - return; - } - - throw new SecurityException("invalid package \"" + packageName + "\" for uid " + uid); - } - - public static int resolutionLevelToOp(int allowedResolutionLevel) { - if (allowedResolutionLevel != RESOLUTION_LEVEL_NONE) { - if (allowedResolutionLevel == RESOLUTION_LEVEL_COARSE) { - return AppOpsManager.OP_COARSE_LOCATION; - } else { - return AppOpsManager.OP_FINE_LOCATION; - } - } - return -1; - } - - private static String resolutionLevelToOpStr(int allowedResolutionLevel) { - switch (allowedResolutionLevel) { - case RESOLUTION_LEVEL_COARSE: - return AppOpsManager.OPSTR_COARSE_LOCATION; - case RESOLUTION_LEVEL_FINE: - // fall through - case RESOLUTION_LEVEL_NONE: - // fall through - default: - // Use the most restrictive ops if not sure. - return AppOpsManager.OPSTR_FINE_LOCATION; - } - } - - private boolean reportLocationAccessNoThrow(int pid, int uid, String packageName, - @Nullable String featureId, int allowedResolutionLevel, @Nullable String message) { - int op = resolutionLevelToOp(allowedResolutionLevel); - if (op >= 0) { - if (mAppOps.noteOpNoThrow(op, uid, packageName, featureId, message) - != AppOpsManager.MODE_ALLOWED) { - return false; - } - } - - return getAllowedResolutionLevel(pid, uid) >= allowedResolutionLevel; - } - - private boolean checkLocationAccess(int pid, int uid, String packageName, - int allowedResolutionLevel) { - int op = resolutionLevelToOp(allowedResolutionLevel); - if (op >= 0) { - if (mAppOps.checkOp(op, uid, packageName) != AppOpsManager.MODE_ALLOWED) { - return false; - } - } - - return getAllowedResolutionLevel(pid, uid) >= allowedResolutionLevel; - } - - /** - * Returns all providers by name, including passive and the ones that are not permitted to - * be accessed by the calling activity or are currently disabled, but excluding fused. - */ @Override public List<String> getAllProviders() { ArrayList<String> providers = new ArrayList<>(mProviderManagers.size()); @@ -1535,14 +1409,9 @@ public class LocationManagerService extends ILocationManager.Stub { return providers; } - /** - * Return all providers by name, that match criteria and are optionally - * enabled. - * Can return passive provider, but never returns fused provider. - */ @Override public List<String> getProviders(Criteria criteria, boolean enabledOnly) { - if (!checkCallingOrSelfLocationPermission()) { + if (!CallerIdentity.checkCallingOrSelfLocationPermission(mContext)) { return Collections.emptyList(); } @@ -1556,9 +1425,8 @@ public class LocationManagerService extends ILocationManager.Stub { if (enabledOnly && !manager.isEnabled(UserHandle.getCallingUserId())) { continue; } - if (criteria != null - && !android.location.LocationProvider.propertiesMeetCriteria( - name, manager.getProperties(), criteria)) { + if (criteria != null && !LocationProvider.propertiesMeetCriteria(name, + manager.getProperties(), criteria)) { continue; } providers.add(name); @@ -1567,18 +1435,14 @@ public class LocationManagerService extends ILocationManager.Stub { } } - /** - * Return the name of the best provider given a Criteria object. - * This method has been deprecated from the public API, - * and the whole LocationProvider (including #meetsCriteria) - * has been deprecated as well. So this method now uses - * some simplified logic. - */ @Override public String getBestProvider(Criteria criteria, boolean enabledOnly) { - List<String> providers = getProviders(criteria, enabledOnly); - if (providers.isEmpty()) { - providers = getProviders(null, enabledOnly); + List<String> providers; + synchronized (mLock) { + providers = getProviders(criteria, enabledOnly); + if (providers.isEmpty()) { + providers = getProviders(null, enabledOnly); + } } if (!providers.isEmpty()) { @@ -1601,7 +1465,7 @@ public class LocationManagerService extends ILocationManager.Stub { if (records != null) { for (UpdateRecord record : records) { if (!mUserInfoHelper.isCurrentUserId( - UserHandle.getUserId(record.mReceiver.mCallerIdentity.mUid))) { + UserHandle.getUserId(record.mReceiver.mCallerIdentity.uid))) { continue; } @@ -1658,20 +1522,17 @@ public class LocationManagerService extends ILocationManager.Stub { // initialize the low power mode to true and set to false if any of the records requires providerRequest.setLowPowerMode(true); for (UpdateRecord record : records) { - int userId = UserHandle.getUserId(record.mReceiver.mCallerIdentity.mUid); - if (!mUserInfoHelper.isCurrentUserId(userId)) { + CallerIdentity identity = record.mReceiver.mCallerIdentity; + if (!mUserInfoHelper.isCurrentUserId(identity.userId)) { continue; } - if (!checkLocationAccess( - record.mReceiver.mCallerIdentity.mPid, - record.mReceiver.mCallerIdentity.mUid, - record.mReceiver.mCallerIdentity.mPackageName, - record.mReceiver.mAllowedResolutionLevel)) { + + if (!mAppOpsHelper.checkLocationAccess(identity)) { continue; } final boolean isBatterySaverDisablingLocation = shouldThrottleRequests || (isForegroundOnlyMode && !record.mIsForegroundUid); - if (!manager.isEnabled(userId) || isBatterySaverDisablingLocation) { + if (!manager.isEnabled(identity.userId) || isBatterySaverDisablingLocation) { if (isSettingsExempt(record)) { providerRequest.setLocationSettingsIgnored(true); providerRequest.setLowPowerMode(false); @@ -1718,7 +1579,7 @@ public class LocationManagerService extends ILocationManager.Stub { long thresholdInterval = (providerRequest.getInterval() + 1000) * 3 / 2; for (UpdateRecord record : records) { if (mUserInfoHelper.isCurrentUserId( - UserHandle.getUserId(record.mReceiver.mCallerIdentity.mUid))) { + UserHandle.getUserId(record.mReceiver.mCallerIdentity.uid))) { LocationRequest locationRequest = record.mRequest; // Don't assign battery blame for update records whose @@ -1735,8 +1596,8 @@ public class LocationManagerService extends ILocationManager.Stub { // Assign blame to caller if there's no WorkSource associated with // the request or if it's invalid. providerRequest.getWorkSource().add( - record.mReceiver.mCallerIdentity.mUid, - record.mReceiver.mCallerIdentity.mPackageName); + record.mReceiver.mCallerIdentity.uid, + record.mReceiver.mCallerIdentity.packageName); } } } @@ -1775,16 +1636,16 @@ public class LocationManagerService extends ILocationManager.Stub { } private boolean isThrottlingExempt(CallerIdentity callerIdentity) { - if (callerIdentity.mUid == Process.SYSTEM_UID) { + if (callerIdentity.uid == Process.SYSTEM_UID) { return true; } if (mSettingsHelper.getBackgroundThrottlePackageWhitelist().contains( - callerIdentity.mPackageName)) { + callerIdentity.packageName)) { return true; } - return mLocalService.isProviderPackage(callerIdentity.mPackageName); + return mLocalService.isProviderPackage(callerIdentity.packageName); } @@ -1794,11 +1655,11 @@ public class LocationManagerService extends ILocationManager.Stub { } if (mSettingsHelper.getIgnoreSettingsPackageWhitelist().contains( - record.mReceiver.mCallerIdentity.mPackageName)) { + record.mReceiver.mCallerIdentity.packageName)) { return true; } - return mLocalService.isProviderPackage(record.mReceiver.mCallerIdentity.mPackageName); + return mLocalService.isProviderPackage(record.mReceiver.mCallerIdentity.packageName); } @@ -1821,9 +1682,9 @@ public class LocationManagerService extends ILocationManager.Stub { mRealRequest = request; mRequest = request; mReceiver = receiver; - mIsForegroundUid = mAppForegroundHelper.isAppForeground(mReceiver.mCallerIdentity.mUid); + mIsForegroundUid = mAppForegroundHelper.isAppForeground(mReceiver.mCallerIdentity.uid); - if (D && receiver.mCallerIdentity.mPid == Process.myPid()) { + if (D && receiver.mCallerIdentity.pid == Process.myPid()) { mStackTrace = new Throwable(); } @@ -1835,7 +1696,7 @@ public class LocationManagerService extends ILocationManager.Stub { // Update statistics for historical location requests by package/provider mRequestStatistics.startRequesting( - mReceiver.mCallerIdentity.mPackageName, mReceiver.mCallerIdentity.mFeatureId, + mReceiver.mCallerIdentity.packageName, mReceiver.mCallerIdentity.featureId, provider, request.getInterval(), mIsForegroundUid); } @@ -1845,7 +1706,7 @@ public class LocationManagerService extends ILocationManager.Stub { private void updateForeground(boolean isForeground) { mIsForegroundUid = isForeground; mRequestStatistics.updateForeground( - mReceiver.mCallerIdentity.mPackageName, mReceiver.mCallerIdentity.mFeatureId, + mReceiver.mCallerIdentity.packageName, mReceiver.mCallerIdentity.featureId, mProvider, isForeground); } @@ -1853,19 +1714,18 @@ public class LocationManagerService extends ILocationManager.Stub { * Method to be called when a record will no longer be used. */ private void disposeLocked(boolean removeReceiver) { - String packageName = mReceiver.mCallerIdentity.mPackageName; - mRequestStatistics.stopRequesting(packageName, mReceiver.mCallerIdentity.mFeatureId, - mProvider); + CallerIdentity identity = mReceiver.mCallerIdentity; + mRequestStatistics.stopRequesting(identity.packageName, identity.featureId, mProvider); mLocationUsageLogger.logLocationApiUsage( LocationStatsEnums.USAGE_ENDED, LocationStatsEnums.API_REQUEST_LOCATION_UPDATES, - packageName, + identity.packageName, mRealRequest, mReceiver.isListener(), mReceiver.isPendingIntent(), /* geofence= */ null, - mAppForegroundHelper.getImportance(mReceiver.mCallerIdentity.mUid)); + mAppForegroundHelper.getImportance(mReceiver.mCallerIdentity.uid)); // remove from mRecordsByProvider ArrayList<UpdateRecord> globalRecords = mRecordsByProvider.get(this.mProvider); @@ -1889,18 +1749,10 @@ public class LocationManagerService extends ILocationManager.Stub { public String toString() { StringBuilder b = new StringBuilder("UpdateRecord["); b.append(mProvider).append(" "); - b.append(mReceiver.mCallerIdentity.mPackageName); - String featureId = mReceiver.mCallerIdentity.mFeatureId; - if (featureId != null) { - b.append(" ").append(featureId).append(" "); - } - b.append("(").append(mReceiver.mCallerIdentity.mUid); - if (mIsForegroundUid) { - b.append(" foreground"); - } else { - b.append(" background"); + b.append(mReceiver.mCallerIdentity).append(" "); + if (!mIsForegroundUid) { + b.append("(background) "); } - b.append(") "); b.append(mRealRequest).append(" ").append(mReceiver.mWorkSource); if (mStackTrace != null) { @@ -1915,14 +1767,13 @@ public class LocationManagerService extends ILocationManager.Stub { } @GuardedBy("mLock") - private Receiver getReceiverLocked(ILocationListener listener, int pid, int uid, - String packageName, @Nullable String featureId, WorkSource workSource, - boolean hideFromAppOps, @NonNull String listenerIdentifier) { + private Receiver getReceiverLocked(ILocationListener listener, CallerIdentity identity, + WorkSource workSource, boolean hideFromAppOps) { IBinder binder = listener.asBinder(); Receiver receiver = mReceivers.get(binder); - if (receiver == null) { - receiver = new Receiver(listener, null, pid, uid, packageName, featureId, workSource, - hideFromAppOps, listenerIdentifier); + if (receiver == null && identity != null) { + receiver = new Receiver(listener, null, identity, workSource, + hideFromAppOps); if (!receiver.linkToListenerDeathNotificationLocked( receiver.getListener().asBinder())) { return null; @@ -1933,13 +1784,12 @@ public class LocationManagerService extends ILocationManager.Stub { } @GuardedBy("mLock") - private Receiver getReceiverLocked(PendingIntent intent, int pid, int uid, String packageName, - @Nullable String featureId, WorkSource workSource, boolean hideFromAppOps, - @NonNull String listenerIdentifier) { + private Receiver getReceiverLocked(PendingIntent intent, CallerIdentity identity, + WorkSource workSource, boolean hideFromAppOps) { Receiver receiver = mReceivers.get(intent); - if (receiver == null) { - receiver = new Receiver(null, intent, pid, uid, packageName, featureId, workSource, - hideFromAppOps, listenerIdentifier); + if (receiver == null && identity != null) { + receiver = new Receiver(null, intent, identity, workSource, + hideFromAppOps); mReceivers.put(intent, receiver); } return receiver; @@ -1953,14 +1803,14 @@ public class LocationManagerService extends ILocationManager.Stub { * @return a version of request that meets the given resolution and consistency requirements * @hide */ - private LocationRequest createSanitizedRequest(LocationRequest request, int resolutionLevel, + private LocationRequest createSanitizedRequest(LocationRequest request, CallerIdentity identity, boolean callerHasLocationHardwarePermission) { LocationRequest sanitizedRequest = new LocationRequest(request); if (!callerHasLocationHardwarePermission) { // allow setting low power mode only for callers with location hardware permission sanitizedRequest.setLowPowerMode(false); } - if (resolutionLevel < RESOLUTION_LEVEL_FINE) { + if (identity.permissionLevel < PERMISSION_FINE) { switch (sanitizedRequest.getQuality()) { case LocationRequest.ACCURACY_FINE: sanitizedRequest.setQuality(LocationRequest.ACCURACY_BLOCK); @@ -1986,72 +1836,58 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public void requestLocationUpdates(LocationRequest request, ILocationListener listener, - PendingIntent intent, String packageName, String featureId, - String listenerIdentifier) { - Objects.requireNonNull(listenerIdentifier); - - enforceCallingOrSelfLocationPermission(); - enforceCallingOrSelfPackageName(packageName); - - synchronized (mLock) { - if (request == null) request = DEFAULT_LOCATION_REQUEST; - int allowedResolutionLevel = getCallerAllowedResolutionLevel(); - WorkSource workSource = request.getWorkSource(); - if (workSource != null && !workSource.isEmpty()) { - mContext.enforceCallingOrSelfPermission( - Manifest.permission.UPDATE_DEVICE_STATS, null); - } - boolean hideFromAppOps = request.getHideFromAppOps(); - if (hideFromAppOps) { - mContext.enforceCallingOrSelfPermission( - Manifest.permission.UPDATE_APP_OPS_STATS, null); - } - if (request.isLocationSettingsIgnored()) { - mContext.enforceCallingOrSelfPermission( - Manifest.permission.WRITE_SECURE_SETTINGS, null); - } - boolean callerHasLocationHardwarePermission = - mContext.checkCallingPermission(android.Manifest.permission.LOCATION_HARDWARE) - == PERMISSION_GRANTED; - LocationRequest sanitizedRequest = createSanitizedRequest(request, - allowedResolutionLevel, - callerHasLocationHardwarePermission); - - final int pid = Binder.getCallingPid(); - final int uid = Binder.getCallingUid(); + PendingIntent intent, String packageName, String featureId) { + if (request == null) { + request = DEFAULT_LOCATION_REQUEST; + } - long identity = Binder.clearCallingIdentity(); - try { + CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, featureId); + identity.enforceLocationPermission(); - // We don't check for MODE_IGNORED here; we will do that when we go to deliver - // a location. - checkLocationAccess(pid, uid, packageName, allowedResolutionLevel); + WorkSource workSource = request.getWorkSource(); + if (workSource != null && !workSource.isEmpty()) { + mContext.enforceCallingOrSelfPermission( + Manifest.permission.UPDATE_DEVICE_STATS, null); + } + boolean hideFromAppOps = request.getHideFromAppOps(); + if (hideFromAppOps) { + mContext.enforceCallingOrSelfPermission( + Manifest.permission.UPDATE_APP_OPS_STATS, null); + } + if (request.isLocationSettingsIgnored()) { + mContext.enforceCallingOrSelfPermission( + Manifest.permission.WRITE_SECURE_SETTINGS, null); + } + boolean callerHasLocationHardwarePermission = + mContext.checkCallingPermission(android.Manifest.permission.LOCATION_HARDWARE) + == PERMISSION_GRANTED; + LocationRequest sanitizedRequest = createSanitizedRequest(request, + identity, + callerHasLocationHardwarePermission); - if (intent == null && listener == null) { - throw new IllegalArgumentException("need either listener or intent"); - } else if (intent != null && listener != null) { - throw new IllegalArgumentException( - "cannot register both listener and intent"); - } + if (intent == null && listener == null) { + throw new IllegalArgumentException("need either listener or intent"); + } else if (intent != null && listener != null) { + throw new IllegalArgumentException( + "cannot register both listener and intent"); + } - mLocationUsageLogger.logLocationApiUsage( - LocationStatsEnums.USAGE_STARTED, - LocationStatsEnums.API_REQUEST_LOCATION_UPDATES, - packageName, request, listener != null, intent != null, - /* geofence= */ null, - mAppForegroundHelper.getImportance(uid)); + mLocationUsageLogger.logLocationApiUsage( + LocationStatsEnums.USAGE_STARTED, + LocationStatsEnums.API_REQUEST_LOCATION_UPDATES, + packageName, request, listener != null, intent != null, + /* geofence= */ null, + mAppForegroundHelper.getImportance(identity.uid)); - Receiver receiver; - if (intent != null) { - receiver = getReceiverLocked(intent, pid, uid, packageName, featureId, - workSource, hideFromAppOps, listenerIdentifier); - } else { - receiver = getReceiverLocked(listener, pid, uid, packageName, featureId, - workSource, hideFromAppOps, listenerIdentifier); - } + synchronized (mLock) { + Receiver receiver; + if (intent != null) { + receiver = getReceiverLocked(intent, identity, workSource, hideFromAppOps); + } else { + receiver = getReceiverLocked(listener, identity, workSource, hideFromAppOps); + } + if (receiver != null) { requestLocationUpdatesLocked(sanitizedRequest, receiver); - } finally { - Binder.restoreCallingIdentity(identity); } } } @@ -2078,28 +1914,27 @@ public class LocationManagerService extends ILocationManager.Stub { oldRecord.disposeLocked(false); } - int userId = UserHandle.getUserId(receiver.mCallerIdentity.mUid); - if (!manager.isEnabled(userId) && !isSettingsExempt(record)) { - // Notify the listener that updates are currently disabled - but only if the request - // does not ignore location settings - receiver.callProviderEnabledLocked(name, false); - } + long identity = Binder.clearCallingIdentity(); + try { + int userId = UserHandle.getUserId(receiver.mCallerIdentity.uid); + if (!manager.isEnabled(userId) && !isSettingsExempt(record)) { + // Notify the listener that updates are currently disabled - but only if the request + // does not ignore location settings + receiver.callProviderEnabledLocked(name, false); + } - applyRequirementsLocked(name); + applyRequirementsLocked(name); - // Update the monitoring here just in case multiple location requests were added to the - // same receiver (this request may be high power and the initial might not have been). - receiver.updateMonitoring(true); + // Update the monitoring here just in case multiple location requests were added to the + // same receiver (this request may be high power and the initial might not have been). + receiver.updateMonitoring(true); + } finally { + Binder.restoreCallingIdentity(identity); + } } @Override - public void removeUpdates(ILocationListener listener, PendingIntent intent, - String packageName) { - enforceCallingOrSelfPackageName(packageName); - - int pid = Binder.getCallingPid(); - int uid = Binder.getCallingUid(); - + public void removeUpdates(ILocationListener listener, PendingIntent intent) { if (intent == null && listener == null) { throw new IllegalArgumentException("need either listener or intent"); } else if (intent != null && listener != null) { @@ -2109,17 +1944,13 @@ public class LocationManagerService extends ILocationManager.Stub { synchronized (mLock) { Receiver receiver; if (intent != null) { - receiver = getReceiverLocked(intent, pid, uid, packageName, null, null, false, ""); + receiver = getReceiverLocked(intent, null, null, false); } else { - receiver = getReceiverLocked(listener, pid, uid, packageName, null, null, false, - ""); + receiver = getReceiverLocked(listener, null, null, false); } - long identity = Binder.clearCallingIdentity(); - try { + if (receiver != null) { removeUpdatesLocked(receiver); - } finally { - Binder.restoreCallingIdentity(identity); } } } @@ -2161,25 +1992,14 @@ public class LocationManagerService extends ILocationManager.Stub { request = DEFAULT_LOCATION_REQUEST; } - enforceCallingOrSelfLocationPermission(); - enforceCallingOrSelfPackageName(packageName); + // unsafe is ok because app ops will verify the package name + CallerIdentity identity = CallerIdentity.fromBinderUnsafe(mContext, packageName, featureId); + identity.enforceLocationPermission(); - int allowedResolutionLevel = getCallerAllowedResolutionLevel(); - if (!reportLocationAccessNoThrow(Binder.getCallingPid(), Binder.getCallingUid(), - packageName, featureId, allowedResolutionLevel, null)) { - if (D) { - Log.d(TAG, "not returning last loc for no op app: " + packageName); - } + if (mSettingsHelper.isLocationPackageBlacklisted(identity.userId, identity.packageName)) { return null; } - - int userId = UserHandle.getCallingUserId(); - - if (mSettingsHelper.isLocationPackageBlacklisted(userId, packageName)) { - return null; - } - - if (!mUserInfoHelper.isCurrentUserId(userId)) { + if (!mUserInfoHelper.isCurrentUserId(identity.userId)) { return null; } @@ -2188,40 +2008,26 @@ public class LocationManagerService extends ILocationManager.Stub { if (manager == null) { return null; } - - if (!manager.isEnabled(userId) && !request.isLocationSettingsIgnored()) { + if (!manager.isEnabled(identity.userId) && !request.isLocationSettingsIgnored()) { return null; } - Location location; - if (allowedResolutionLevel < RESOLUTION_LEVEL_FINE) { - location = manager.getLastCoarseLocation(userId); - } else { - location = manager.getLastFineLocation(userId); - } - if (location == null) { + // appops check should always be right before delivery + if (!mAppOpsHelper.noteLocationAccess(identity)) { return null; } - // Don't return stale location to apps with foreground-only location permission. - String op = resolutionLevelToOpStr(allowedResolutionLevel); - long locationAgeMs = NANOSECONDS.toMillis( - SystemClock.elapsedRealtime() - location.getElapsedRealtimeNanos()); - if (locationAgeMs > mSettingsHelper.getMaxLastLocationAgeMs() - && (mAppOps.unsafeCheckOp(op, Binder.getCallingUid(), packageName) - == AppOpsManager.MODE_FOREGROUND)) { - return null; - } + Location location = manager.getLastLocation(identity.userId, identity.permissionLevel); // make a defensive copy - the client could be in the same process as us - return new Location(location); + return location != null ? new Location(location) : null; } } @Override public boolean getCurrentLocation(LocationRequest locationRequest, ICancellationSignal remoteCancellationSignal, ILocationListener listener, - String packageName, String featureId, String listenerIdentifier) { + String packageName, String featureId) { // side effect of validating locationRequest and packageName Location lastLocation = getLastLocation(locationRequest, packageName, featureId); if (lastLocation != null) { @@ -2246,13 +2052,12 @@ public class LocationManagerService extends ILocationManager.Stub { } } - requestLocationUpdates(locationRequest, listener, null, packageName, featureId, - listenerIdentifier); + requestLocationUpdates(locationRequest, listener, null, packageName, featureId); CancellationSignal cancellationSignal = CancellationSignal.fromTransport( remoteCancellationSignal); if (cancellationSignal != null) { cancellationSignal.setOnCancelListener( - () -> removeUpdates(listener, null, packageName)); + () -> removeUpdates(listener, null)); } return true; } @@ -2265,14 +2070,14 @@ public class LocationManagerService extends ILocationManager.Stub { return null; } - Location location = gpsManager.getLastFineLocation(UserHandle.getCallingUserId()); + Location location = gpsManager.getLastLocation(UserHandle.getCallingUserId(), + PERMISSION_FINE); if (location == null) { return null; } long currentNanos = SystemClock.elapsedRealtimeNanos(); - long deltaMs = NANOSECONDS.toMillis( - currentNanos - location.getElapsedRealtimeNanos()); + long deltaMs = NANOSECONDS.toMillis(location.getElapsedRealtimeAgeNanos(currentNanos)); return new LocationTime(location.getTime() + deltaMs, currentNanos); } } @@ -2295,32 +2100,27 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public void requestGeofence(LocationRequest request, Geofence geofence, PendingIntent intent, - String packageName, String featureId, String listenerIdentifier) { - Objects.requireNonNull(listenerIdentifier); + String packageName, String featureId) { + if (request == null) { + request = DEFAULT_LOCATION_REQUEST; + } - mContext.enforceCallingOrSelfPermission(ACCESS_FINE_LOCATION, null); - enforceCallingOrSelfPackageName(packageName); + CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, featureId); + identity.enforceLocationPermission(); + + Objects.requireNonNull(intent); - if (request == null) request = DEFAULT_LOCATION_REQUEST; - int allowedResolutionLevel = getCallerAllowedResolutionLevel(); - if (intent == null) { - throw new IllegalArgumentException("invalid pending intent: " + null); - } - // Require that caller can manage given document boolean callerHasLocationHardwarePermission = mContext.checkCallingPermission(android.Manifest.permission.LOCATION_HARDWARE) == PERMISSION_GRANTED; - LocationRequest sanitizedRequest = createSanitizedRequest(request, - allowedResolutionLevel, + LocationRequest sanitizedRequest = createSanitizedRequest(request, identity, callerHasLocationHardwarePermission); if (D) { Log.d(TAG, "requestGeofence: " + sanitizedRequest + " " + geofence + " " + intent); } - // geo-fence manager uses the public location API, need to clear identity - int uid = Binder.getCallingUid(); - if (UserHandle.getUserId(uid) != UserHandle.USER_SYSTEM) { + if (identity.userId != UserHandle.USER_SYSTEM) { // temporary measure until geofences work for secondary users Log.w(TAG, "proximity alerts are currently available only to the primary user"); return; @@ -2334,15 +2134,9 @@ public class LocationManagerService extends ILocationManager.Stub { /* hasListener= */ false, true, geofence, - mAppForegroundHelper.getImportance(uid)); + mAppForegroundHelper.getImportance(identity.uid)); - long identity = Binder.clearCallingIdentity(); - try { - mGeofenceManager.addFence(sanitizedRequest, geofence, intent, allowedResolutionLevel, - uid, packageName, featureId, listenerIdentifier); - } finally { - Binder.restoreCallingIdentity(identity); - } + mGeofenceManager.addFence(sanitizedRequest, geofence, intent, identity); } @Override @@ -2350,7 +2144,6 @@ public class LocationManagerService extends ILocationManager.Stub { if (intent == null) { throw new IllegalArgumentException("invalid pending intent: " + null); } - enforceCallingOrSelfPackageName(packageName); if (D) Log.d(TAG, "removeGeofence: " + geofence + " " + intent); @@ -2387,13 +2180,9 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public boolean addGnssMeasurementsListener(@Nullable GnssRequest request, - IGnssMeasurementsListener listener, - String packageName, String featureId, - String listenerIdentifier) { - Objects.requireNonNull(listenerIdentifier); - + IGnssMeasurementsListener listener, String packageName, String featureId) { return mGnssManagerService != null && mGnssManagerService.addGnssMeasurementsListener( - request, listener, packageName, featureId, listenerIdentifier); + request, listener, packageName, featureId); } @Override @@ -2414,18 +2203,17 @@ public class LocationManagerService extends ILocationManager.Stub { } @Override - public long getGnssCapabilities(String packageName) { - return mGnssManagerService == null ? 0L : mGnssManagerService.getGnssCapabilities( - packageName); + public long getGnssCapabilities() { + return mGnssManagerService == null ? GnssCapabilities.INVALID_CAPABILITIES + : mGnssManagerService.getGnssCapabilities(); } @Override public boolean addGnssAntennaInfoListener(IGnssAntennaInfoListener listener, - String packageName, String featureId, String listenerIdentifier) { - Objects.requireNonNull(listenerIdentifier); + String packageName, String featureId) { return mGnssManagerService != null && mGnssManagerService.addGnssAntennaInfoListener( - listener, packageName, featureId, listenerIdentifier); + listener, packageName, featureId); } @Override @@ -2437,11 +2225,9 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public boolean addGnssNavigationMessageListener(IGnssNavigationMessageListener listener, - String packageName, String featureId, String listenerIdentifier) { - Objects.requireNonNull(listenerIdentifier); - + String packageName, String featureId) { return mGnssManagerService != null && mGnssManagerService.addGnssNavigationMessageListener( - listener, packageName, featureId, listenerIdentifier); + listener, packageName, featureId); } @Override @@ -2453,29 +2239,27 @@ public class LocationManagerService extends ILocationManager.Stub { } @Override - public boolean sendExtraCommand(String providerName, String command, Bundle extras) { - Objects.requireNonNull(providerName); - Objects.requireNonNull(command); - + public boolean sendExtraCommand(String provider, String command, Bundle extras) { + CallerIdentity.enforceCallingOrSelfLocationPermission(mContext); mContext.enforceCallingOrSelfPermission( Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, null); - enforceCallingOrSelfLocationPermission(); + + LocationProviderManager manager = getLocationProviderManager( + Objects.requireNonNull(provider)); + if (manager != null) { + manager.sendExtraCommand(Binder.getCallingUid(), Binder.getCallingPid(), + Objects.requireNonNull(command), extras); + } mLocationUsageLogger.logLocationApiUsage( LocationStatsEnums.USAGE_STARTED, LocationStatsEnums.API_SEND_EXTRA_COMMAND, - providerName); - - LocationProviderManager manager = getLocationProviderManager(providerName); - if (manager != null) { - manager.sendExtraCommand(Binder.getCallingUid(), Binder.getCallingPid(), command, - extras); - } + provider); mLocationUsageLogger.logLocationApiUsage( LocationStatsEnums.USAGE_ENDED, LocationStatsEnums.API_SEND_EXTRA_COMMAND, - providerName); + provider); return true; } @@ -2537,12 +2321,10 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public void setLocationEnabledForUser(boolean enabled, int userId) { - if (UserHandle.getCallingUserId() != userId) { - mContext.enforceCallingOrSelfPermission(Manifest.permission.INTERACT_ACROSS_USERS, - null); - } - mContext.enforceCallingOrSelfPermission(Manifest.permission.WRITE_SECURE_SETTINGS, - "Requires WRITE_SECURE_SETTINGS permission"); + userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), + userId, false, false, "setLocationEnabledForUser", null); + + mContext.enforceCallingOrSelfPermission(Manifest.permission.WRITE_SECURE_SETTINGS, null); LocationManager.invalidateLocalLocationEnabledCaches(); mSettingsHelper.setLocationEnabled(enabled, userId); @@ -2601,7 +2383,7 @@ public class LocationManagerService extends ILocationManager.Stub { } @GuardedBy("mLock") - private void handleLocationChangedLocked(LocationProviderManager manager, Location location, + private void handleLocationChangedLocked(LocationProviderManager manager, Location fineLocation, Location coarseLocation) { if (!mProviderManagers.contains(manager)) { Log.w(TAG, "received location from unknown provider: " + manager.getName()); @@ -2610,7 +2392,7 @@ public class LocationManagerService extends ILocationManager.Stub { // notify passive provider if (manager != mPassiveManager) { - mPassiveManager.updateLocation(location); + mPassiveManager.updateLocation(fineLocation); } long now = SystemClock.elapsedRealtime(); @@ -2624,59 +2406,45 @@ public class LocationManagerService extends ILocationManager.Stub { // Broadcast location to all listeners for (UpdateRecord r : records) { Receiver receiver = r.mReceiver; + CallerIdentity identity = receiver.mCallerIdentity; boolean receiverDead = false; - int userId = UserHandle.getUserId(receiver.mCallerIdentity.mUid); - if (!manager.isEnabled(userId) && !isSettingsExempt(r)) { + if (!manager.isEnabled(identity.userId) && !isSettingsExempt(r)) { continue; } - if (!mUserInfoHelper.isCurrentUserId(userId) - && !isProviderPackage(receiver.mCallerIdentity.mPackageName)) { - if (D) { - Log.d(TAG, "skipping loc update for background user " + userId - + " (app: " + receiver.mCallerIdentity.mPackageName + ")"); - } + if (!mUserInfoHelper.isCurrentUserId(identity.userId) + && !isProviderPackage(identity.packageName)) { continue; } - if (mSettingsHelper.isLocationPackageBlacklisted(userId, - receiver.mCallerIdentity.mPackageName)) { - if (D) { - Log.d(TAG, "skipping loc update for blacklisted app: " + - receiver.mCallerIdentity.mPackageName); - } + if (mSettingsHelper.isLocationPackageBlacklisted(identity.userId, + identity.packageName)) { continue; } - Location notifyLocation; - if (receiver.mAllowedResolutionLevel < RESOLUTION_LEVEL_FINE) { - notifyLocation = coarseLocation; // use coarse location - } else { - notifyLocation = location; // use fine location - } - if (shouldBroadcastSafeLocked(notifyLocation, r.mLastFixBroadcast, r, now)) { - r.mLastFixBroadcast = notifyLocation; - // Report location access before delivering location to the client. This will - // note location delivery to appOps, so it should be called only when a - // location is really being delivered to the client. - if (!reportLocationAccessNoThrow( - receiver.mCallerIdentity.mPid, - receiver.mCallerIdentity.mUid, - receiver.mCallerIdentity.mPackageName, - receiver.mCallerIdentity.mFeatureId, - receiver.mAllowedResolutionLevel, - "Location sent to " + receiver.mCallerIdentity.mListenerIdentifier)) { - if (D) { - Log.d(TAG, "skipping loc update for no op app: " - + receiver.mCallerIdentity.mPackageName); - } + Location location; + switch (identity.permissionLevel) { + case PERMISSION_COARSE: + location = coarseLocation; + break; + case PERMISSION_FINE: + location = fineLocation; + break; + default: + throw new AssertionError(); + } + + if (shouldBroadcastSafeLocked(location, r.mLastFixBroadcast, r, now)) { + r.mLastFixBroadcast = location; + + // appops check should always be right before delivery + if (!mAppOpsHelper.noteLocationAccess(receiver.mCallerIdentity)) { continue; } - if (!receiver.callLocationChangedLocked(notifyLocation)) { - Log.w(TAG, "RemoteException calling onLocationChanged on " - + receiver); + + if (!receiver.callLocationChangedLocked(location)) { receiverDead = true; } r.mRealRequest.decrementNumUpdates(); @@ -2733,7 +2501,6 @@ public class LocationManagerService extends ILocationManager.Stub { return null; } - @Override public String getFromLocationName(String locationName, double lowerLeftLatitude, double lowerLeftLongitude, @@ -2752,9 +2519,10 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public void addTestProvider(String provider, ProviderProperties properties, - String packageName) { - if (mAppOps.checkOp(AppOpsManager.OP_MOCK_LOCATION, Binder.getCallingUid(), packageName) - != AppOpsManager.MODE_ALLOWED) { + String packageName, String featureId) { + // unsafe is ok because app ops will verify the package name + CallerIdentity identity = CallerIdentity.fromBinderUnsafe(mContext, packageName, featureId); + if (!mAppOpsHelper.noteMockLocationAccess(identity)) { return; } @@ -2770,9 +2538,10 @@ public class LocationManagerService extends ILocationManager.Stub { } @Override - public void removeTestProvider(String provider, String packageName) { - if (mAppOps.checkOp(AppOpsManager.OP_MOCK_LOCATION, Binder.getCallingUid(), packageName) - != AppOpsManager.MODE_ALLOWED) { + public void removeTestProvider(String provider, String packageName, String featureId) { + // unsafe is ok because app ops will verify the package name + CallerIdentity identity = CallerIdentity.fromBinderUnsafe(mContext, packageName, featureId); + if (!mAppOpsHelper.noteMockLocationAccess(identity)) { return; } @@ -2790,15 +2559,17 @@ public class LocationManagerService extends ILocationManager.Stub { } @Override - public void setTestProviderLocation(String provider, Location location, String packageName) { - Preconditions.checkArgument(location.isComplete(), - "incomplete location object, missing timestamp or accuracy?"); - - if (mAppOps.checkOp(AppOpsManager.OP_MOCK_LOCATION, Binder.getCallingUid(), packageName) - != AppOpsManager.MODE_ALLOWED) { + public void setTestProviderLocation(String provider, Location location, String packageName, + String featureId) { + // unsafe is ok because app ops will verify the package name + CallerIdentity identity = CallerIdentity.fromBinderUnsafe(mContext, packageName, featureId); + if (!mAppOpsHelper.noteMockLocationAccess(identity)) { return; } + Preconditions.checkArgument(location.isComplete(), + "incomplete location object, missing timestamp or accuracy?"); + LocationProviderManager manager = getLocationProviderManager(provider); if (manager == null) { throw new IllegalArgumentException("provider doesn't exist: " + provider); @@ -2808,9 +2579,11 @@ public class LocationManagerService extends ILocationManager.Stub { } @Override - public void setTestProviderEnabled(String provider, boolean enabled, String packageName) { - if (mAppOps.checkOp(AppOpsManager.OP_MOCK_LOCATION, Binder.getCallingUid(), packageName) - != AppOpsManager.MODE_ALLOWED) { + public void setTestProviderEnabled(String provider, boolean enabled, String packageName, + String featureId) { + // unsafe is ok because app ops will verify the package name + CallerIdentity identity = CallerIdentity.fromBinderUnsafe(mContext, packageName, featureId); + if (!mAppOpsHelper.noteMockLocationAccess(identity)) { return; } @@ -2824,12 +2597,8 @@ public class LocationManagerService extends ILocationManager.Stub { @Override @NonNull - public List<LocationRequest> getTestProviderCurrentRequests(String provider, - String packageName) { - if (mAppOps.checkOp(AppOpsManager.OP_MOCK_LOCATION, Binder.getCallingUid(), packageName) - != AppOpsManager.MODE_ALLOWED) { - return Collections.emptyList(); - } + public List<LocationRequest> getTestProviderCurrentRequests(String provider) { + mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG, null); LocationProviderManager manager = getLocationProviderManager(provider); if (manager == null) { diff --git a/services/core/java/com/android/server/LocationManagerServiceUtils.java b/services/core/java/com/android/server/LocationManagerServiceUtils.java index ba1c81cdd975..9d0fe5e936bb 100644 --- a/services/core/java/com/android/server/LocationManagerServiceUtils.java +++ b/services/core/java/com/android/server/LocationManagerServiceUtils.java @@ -20,7 +20,6 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.os.IBinder; import android.os.RemoteException; -import android.util.Log; import com.android.server.location.CallerIdentity; @@ -32,9 +31,6 @@ import java.util.function.Consumer; */ public class LocationManagerServiceUtils { - private static final String TAG = "LocManagerServiceUtils"; - private static final boolean D = Log.isLoggable(TAG, Log.DEBUG); - /** * Listener that can be linked to a binder. * @param <TListener> listener type @@ -49,10 +45,9 @@ public class LocationManagerServiceUtils { public LinkedListener( @Nullable TRequest request, @NonNull TListener listener, - String listenerName, @NonNull CallerIdentity callerIdentity, @NonNull Consumer<TListener> binderDeathCallback) { - super(callerIdentity, listenerName); + super(callerIdentity); mListener = listener; mRequest = request; mBinderDeathCallback = binderDeathCallback; @@ -65,7 +60,6 @@ public class LocationManagerServiceUtils { @Override public void binderDied() { - if (D) Log.d(TAG, "Remote " + mListenerName + " died."); mBinderDeathCallback.accept(mListener); } } @@ -75,28 +69,20 @@ public class LocationManagerServiceUtils { */ public abstract static class LinkedListenerBase implements IBinder.DeathRecipient { protected final CallerIdentity mCallerIdentity; - protected final String mListenerName; - LinkedListenerBase( - @NonNull CallerIdentity callerIdentity, @NonNull String listenerName) { + LinkedListenerBase(@NonNull CallerIdentity callerIdentity) { mCallerIdentity = callerIdentity; - mListenerName = listenerName; } @Override public String toString() { - return mListenerName + "[" + mCallerIdentity.mPackageName + "(" + mCallerIdentity.mPid - + ")]"; + return mCallerIdentity.toString(); } public CallerIdentity getCallerIdentity() { return mCallerIdentity; } - public String getListenerName() { - return mListenerName; - } - /** * Link listener (i.e. callback) to a binder, so that it will be called upon binder's death. */ @@ -105,9 +91,6 @@ public class LocationManagerServiceUtils { binder.linkToDeath(this, 0 /* flags */); return true; } catch (RemoteException e) { - // if the remote process registering the listener is already dead, just swallow the - // exception and return - Log.w(TAG, "Could not link " + mListenerName + " death callback.", e); return false; } } @@ -119,7 +102,7 @@ public class LocationManagerServiceUtils { try { binder.unlinkToDeath(this, 0 /* flags */); } catch (NoSuchElementException e) { - Log.w(TAG, "Could not unlink " + mListenerName + " death callback.", e); + // ignore } } } diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index 1bb3c3ac0cda..0ddfa1c16a0a 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -886,6 +886,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub { @Override public void setIPv6AddrGenMode(String iface, int mode) throws ServiceSpecificException { + NetworkStack.checkNetworkStackPermission(mContext); try { mNetdService.setIPv6AddrGenMode(iface, mode); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/PackageWatchdog.java b/services/core/java/com/android/server/PackageWatchdog.java index 41a104c5d4dc..d9e7c3851906 100644 --- a/services/core/java/com/android/server/PackageWatchdog.java +++ b/services/core/java/com/android/server/PackageWatchdog.java @@ -1062,7 +1062,12 @@ public class PackageWatchdog { public void updatePackagesLocked(List<MonitoredPackage> packages) { for (int pIndex = 0; pIndex < packages.size(); pIndex++) { MonitoredPackage p = packages.get(pIndex); - this.packages.put(p.getName(), p); + MonitoredPackage existingPackage = this.packages.get(p.getName()); + if (existingPackage != null) { + existingPackage.updateHealthCheckDuration(p.mDurationMs); + } else { + this.packages.put(p.getName(), p); + } } } @@ -1331,6 +1336,12 @@ public class PackageWatchdog { return updateHealthCheckStateLocked(); } + /** Explicitly update the monitoring duration of the package. */ + @GuardedBy("mLock") + public void updateHealthCheckDuration(long newDurationMs) { + mDurationMs = newDurationMs; + } + /** * Marks the health check as passed and transitions to {@link HealthCheckState.PASSED} * if not yet {@link HealthCheckState.FAILED}. diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index 895282c5cb59..2bbf27849005 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -27,6 +27,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; import android.app.AppOpsManager; +import android.app.compat.CompatChanges; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -39,8 +40,10 @@ import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Message; +import android.os.Process; import android.os.RemoteException; import android.os.UserHandle; +import android.provider.DeviceConfig; import android.telephony.Annotation; import android.telephony.Annotation.ApnType; import android.telephony.Annotation.DataFailureCause; @@ -177,8 +180,38 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { } } + /** + * Wrapper class to facilitate testing -- encapsulates bits of configuration that are + * normally fetched from static methods with many dependencies. + */ + public static class ConfigurationProvider { + /** + * @return The per-pid registration limit for PhoneStateListeners, as set from DeviceConfig + * @noinspection ConstantConditions + */ + public int getRegistrationLimit() { + return Binder.withCleanCallingIdentity(() -> + DeviceConfig.getInt(DeviceConfig.NAMESPACE_TELEPHONY, + PhoneStateListener.FLAG_PER_PID_REGISTRATION_LIMIT, + PhoneStateListener.DEFAULT_PER_PID_REGISTRATION_LIMIT)); + } + + /** + * @param uid uid to check + * @return Whether enforcement of the per-pid registation limit for PhoneStateListeners is + * enabled in PlatformCompat for the given uid. + * @noinspection ConstantConditions + */ + public boolean isRegistrationLimitEnabledInPlatformCompat(int uid) { + return Binder.withCleanCallingIdentity(() -> CompatChanges.isChangeEnabled( + PhoneStateListener.PHONE_STATE_LISTENER_LIMIT_CHANGE_ID, uid)); + } + } + private final Context mContext; + private ConfigurationProvider mConfigurationProvider; + // access should be inside synchronized (mRecords) for these two fields private final ArrayList<IBinder> mRemoveList = new ArrayList<IBinder>(); private final ArrayList<Record> mRecords = new ArrayList<Record>(); @@ -506,10 +539,11 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { // handler before they get to app code. @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) - public TelephonyRegistry(Context context) { + public TelephonyRegistry(Context context, ConfigurationProvider configurationProvider) { CellLocation location = CellLocation.getEmpty(); mContext = context; + mConfigurationProvider = configurationProvider; mBatteryStats = BatteryStatsService.getService(); int numPhones = getTelephonyManager().getActiveModemCount(); @@ -605,7 +639,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { synchronized (mRecords) { // register IBinder b = callback.asBinder(); - Record r = add(b); + Record r = add(b, Binder.getCallingUid(), Binder.getCallingPid(), false); if (r == null) { return; @@ -659,7 +693,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { synchronized (mRecords) { // register IBinder b = callback.asBinder(); - Record r = add(b); + Record r = add(b, Binder.getCallingUid(), Binder.getCallingPid(), false); if (r == null) { return; @@ -789,7 +823,11 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { synchronized (mRecords) { // register IBinder b = callback.asBinder(); - Record r = add(b); + boolean doesLimitApply = + Binder.getCallingUid() != Process.SYSTEM_UID + && Binder.getCallingUid() != Process.PHONE_UID + && Binder.getCallingUid() != Process.myUid(); + Record r = add(b, Binder.getCallingUid(), Binder.getCallingPid(), doesLimitApply); if (r == null) { return; @@ -1084,18 +1122,44 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { return record.canReadCallLog() ? mCallIncomingNumber[phoneId] : ""; } - private Record add(IBinder binder) { + private Record add(IBinder binder, int callingUid, int callingPid, boolean doesLimitApply) { Record r; synchronized (mRecords) { final int N = mRecords.size(); + // While iterating through the records, keep track of how many we have from this pid. + int numRecordsForPid = 0; for (int i = 0; i < N; i++) { r = mRecords.get(i); if (binder == r.binder) { // Already existed. return r; } + if (r.callerPid == callingPid) { + numRecordsForPid++; + } } + // If we've exceeded the limit for registrations, log an error and quit. + int registrationLimit = mConfigurationProvider.getRegistrationLimit(); + + if (doesLimitApply + && registrationLimit >= 1 + && numRecordsForPid >= registrationLimit) { + String errorMsg = "Pid " + callingPid + " has exceeded the number of permissible" + + "registered listeners. Ignoring request to add."; + loge(errorMsg); + if (mConfigurationProvider + .isRegistrationLimitEnabledInPlatformCompat(callingUid)) { + throw new IllegalStateException(errorMsg); + } + } else if (doesLimitApply && numRecordsForPid + >= PhoneStateListener.DEFAULT_PER_PID_REGISTRATION_LIMIT / 2) { + // Log the warning independently of the dynamically set limit -- apps shouldn't be + // doing this regardless of whether we're throwing them an exception for it. + Rlog.w(TAG, "Pid " + callingPid + " has exceeded half the number of permissible" + + "registered listeners. Now at " + numRecordsForPid); + } + r = new Record(); r.binder = binder; r.deathRecipient = new TelephonyRegistryDeathRecipient(binder); diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java index 564f9f3dc11a..58c388ed08c6 100644 --- a/services/core/java/com/android/server/UiModeManagerService.java +++ b/services/core/java/com/android/server/UiModeManagerService.java @@ -84,6 +84,7 @@ import java.util.Set; import static android.app.UiModeManager.MODE_NIGHT_AUTO; import static android.app.UiModeManager.MODE_NIGHT_CUSTOM; import static android.app.UiModeManager.MODE_NIGHT_YES; +import static android.os.UserHandle.USER_SYSTEM; import static android.util.TimeUtils.isTimeBetween; final class UiModeManagerService extends SystemService { @@ -151,6 +152,7 @@ final class UiModeManagerService extends SystemService { // Example: Activate dark mode in the day time until sunrise the next day private boolean mOverrideNightModeOn; private boolean mOverrideNightModeOff; + private int mOverrideNightModeUser = USER_SYSTEM; private PowerManager.WakeLock mWakeLock; @@ -668,10 +670,7 @@ final class UiModeManagerService extends SystemService { mNightMode = mode; resetNightModeOverrideLocked(); - // Only persist setting if not in car mode - if (!mCarModeEnabled) { - persistNightMode(user); - } + persistNightMode(user); // on screen off will update configuration instead if ((mNightMode != MODE_NIGHT_AUTO && mNightMode != MODE_NIGHT_CUSTOM) || shouldApplyAutomaticChangesImmediately()) { @@ -730,6 +729,8 @@ final class UiModeManagerService extends SystemService { unregisterScreenOffEventLocked(); mOverrideNightModeOff = !active; mOverrideNightModeOn = active; + mOverrideNightModeUser = user; + persistNightModeOverrides(user); } else if (mNightMode == UiModeManager.MODE_NIGHT_NO && active) { mNightMode = UiModeManager.MODE_NIGHT_YES; @@ -1008,12 +1009,10 @@ final class UiModeManagerService extends SystemService { } private void persistNightMode(int user) { + // Only persist setting if not in car mode + if (mCarModeEnabled) return; Secure.putIntForUser(getContext().getContentResolver(), Secure.UI_NIGHT_MODE, mNightMode, user); - Secure.putIntForUser(getContext().getContentResolver(), - Secure.UI_NIGHT_MODE_OVERRIDE_ON, mOverrideNightModeOn ? 1 : 0, user); - Secure.putIntForUser(getContext().getContentResolver(), - Secure.UI_NIGHT_MODE_OVERRIDE_OFF, mOverrideNightModeOff ? 1 : 0, user); Secure.putLongForUser(getContext().getContentResolver(), Secure.DARK_THEME_CUSTOM_START_TIME, mCustomAutoNightModeStartMilliseconds.toNanoOfDay() / 1000, user); @@ -1022,6 +1021,15 @@ final class UiModeManagerService extends SystemService { mCustomAutoNightModeEndMilliseconds.toNanoOfDay() / 1000, user); } + private void persistNightModeOverrides(int user) { + // Only persist setting if not in car mode + if (mCarModeEnabled) return; + Secure.putIntForUser(getContext().getContentResolver(), + Secure.UI_NIGHT_MODE_OVERRIDE_ON, mOverrideNightModeOn ? 1 : 0, user); + Secure.putIntForUser(getContext().getContentResolver(), + Secure.UI_NIGHT_MODE_OVERRIDE_OFF, mOverrideNightModeOff ? 1 : 0, user); + } + private void updateConfigurationLocked() { int uiMode = mDefaultUiModeType; if (mUiModeLocked) { @@ -1392,12 +1400,15 @@ final class UiModeManagerService extends SystemService { } } - private void resetNightModeOverrideLocked() { + private boolean resetNightModeOverrideLocked() { if (mOverrideNightModeOff || mOverrideNightModeOn) { mOverrideNightModeOff = false; mOverrideNightModeOn = false; - persistNightMode(UserHandle.getCallingUserId()); + persistNightModeOverrides(mOverrideNightModeUser); + mOverrideNightModeUser = USER_SYSTEM; + return true; } + return false; } private void registerVrStateListener() { @@ -1538,7 +1549,7 @@ final class UiModeManagerService extends SystemService { public void onReceive(Context context, Intent intent) { synchronized (mLock) { final int currentId = intent.getIntExtra( - Intent.EXTRA_USER_HANDLE, UserHandle.USER_SYSTEM); + Intent.EXTRA_USER_HANDLE, USER_SYSTEM); // only update if the value is actually changed if (updateNightModeFromSettingsLocked(context, context.getResources(), currentId)) { updateLocked(0, 0); diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java index dd9cc641f2dd..ac4a42ca7024 100644 --- a/services/core/java/com/android/server/VibratorService.java +++ b/services/core/java/com/android/server/VibratorService.java @@ -605,15 +605,16 @@ public class VibratorService extends IVibratorService.Stub } @Override // Binder call - public boolean[] areEffectsSupported(int[] effectIds) { - // Return null to indicate that the HAL doesn't actually tell us what effects are - // supported. + public int[] areEffectsSupported(int[] effectIds) { + int[] supported = new int[effectIds.length]; if (mSupportedEffects == null) { - return null; - } - boolean[] supported = new boolean[effectIds.length]; - for (int i = 0; i < effectIds.length; i++) { - supported[i] = mSupportedEffects.contains(effectIds[i]); + Arrays.fill(supported, Vibrator.VIBRATION_EFFECT_SUPPORT_UNKNOWN); + } else { + for (int i = 0; i < effectIds.length; i++) { + supported[i] = mSupportedEffects.contains(effectIds[i]) + ? Vibrator.VIBRATION_EFFECT_SUPPORT_YES + : Vibrator.VIBRATION_EFFECT_SUPPORT_NO; + } } return supported; } diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java index 056156745966..061ff42de60b 100644 --- a/services/core/java/com/android/server/Watchdog.java +++ b/services/core/java/com/android/server/Watchdog.java @@ -120,6 +120,7 @@ public class Watchdog extends Thread { "android.hardware.media.c2@1.0::IComponentStore", "android.hardware.media.omx@1.0::IOmx", "android.hardware.media.omx@1.0::IOmxStore", + "android.hardware.neuralnetworks@1.0::IDevice", "android.hardware.power.stats@1.0::IPowerStats", "android.hardware.sensors@1.0::ISensors", "android.hardware.vr@1.0::IVr", diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index d77bee35a89b..7523710dde9f 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -4213,7 +4213,7 @@ public final class ActiveServices { } if (anrMessage != null) { - proc.appNotResponding(null, null, null, null, false, anrMessage); + mAm.mAnrHelper.appNotResponding(proc, anrMessage); } } @@ -4238,7 +4238,7 @@ public final class ActiveServices { } if (app != null) { - app.appNotResponding(null, null, null, null, false, + mAm.mAnrHelper.appNotResponding(app, "Context.startForegroundService() did not then call Service.startForeground(): " + r); } @@ -4898,6 +4898,12 @@ public final class ActiveServices { return true; } + // Is the calling UID a device owner app? + final boolean isDeviceOwner = mAm.mInternal.isDeviceOwner(callingUid); + if (isDeviceOwner) { + return true; + } + r.mInfoDenyWhileInUsePermissionInFgs = "Background FGS start while-in-use permission restriction [callingPackage: " + callingPackage @@ -4933,7 +4939,8 @@ public final class ActiveServices { + r.mRecentCallingPackage + "; intent:" + r.intent.getIntent() + "] affected while-in-use permission:" - + AppOpsManager.opToPublicName(op); + + AppOpsManager.opToPublicName(op) + + "; targetSdkVersion:" + r.appInfo.targetSdkVersion; Slog.wtf(TAG, msg); } } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 8b2976d0e878..689f64d01054 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -185,8 +185,6 @@ import android.app.PendingIntent; import android.app.ProcessMemoryState; import android.app.ProfilerInfo; import android.app.WaitResult; -import android.app.WindowConfiguration.ActivityType; -import android.app.WindowConfiguration.WindowingMode; import android.app.backup.IBackupManager; import android.app.usage.UsageEvents; import android.app.usage.UsageEvents.Event; @@ -638,6 +636,8 @@ public class ActivityManagerService extends IActivityManager.Stub */ String mDeviceOwnerName; + private int mDeviceOwnerUid = Process.INVALID_UID; + final UserController mUserController; @VisibleForTesting public final PendingIntentController mPendingIntentController; @@ -1522,6 +1522,8 @@ public class ActivityManagerService extends IActivityManager.Stub void onOomAdjMessage(String msg); } + final AnrHelper mAnrHelper = new AnrHelper(); + /** * Runtime CPU use collection thread. This object's lock is used to * perform synchronization with the thread (notifying it to run). @@ -6513,13 +6515,6 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override - public List<RunningTaskInfo> getFilteredTasks(int maxNum, @ActivityType int ignoreActivityType, - @WindowingMode int ignoreWindowingMode) { - return mActivityTaskManager.getFilteredTasks( - maxNum, ignoreActivityType, ignoreWindowingMode); - } - - @Override public void cancelTaskWindowTransition(int taskId) { mActivityTaskManager.cancelTaskWindowTransition(taskId); } @@ -7804,13 +7799,7 @@ public class ActivityManagerService extends IActivityManager.Stub return; } - mHandler.post(new Runnable() { - @Override - public void run() { - host.appNotResponding( - null, null, null, null, false, "ContentProvider not responding"); - } - }); + mAnrHelper.appNotResponding(host, "ContentProvider not responding"); } @Override @@ -7823,13 +7812,8 @@ public class ActivityManagerService extends IActivityManager.Stub throw new SecurityException("Unknown process: " + callingPid); } - mHandler.post(new Runnable() { - @Override - public void run() { - app.appNotResponding( - null, app.info, null, null, false, "App requested: " + reason); - } - }); + mAnrHelper.appNotResponding(app, null, app.info, null, null, false, + "App requested: " + reason); } } @@ -15575,7 +15559,7 @@ public class ActivityManagerService extends IActivityManager.Stub } private List<ResolveInfo> collectReceiverComponents(Intent intent, String resolvedType, - int callingUid, int[] users) { + int callingUid, int[] users, int[] broadcastWhitelist) { // TODO: come back and remove this assumption to triage all broadcasts int pmFlags = STOCK_PM_FLAGS | MATCH_DEBUG_TRIAGED_MISSING; @@ -15651,6 +15635,15 @@ public class ActivityManagerService extends IActivityManager.Stub } catch (RemoteException ex) { // pm is in same process, this will never happen. } + if (receivers != null && broadcastWhitelist != null) { + for (int i = receivers.size() - 1; i >= 0; i--) { + final int uid = receivers.get(i).activityInfo.applicationInfo.uid; + if (uid >= Process.FIRST_APPLICATION_UID + && Arrays.binarySearch(broadcastWhitelist, UserHandle.getAppId(uid)) < 0) { + receivers.remove(i); + } + } + } return receivers; } @@ -15745,7 +15738,8 @@ public class ActivityManagerService extends IActivityManager.Stub return broadcastIntentLocked(callerApp, callerPackage, callerFeatureId, intent, resolvedType, resultTo, resultCode, resultData, resultExtras, requiredPermissions, appOp, bOptions, ordered, sticky, callingPid, callingUid, realCallingUid, - realCallingPid, userId, false /* allowBackgroundActivityStarts */); + realCallingPid, userId, false /* allowBackgroundActivityStarts */, + null /*broadcastWhitelist*/); } @GuardedBy("this") @@ -15754,7 +15748,8 @@ public class ActivityManagerService extends IActivityManager.Stub IIntentReceiver resultTo, int resultCode, String resultData, Bundle resultExtras, String[] requiredPermissions, int appOp, Bundle bOptions, boolean ordered, boolean sticky, int callingPid, int callingUid, int realCallingUid, - int realCallingPid, int userId, boolean allowBackgroundActivityStarts) { + int realCallingPid, int userId, boolean allowBackgroundActivityStarts, + @Nullable int[] broadcastWhitelist) { intent = new Intent(intent); final boolean callerInstantApp = isInstantApp(callerApp, callerPackage, callingUid); @@ -15763,6 +15758,12 @@ public class ActivityManagerService extends IActivityManager.Stub intent.setFlags(intent.getFlags() & ~Intent.FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS); } + if (userId == UserHandle.USER_ALL && broadcastWhitelist != null) { + Slog.e(TAG, "broadcastWhitelist only applies when sending to individual users. " + + "Assuming restrictive whitelist."); + broadcastWhitelist = new int[]{}; + } + // By default broadcasts do not go to stopped apps. intent.addFlags(Intent.FLAG_EXCLUDE_STOPPED_PACKAGES); @@ -16249,7 +16250,8 @@ public class ActivityManagerService extends IActivityManager.Stub // Need to resolve the intent to interested receivers... if ((intent.getFlags()&Intent.FLAG_RECEIVER_REGISTERED_ONLY) == 0) { - receivers = collectReceiverComponents(intent, resolvedType, callingUid, users); + receivers = collectReceiverComponents( + intent, resolvedType, callingUid, users, broadcastWhitelist); } if (intent.getComponent() == null) { if (userId == UserHandle.USER_ALL && callingUid == SHELL_UID) { @@ -16279,6 +16281,17 @@ public class ActivityManagerService extends IActivityManager.Stub if (DEBUG_BROADCAST) Slog.v(TAG_BROADCAST, "Enqueueing broadcast: " + intent.getAction() + " replacePending=" + replacePending); + if (registeredReceivers != null && broadcastWhitelist != null) { + // if a uid whitelist was provided, remove anything in the application space that wasn't + // in it. + for (int i = registeredReceivers.size() - 1; i >= 0; i--) { + final int uid = registeredReceivers.get(i).owningUid; + if (uid >= Process.FIRST_APPLICATION_UID + && Arrays.binarySearch(broadcastWhitelist, UserHandle.getAppId(uid)) < 0) { + registeredReceivers.remove(i); + } + } + } int NR = registeredReceivers != null ? registeredReceivers.size() : 0; if (!ordered && NR > 0) { @@ -16562,7 +16575,8 @@ public class ActivityManagerService extends IActivityManager.Stub return broadcastIntentLocked(null, packageName, featureId, intent, resolvedType, resultTo, resultCode, resultData, resultExtras, requiredPermissions, OP_NONE, bOptions, serialized, sticky, -1, uid, realCallingUid, - realCallingPid, userId, allowBackgroundActivityStarts); + realCallingPid, userId, allowBackgroundActivityStarts, + null /*broadcastWhitelist*/); } finally { Binder.restoreCallingIdentity(origId); } @@ -19193,6 +19207,32 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override + public int broadcastIntent(Intent intent, + IIntentReceiver resultTo, + String[] requiredPermissions, + boolean serialized, int userId, int[] appIdWhitelist) { + synchronized (ActivityManagerService.this) { + intent = verifyBroadcastLocked(intent); + + final int callingPid = Binder.getCallingPid(); + final int callingUid = Binder.getCallingUid(); + final long origId = Binder.clearCallingIdentity(); + try { + return ActivityManagerService.this.broadcastIntentLocked(null /*callerApp*/, + null /*callerPackage*/, null /*callingFeatureId*/, intent, + null /*resolvedType*/, resultTo, 0 /*resultCode*/, null /*resultData*/, + null /*resultExtras*/, requiredPermissions, AppOpsManager.OP_NONE, + null /*options*/, serialized, false /*sticky*/, callingPid, callingUid, + callingUid, callingPid, userId, false /*allowBackgroundStarts*/, + appIdWhitelist); + } finally { + Binder.restoreCallingIdentity(origId); + } + } + + } + + @Override public ComponentName startServiceInPackage(int uid, Intent service, String resolvedType, boolean fgRequired, String callingPackage, @Nullable String callingFeatureId, int userId, boolean allowBackgroundActivityStarts) @@ -19274,10 +19314,7 @@ public class ActivityManagerService extends IActivityManager.Stub @Override public long inputDispatchingTimedOut(int pid, boolean aboveSystem, String reason) { - synchronized (ActivityManagerService.this) { - return ActivityManagerService.this.inputDispatchingTimedOut( - pid, aboveSystem, reason); - } + return ActivityManagerService.this.inputDispatchingTimedOut(pid, aboveSystem, reason); } @Override @@ -19500,6 +19537,20 @@ public class ActivityManagerService extends IActivityManager.Stub uid, op, mode); } } + + @Override + public void setDeviceOwnerUid(int uid) { + synchronized (ActivityManagerService.this) { + mDeviceOwnerUid = uid; + } + } + + @Override + public boolean isDeviceOwner(int uid) { + synchronized (ActivityManagerService.this) { + return uid >= 0 && mDeviceOwnerUid == uid; + } + } } long inputDispatchingTimedOut(int pid, final boolean aboveSystem, String reason) { @@ -19554,7 +19605,7 @@ public class ActivityManagerService extends IActivityManager.Stub return true; } } - proc.appNotResponding(activityShortComponentName, aInfo, + mAnrHelper.appNotResponding(proc, activityShortComponentName, aInfo, parentShortComponentName, parentProcess, aboveSystem, annotation); } diff --git a/services/core/java/com/android/server/am/AnrHelper.java b/services/core/java/com/android/server/am/AnrHelper.java new file mode 100644 index 000000000000..bc455338fc52 --- /dev/null +++ b/services/core/java/com/android/server/am/AnrHelper.java @@ -0,0 +1,142 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.am; + +import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; +import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; + +import android.content.pm.ApplicationInfo; +import android.os.SystemClock; +import android.util.Slog; + +import com.android.internal.annotations.GuardedBy; +import com.android.server.wm.WindowProcessController; + +import java.util.ArrayList; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * The helper class to handle no response process. An independent thread will be created on demand + * so the caller can report the ANR without worrying about taking long time. + */ +class AnrHelper { + private static final String TAG = TAG_WITH_CLASS_NAME ? "AnrHelper" : TAG_AM; + + /** + * If the system is extremely slow somehow that the ANR has been pending too long for more than + * this time, the information might be outdated. So we only the dump the unresponsive process + * instead of including other processes to avoid making the system more busy. + */ + private static final long EXPIRED_REPORT_TIME_MS = TimeUnit.MINUTES.toMillis(1); + + @GuardedBy("mAnrRecords") + private final ArrayList<AnrRecord> mAnrRecords = new ArrayList<>(); + private final AtomicBoolean mRunning = new AtomicBoolean(false); + + void appNotResponding(ProcessRecord anrProcess, String annotation) { + appNotResponding(anrProcess, null /* activityShortComponentName */, null /* aInfo */, + null /* parentShortComponentName */, null /* parentProcess */, + false /* aboveSystem */, annotation); + } + + void appNotResponding(ProcessRecord anrProcess, String activityShortComponentName, + ApplicationInfo aInfo, String parentShortComponentName, + WindowProcessController parentProcess, boolean aboveSystem, String annotation) { + synchronized (mAnrRecords) { + mAnrRecords.add(new AnrRecord(anrProcess, activityShortComponentName, aInfo, + parentShortComponentName, parentProcess, aboveSystem, annotation)); + } + startAnrConsumerIfNeeded(); + } + + private void startAnrConsumerIfNeeded() { + if (mRunning.compareAndSet(false, true)) { + new AnrConsumerThread().start(); + } + } + + /** + * The thread to execute {@link ProcessRecord#appNotResponding}. It will terminate if all + * records are handled. + */ + private class AnrConsumerThread extends Thread { + AnrConsumerThread() { + super("AnrConsumer"); + } + + private AnrRecord next() { + synchronized (mAnrRecords) { + return mAnrRecords.isEmpty() ? null : mAnrRecords.remove(0); + } + } + + @Override + public void run() { + AnrRecord r; + while ((r = next()) != null) { + final long startTime = SystemClock.uptimeMillis(); + // If there are many ANR at the same time, the latency may be larger. If the latency + // is too large, the stack trace might not be meaningful. + final long reportLatency = startTime - r.mTimestamp; + final boolean onlyDumpSelf = reportLatency > EXPIRED_REPORT_TIME_MS; + r.appNotResponding(onlyDumpSelf); + final long endTime = SystemClock.uptimeMillis(); + Slog.d(TAG, "Completed ANR of " + r.mApp.processName + " in " + + (endTime - startTime) + "ms, latency " + reportLatency + + (onlyDumpSelf ? "ms" : "ms (expired, only dump ANR app)")); + } + + mRunning.set(false); + synchronized (mAnrRecords) { + // The race should be unlikely to happen. Just to make sure we don't miss. + if (!mAnrRecords.isEmpty()) { + startAnrConsumerIfNeeded(); + } + } + } + } + + private static class AnrRecord { + final ProcessRecord mApp; + final String mActivityShortComponentName; + final String mParentShortComponentName; + final String mAnnotation; + final ApplicationInfo mAppInfo; + final WindowProcessController mParentProcess; + final boolean mAboveSystem; + final long mTimestamp = SystemClock.uptimeMillis(); + + AnrRecord(ProcessRecord anrProcess, String activityShortComponentName, + ApplicationInfo aInfo, String parentShortComponentName, + WindowProcessController parentProcess, boolean aboveSystem, String annotation) { + mApp = anrProcess; + mActivityShortComponentName = activityShortComponentName; + mParentShortComponentName = parentShortComponentName; + mAnnotation = annotation; + mAppInfo = aInfo; + mParentProcess = parentProcess; + mAboveSystem = aboveSystem; + } + + void appNotResponding(boolean onlyDumpSelf) { + mApp.appNotResponding(mActivityShortComponentName, mAppInfo, + mParentShortComponentName, mParentProcess, mAboveSystem, mAnnotation, + onlyDumpSelf); + } + } +} diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java index 3aec53a44058..1cc41b22838e 100644 --- a/services/core/java/com/android/server/am/BroadcastQueue.java +++ b/services/core/java/com/android/server/am/BroadcastQueue.java @@ -198,21 +198,6 @@ public final class BroadcastQueue { } } - private final class AppNotResponding implements Runnable { - private final ProcessRecord mApp; - private final String mAnnotation; - - public AppNotResponding(ProcessRecord app, String annotation) { - mApp = app; - mAnnotation = annotation; - } - - @Override - public void run() { - mApp.appNotResponding(null, null, null, null, false, mAnnotation); - } - } - BroadcastQueue(ActivityManagerService service, Handler handler, String name, BroadcastConstants constants, boolean allowDelayBehindServices) { mService = service; @@ -1808,9 +1793,7 @@ public final class BroadcastQueue { scheduleBroadcastsLocked(); if (!debugging && anrMessage != null) { - // Post the ANR to the handler since we do not want to process ANRs while - // potentially holding our lock. - mHandler.post(new AppNotResponding(app, anrMessage)); + mService.mAnrHelper.appNotResponding(app, anrMessage); } } diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index d4a05025499f..1412112651c4 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -151,10 +151,14 @@ public final class OomAdjuster { @EnabledAfter(targetSdkVersion=android.os.Build.VERSION_CODES.Q) static final long CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID = 136219221L; - //TODO: remove this when development is done. - private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1 << 31; - private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_CAMERA = 1 << 30; - private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE = 1 << 29; + // TODO: remove this when development is done. + // These are debug flags used between OomAdjuster and AppOpsService to detect and report absence + // of the real flags. + public static final int DEBUG_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE_Q = 1 << 27; + public static final int DEBUG_PROCESS_CAPABILITY_FOREGROUND_CAMERA_Q = 1 << 28; + public static final int DEBUG_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE = 1 << 29; + public static final int DEBUG_PROCESS_CAPABILITY_FOREGROUND_CAMERA = 1 << 30; + public static final int DEBUG_PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1 << 31; /** * For some direct access we need to power manager. @@ -1501,7 +1505,7 @@ public final class OomAdjuster { //TODO: remove this block when development is done. capabilityFromFGS |= (fgsType & FOREGROUND_SERVICE_TYPE_LOCATION) - != 0 ? TEMP_PROCESS_CAPABILITY_FOREGROUND_LOCATION : 0; + != 0 ? DEBUG_PROCESS_CAPABILITY_FOREGROUND_LOCATION : 0; } if (s.mAllowWhileInUsePermissionInFgs) { boolean enabled = false; @@ -1514,22 +1518,22 @@ public final class OomAdjuster { capabilityFromFGS |= (fgsType & FOREGROUND_SERVICE_TYPE_CAMERA) != 0 ? PROCESS_CAPABILITY_FOREGROUND_CAMERA - : TEMP_PROCESS_CAPABILITY_FOREGROUND_CAMERA; + : DEBUG_PROCESS_CAPABILITY_FOREGROUND_CAMERA; capabilityFromFGS |= (fgsType & FOREGROUND_SERVICE_TYPE_MICROPHONE) != 0 ? PROCESS_CAPABILITY_FOREGROUND_MICROPHONE - : TEMP_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE; + : DEBUG_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE; } else { // Remove fgsType check and assign PROCESS_CAPABILITY_FOREGROUND_CAMERA // and MICROPHONE when finish debugging. capabilityFromFGS |= (fgsType & FOREGROUND_SERVICE_TYPE_CAMERA) != 0 ? PROCESS_CAPABILITY_FOREGROUND_CAMERA - : TEMP_PROCESS_CAPABILITY_FOREGROUND_CAMERA; + : DEBUG_PROCESS_CAPABILITY_FOREGROUND_CAMERA_Q; capabilityFromFGS |= (fgsType & FOREGROUND_SERVICE_TYPE_MICROPHONE) != 0 ? PROCESS_CAPABILITY_FOREGROUND_MICROPHONE - : TEMP_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE; + : DEBUG_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE_Q; } } } diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index 4d08bd2e0ed7..595275d20154 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -94,7 +94,6 @@ import android.os.Trace; import android.os.UserHandle; import android.os.storage.StorageManager; import android.os.storage.StorageManagerInternal; -import android.provider.DeviceConfig; import android.system.Os; import android.text.TextUtils; import android.util.ArrayMap; @@ -153,10 +152,6 @@ public final class ProcessList { static final String ANDROID_VOLD_APP_DATA_ISOLATION_ENABLED_PROPERTY = "persist.sys.vold_app_data_isolation_enabled"; - // A device config to control the minimum target SDK to enable app data isolation - static final String ANDROID_APP_DATA_ISOLATION_MIN_SDK = - "android_app_data_isolation_min_sdk"; - // The minimum time we allow between crashes, for us to consider this // application to be bad and stop and its services and reject broadcasts. static final int MIN_CRASH_INTERVAL = 60 * 1000; @@ -2125,25 +2120,6 @@ public final class ProcessList { } } - private boolean shouldIsolateAppData(ProcessRecord app) { - if (!mAppDataIsolationEnabled) { - return false; - } - if (!UserHandle.isApp(app.uid)) { - return false; - } - final int minTargetSdk = DeviceConfig.getInt(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, - ANDROID_APP_DATA_ISOLATION_MIN_SDK, Build.VERSION_CODES.R); - if (app.info.targetSdkVersion < minTargetSdk) { - return false; - } - - // TODO(b/147266020): Remove non-standard gating above & switch to isChangeEnabled. - mPlatformCompat.reportChange(APP_DATA_DIRECTORY_ISOLATION, app.info); - - return true; - } - private Map<String, Pair<String, Long>> getPackageAppDataInfoMap(PackageManagerInternal pmInt, String[] packages, int uid) { Map<String, Pair<String, Long>> result = new ArrayMap<>(packages.length); @@ -2189,7 +2165,8 @@ public final class ProcessList { final Map<String, Pair<String, Long>> pkgDataInfoMap; boolean bindMountAppStorageDirs = false; - if (shouldIsolateAppData(app)) { + if (mAppDataIsolationEnabled && UserHandle.isApp(app.uid) + && mPlatformCompat.isChangeEnabled(APP_DATA_DIRECTORY_ISOLATION, app.info)) { // Get all packages belongs to the same shared uid. sharedPackages is empty array // if it doesn't have shared uid. final PackageManagerInternal pmInt = mService.getPackageManagerInternalLocked(); @@ -2199,8 +2176,8 @@ public final class ProcessList { ? new String[]{app.info.packageName} : sharedPackages, uid); int userId = UserHandle.getUserId(uid); - if (mVoldAppDataIsolationEnabled && UserHandle.isApp(app.uid) && - !storageManagerInternal.isExternalStorageService(uid)) { + if (mVoldAppDataIsolationEnabled + && !storageManagerInternal.isExternalStorageService(uid)) { bindMountAppStorageDirs = true; if (!storageManagerInternal.prepareStorageDirs(userId, pkgDataInfoMap.keySet(), app.processName)) { diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java index 68bb8f5763e7..61ebc361b6af 100644 --- a/services/core/java/com/android/server/am/ProcessRecord.java +++ b/services/core/java/com/android/server/am/ProcessRecord.java @@ -1502,7 +1502,7 @@ class ProcessRecord implements WindowProcessListener { void appNotResponding(String activityShortComponentName, ApplicationInfo aInfo, String parentShortComponentName, WindowProcessController parentProcess, - boolean aboveSystem, String annotation) { + boolean aboveSystem, String annotation, boolean onlyDumpSelf) { ArrayList<Integer> firstPids = new ArrayList<>(5); SparseArray<Boolean> lastPids = new SparseArray<>(20); @@ -1514,6 +1514,7 @@ class ProcessRecord implements WindowProcessListener { mService.updateCpuStatsNow(); } + final boolean isSilentAnr; synchronized (mService) { // PowerManager.reboot() can block for a long time, so ignore ANRs while shutting down. if (mService.mAtmInternal.isShuttingDown()) { @@ -1544,8 +1545,9 @@ class ProcessRecord implements WindowProcessListener { // Dump thread traces as quickly as we can, starting with "interesting" processes. firstPids.add(pid); - // Don't dump other PIDs if it's a background ANR - if (!isSilentAnr()) { + // Don't dump other PIDs if it's a background ANR or is requested to only dump self. + isSilentAnr = isSilentAnr(); + if (!isSilentAnr && !onlyDumpSelf) { int parentPid = pid; if (parentProcess != null && parentProcess.getPid() > 0) { parentPid = parentProcess.getPid(); @@ -1598,7 +1600,7 @@ class ProcessRecord implements WindowProcessListener { // don't dump native PIDs for background ANRs unless it is the process of interest String[] nativeProcs = null; - if (isSilentAnr()) { + if (isSilentAnr || onlyDumpSelf) { for (int i = 0; i < NATIVE_STACKS_OF_INTEREST.length; i++) { if (NATIVE_STACKS_OF_INTEREST[i].equals(processName)) { nativeProcs = new String[] { processName }; @@ -1625,7 +1627,7 @@ class ProcessRecord implements WindowProcessListener { // To hold the start and end offset to the ANR trace file respectively. final long[] offsets = new long[2]; File tracesFile = ActivityManagerService.dumpStackTraces(firstPids, - (isSilentAnr()) ? null : processCpuTracker, (isSilentAnr()) ? null : lastPids, + isSilentAnr ? null : processCpuTracker, isSilentAnr ? null : lastPids, nativePids, tracesFileException, offsets); if (isMonitorCpuUsage()) { diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 636a0e935289..e02c6f9d5497 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -159,6 +159,9 @@ class UserController implements Handler.Callback { // when it never calls back. private static final int USER_SWITCH_CALLBACKS_TIMEOUT_MS = 5 * 1000; + // TODO(b/149604218): STOPSHIP remove this constant and the logcat + private static final boolean TESTS_NEED_LOGCAT = true; + /** * Maximum number of users we allow to be running at a time, including system user. * @@ -1668,6 +1671,9 @@ class UserController implements Handler.Callback { } void continueUserSwitch(UserState uss, int oldUserId, int newUserId) { + if (TESTS_NEED_LOGCAT) { + Slog.d(TAG, "Continue user switch oldUser #" + oldUserId + ", newUser #" + newUserId); + } EventLog.writeEvent(EventLogTags.UC_CONTINUE_USER_SWITCH, oldUserId, newUserId); if (isUserSwitchUiEnabled()) { @@ -1675,8 +1681,7 @@ class UserController implements Handler.Callback { } uss.switching = false; mHandler.removeMessages(REPORT_USER_SWITCH_COMPLETE_MSG); - mHandler.sendMessage(mHandler.obtainMessage(REPORT_USER_SWITCH_COMPLETE_MSG, - newUserId, 0)); + mHandler.sendMessage(mHandler.obtainMessage(REPORT_USER_SWITCH_COMPLETE_MSG, newUserId, 0)); stopGuestOrEphemeralUserIfBackground(oldUserId); stopBackgroundUsersIfEnforced(oldUserId); } diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 6613d5f8d57a..8e6ef75078b3 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -66,6 +66,11 @@ import static android.content.Intent.EXTRA_REPLACING; import static android.content.pm.PermissionInfo.PROTECTION_DANGEROUS; import static android.content.pm.PermissionInfo.PROTECTION_FLAG_APPOP; +import static com.android.server.am.OomAdjuster.DEBUG_PROCESS_CAPABILITY_FOREGROUND_CAMERA; +import static com.android.server.am.OomAdjuster.DEBUG_PROCESS_CAPABILITY_FOREGROUND_CAMERA_Q; +import static com.android.server.am.OomAdjuster.DEBUG_PROCESS_CAPABILITY_FOREGROUND_LOCATION; +import static com.android.server.am.OomAdjuster.DEBUG_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE; +import static com.android.server.am.OomAdjuster.DEBUG_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE_Q; import static com.android.server.appop.AppOpsService.ModeCallback.ALL_OPS; import static java.lang.Long.max; @@ -248,9 +253,6 @@ public class AppOpsService extends IAppOpsService.Stub { private static final int RARELY_USED_PACKAGES_INITIALIZATION_DELAY_MILLIS = 300000; //TODO: remove this when development is done. - private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1 << 31; - private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_CAMERA = 1 << 30; - private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE = 1 << 29; private static final int DEBUG_FGS_ALLOW_WHILE_IN_USE = 0; private static final int DEBUG_FGS_ENFORCE_TYPE = 1; @@ -552,7 +554,7 @@ public class AppOpsService extends IAppOpsService.Stub { if ((capability & PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0) { return MODE_ALLOWED; } else if ((capability - & TEMP_PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0) { + & DEBUG_PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0) { // The FGS has the location capability, but due to FGS BG start // restriction it lost the capability, use temp location capability // to mark this case. @@ -564,11 +566,14 @@ public class AppOpsService extends IAppOpsService.Stub { case OP_CAMERA: if ((capability & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0) { return MODE_ALLOWED; - } else if ((capability & TEMP_PROCESS_CAPABILITY_FOREGROUND_CAMERA) + } else if ((capability & DEBUG_PROCESS_CAPABILITY_FOREGROUND_CAMERA_Q) != 0) { - // CHANGE TO MODE_IGNORED when enforce this feature. maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE); return MODE_ALLOWED; + } else if ((capability & DEBUG_PROCESS_CAPABILITY_FOREGROUND_CAMERA) + != 0) { + maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE); + return MODE_IGNORED; } else { maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ALLOW_WHILE_IN_USE); return MODE_IGNORED; @@ -576,11 +581,14 @@ public class AppOpsService extends IAppOpsService.Stub { case OP_RECORD_AUDIO: if ((capability & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0) { return MODE_ALLOWED; - } else if ((capability & TEMP_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) - != 0) { - // CHANGE TO MODE_IGNORED when enforce this feature. + } else if ((capability + & DEBUG_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE_Q) != 0) { maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE); return MODE_ALLOWED; + } else if ((capability + & DEBUG_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0) { + maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE); + return MODE_IGNORED; } else { maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ALLOW_WHILE_IN_USE); return MODE_IGNORED; @@ -597,10 +605,13 @@ public class AppOpsService extends IAppOpsService.Stub { case OP_CAMERA: if ((capability & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0) { return MODE_ALLOWED; - } else if ((capability & TEMP_PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0) { - // CHANGE TO MODE_IGNORED when enforce this feature. + } else if ((capability + & DEBUG_PROCESS_CAPABILITY_FOREGROUND_CAMERA_Q) != 0) { maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE); return MODE_ALLOWED; + } else if ((capability & DEBUG_PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0) { + maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE); + return MODE_IGNORED; } else { maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ALLOW_WHILE_IN_USE); return MODE_IGNORED; @@ -608,11 +619,14 @@ public class AppOpsService extends IAppOpsService.Stub { case OP_RECORD_AUDIO: if ((capability & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0) { return MODE_ALLOWED; - } else if ((capability & TEMP_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) + } else if ((capability & DEBUG_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE_Q) != 0) { - // CHANGE TO MODE_IGNORED when enforce this feature. maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE); return MODE_ALLOWED; + } else if ((capability & DEBUG_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) + != 0) { + maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE); + return MODE_IGNORED; } else { maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ALLOW_WHILE_IN_USE); return MODE_IGNORED; diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 071058c113b2..f6cdaebc333a 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -52,6 +52,7 @@ import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.pm.PackageManagerInternal; import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; import android.content.res.Configuration; @@ -576,6 +577,9 @@ public class AudioService extends IAudioService.Stub @GuardedBy("mSettingsLock") private int mAssistantUid; + @GuardedBy("mSettingsLock") + private int mCurrentImeUid; + private final Object mSupportedSystemUsagesLock = new Object(); @GuardedBy("mSupportedSystemUsagesLock") private @AttributeSystemUsage int[] mSupportedSystemUsages = @@ -634,6 +638,9 @@ public class AudioService extends IAudioService.Stub } }; + @GuardedBy("mSettingsLock") + private boolean mRttEnabled = false; + /////////////////////////////////////////////////////////////////////////// // Construction /////////////////////////////////////////////////////////////////////////// @@ -1053,7 +1060,8 @@ public class AudioService extends IAudioService.Stub sendEncodedSurroundMode(mContentResolver, "onAudioServerDied"); sendEnabledSurroundFormats(mContentResolver, true); updateAssistantUId(true); - updateRttEanbled(mContentResolver); + updateCurrentImeUid(true); + AudioSystem.setRttEnabled(mRttEnabled); } synchronized (mAccessibilityServiceUidsLock) { AudioSystem.setA11yServicesUids(mAccessibilityServiceUids); @@ -1598,10 +1606,35 @@ public class AudioService extends IAudioService.Stub } } - private void updateRttEanbled(ContentResolver cr) { - final boolean rttEnabled = Settings.Secure.getIntForUser(cr, - Settings.Secure.RTT_CALLING_MODE, 0, UserHandle.USER_CURRENT) != 0; - AudioSystem.setRttEnabled(rttEnabled); + @GuardedBy("mSettingsLock") + private void updateCurrentImeUid(boolean forceUpdate) { + String imeId = Settings.Secure.getStringForUser( + mContentResolver, + Settings.Secure.DEFAULT_INPUT_METHOD, UserHandle.USER_CURRENT); + if (TextUtils.isEmpty(imeId)) { + Log.e(TAG, "updateCurrentImeUid() could not find current IME"); + return; + } + ComponentName componentName = ComponentName.unflattenFromString(imeId); + if (componentName == null) { + Log.e(TAG, "updateCurrentImeUid() got invalid service name for " + + Settings.Secure.DEFAULT_INPUT_METHOD + ": " + imeId); + return; + } + String packageName = componentName.getPackageName(); + int currentUserId = LocalServices.getService(ActivityManagerInternal.class) + .getCurrentUserId(); + int currentImeUid = LocalServices.getService(PackageManagerInternal.class) + .getPackageUidInternal(packageName, 0 /* flags */, currentUserId); + if (currentImeUid < 0) { + Log.e(TAG, "updateCurrentImeUid() could not find UID for package: " + packageName); + return; + } + + if (currentImeUid != mCurrentImeUid || forceUpdate) { + AudioSystem.setCurrentImeUid(currentImeUid); + mCurrentImeUid = currentImeUid; + } } private void readPersistedSettings() { @@ -1648,7 +1681,8 @@ public class AudioService extends IAudioService.Stub sendEncodedSurroundMode(cr, "readPersistedSettings"); sendEnabledSurroundFormats(cr, true); updateAssistantUId(true); - updateRttEanbled(cr); + updateCurrentImeUid(true); + AudioSystem.setRttEnabled(mRttEnabled); } mMuteAffectedStreams = System.getIntForUser(cr, @@ -2324,6 +2358,13 @@ public class AudioService extends IAudioService.Stub // For legacy reason, propagate to all streams associated to this volume group for (final int groupedStream : vgs.getLegacyStreamTypes()) { + try { + ensureValidStreamType(groupedStream); + } catch (IllegalArgumentException e) { + Log.d(TAG, "volume group " + volumeGroup + " has internal streams (" + groupedStream + + "), do not change associated stream volume"); + continue; + } setStreamVolume(groupedStream, index, flags, callingPackage, callingPackage, Binder.getCallingUid()); } @@ -3677,6 +3718,27 @@ public class AudioService extends IAudioService.Stub return mIsCallScreeningModeSupported; } + /** @see AudioManager#setRttEnabled() */ + @Override + public void setRttEnabled(boolean rttEnabled) { + if (mContext.checkCallingOrSelfPermission( + android.Manifest.permission.MODIFY_PHONE_STATE) + != PackageManager.PERMISSION_GRANTED) { + Log.w(TAG, "MODIFY_PHONE_STATE Permission Denial: setRttEnabled from pid=" + + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid()); + return; + } + synchronized (mSettingsLock) { + mRttEnabled = rttEnabled; + final long identity = Binder.clearCallingIdentity(); + try { + AudioSystem.setRttEnabled(rttEnabled); + } finally { + Binder.restoreCallingIdentity(identity); + } + } + } + //========================================================================================== // Sound Effects //========================================================================================== @@ -4881,10 +4943,6 @@ public class AudioService extends IAudioService.Stub public void applyAllVolumes() { synchronized (VolumeGroupState.class) { - if (mLegacyStreamType != AudioSystem.STREAM_DEFAULT) { - // No-op to avoid regression with stream based volume management - return; - } // apply device specific volumes first int index; for (int i = 0; i < mIndexMap.size(); i++) { @@ -5823,7 +5881,7 @@ public class AudioService extends IAudioService.Stub mContentResolver.registerContentObserver(Settings.Secure.getUriFor( Settings.Secure.VOICE_INTERACTION_SERVICE), false, this); mContentResolver.registerContentObserver(Settings.Secure.getUriFor( - Settings.Secure.RTT_CALLING_MODE), false, this); + Settings.Secure.DEFAULT_INPUT_METHOD), false, this); } @Override @@ -5847,7 +5905,7 @@ public class AudioService extends IAudioService.Stub updateEncodedSurroundOutput(); sendEnabledSurroundFormats(mContentResolver, mSurroundModeChanged); updateAssistantUId(false); - updateRttEanbled(mContentResolver); + updateCurrentImeUid(false); } } diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java index ff8e3a973641..a0876c063fb3 100644 --- a/services/core/java/com/android/server/biometrics/AuthService.java +++ b/services/core/java/com/android/server/biometrics/AuthService.java @@ -158,7 +158,8 @@ public class AuthService extends SystemService { || bundle.getCharSequence( BiometricPrompt.KEY_DEVICE_CREDENTIAL_SUBTITLE) != null || bundle.getCharSequence( - BiometricPrompt.KEY_DEVICE_CREDENTIAL_DESCRIPTION) != null) { + BiometricPrompt.KEY_DEVICE_CREDENTIAL_DESCRIPTION) != null + || bundle.getBoolean(BiometricPrompt.KEY_RECEIVE_SYSTEM_EVENTS, false)) { checkInternalPermission(); } diff --git a/services/core/java/com/android/server/biometrics/BiometricService.java b/services/core/java/com/android/server/biometrics/BiometricService.java index 233416d663d9..d49b590b8a4d 100644 --- a/services/core/java/com/android/server/biometrics/BiometricService.java +++ b/services/core/java/com/android/server/biometrics/BiometricService.java @@ -112,6 +112,7 @@ public class BiometricService extends SystemService { private static final int MSG_CANCEL_AUTHENTICATION = 10; private static final int MSG_ON_AUTHENTICATION_TIMED_OUT = 11; private static final int MSG_ON_DEVICE_CREDENTIAL_PRESSED = 12; + private static final int MSG_ON_SYSTEM_EVENT = 13; /** * Authentication either just called and we have not transitioned to the CALLED state, or @@ -360,6 +361,11 @@ public class BiometricService extends SystemService { break; } + case MSG_ON_SYSTEM_EVENT: { + handleOnSystemEvent((int) msg.obj); + break; + } + default: Slog.e(TAG, "Unknown message: " + msg); break; @@ -632,6 +638,11 @@ public class BiometricService extends SystemService { public void onDeviceCredentialPressed() { mHandler.sendEmptyMessage(MSG_ON_DEVICE_CREDENTIAL_PRESSED); } + + @Override + public void onSystemEvent(int event) { + mHandler.obtainMessage(MSG_ON_SYSTEM_EVENT, event).sendToTarget(); + } }; @@ -1579,6 +1590,27 @@ public class BiometricService extends SystemService { mCurrentAuthSession.mState = STATE_SHOWING_DEVICE_CREDENTIAL; } + private void handleOnSystemEvent(int event) { + final boolean shouldReceive = mCurrentAuthSession.mBundle + .getBoolean(BiometricPrompt.KEY_RECEIVE_SYSTEM_EVENTS, false); + Slog.d(TAG, "onSystemEvent: " + event + ", shouldReceive: " + shouldReceive); + + if (mCurrentAuthSession == null) { + Slog.e(TAG, "Auth session null"); + return; + } + + if (!shouldReceive) { + return; + } + + try { + mCurrentAuthSession.mClientReceiver.onSystemEvent(event); + } catch (RemoteException e) { + Slog.e(TAG, "RemoteException", e); + } + } + /** * Invoked when each service has notified that its client is ready to be started. When * all biometrics are ready, this invokes the SystemUI dialog through StatusBar. diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 20ffd9f51d6e..5ecaf6a148aa 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -2248,12 +2248,16 @@ public class Vpn { final String interfaceName = mTunnelIface.getInterfaceName(); final int maxMtu = mProfile.getMaxMtu(); final List<LinkAddress> internalAddresses = childConfig.getInternalAddresses(); + final List<String> dnsAddrStrings = new ArrayList<>(); final Collection<RouteInfo> newRoutes = VpnIkev2Utils.getRoutesFromTrafficSelectors( childConfig.getOutboundTrafficSelectors()); for (final LinkAddress address : internalAddresses) { mTunnelIface.addAddress(address.getAddress(), address.getPrefixLength()); } + for (InetAddress addr : childConfig.getInternalDnsServers()) { + dnsAddrStrings.add(addr.getHostAddress()); + } final NetworkAgent networkAgent; final LinkProperties lp; @@ -2269,7 +2273,9 @@ public class Vpn { mConfig.routes.clear(); mConfig.routes.addAll(newRoutes); - // TODO: Add DNS servers from negotiation + if (mConfig.dnsServers == null) mConfig.dnsServers = new ArrayList<>(); + mConfig.dnsServers.clear(); + mConfig.dnsServers.addAll(dnsAddrStrings); networkAgent = mNetworkAgent; diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java index e09cf6178981..0d824334d873 100644 --- a/services/core/java/com/android/server/display/DisplayDeviceConfig.java +++ b/services/core/java/com/android/server/display/DisplayDeviceConfig.java @@ -31,7 +31,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.math.BigDecimal; import java.util.List; import javax.xml.datatype.DatatypeConfigurationException; @@ -50,7 +49,6 @@ public class DisplayDeviceConfig { private float[] mNits; private float[] mBrightness; - private BigDecimal mHighBrightnessModeStart; private DisplayDeviceConfig() { } @@ -88,18 +86,6 @@ public class DisplayDeviceConfig { return mBrightness; } - /** - * Returns the point along the brightness value range {@link #getBrightness()} that - * high-brightness-mode begins. If high-brightness-mode is not supported, then - * Float.NaN is returned. - * - * @return The high brightness mode threshold, or Float.NaN if not supported. - */ - public float getHighBrightnessModeStart() { - return mHighBrightnessModeStart != null - ? mHighBrightnessModeStart.floatValue() : HIGH_BRIGHTNESS_MODE_UNSUPPORTED; - } - private void initFromFile(File configFile) { if (!configFile.exists()) { // Display configuration files aren't required to exist. @@ -148,9 +134,6 @@ public class DisplayDeviceConfig { } ++i; } - final BigDecimal hbmStart = map.getHighBrightnessStart(); - - mHighBrightnessModeStart = hbmStart; mNits = nits; mBrightness = backlight; } diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java index 05a757bde179..8eb771046e6d 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -646,7 +646,9 @@ final class LocalDisplayAdapter extends DisplayAdapter { + "id=" + physicalDisplayId + ", state=" + Display.stateToString(state) + ")"); } - mBacklight.setVrMode(isVrEnabled); + if (mBacklight != null) { + mBacklight.setVrMode(isVrEnabled); + } } private void setDisplayState(int state) { @@ -708,7 +710,9 @@ final class LocalDisplayAdapter extends DisplayAdapter { BrightnessSynchronizer.brightnessFloatToInt(getContext(), brightness)); } - mBacklight.setBrightness(brightness); + if (mBacklight != null) { + mBacklight.setBrightness(brightness); + } Trace.traceCounter(Trace.TRACE_TAG_POWER, "ScreenBrightness", BrightnessSynchronizer.brightnessFloatToInt( diff --git a/services/core/java/com/android/server/hdmi/README.md b/services/core/java/com/android/server/hdmi/README.md new file mode 100644 index 000000000000..2b510b503671 --- /dev/null +++ b/services/core/java/com/android/server/hdmi/README.md @@ -0,0 +1,7 @@ +# Package com.android.server.hdmi + +HDMI service for Android with focus on CEC + +## Links + +* [CEC Key Handling](cec_key_handling.md) diff --git a/services/core/java/com/android/server/hdmi/cec_key_handling.md b/services/core/java/com/android/server/hdmi/cec_key_handling.md new file mode 100644 index 000000000000..d150dd3fceb9 --- /dev/null +++ b/services/core/java/com/android/server/hdmi/cec_key_handling.md @@ -0,0 +1,36 @@ +# CEC Key Handling + +The mapping of CEC key codes to Android key codes are at +[HdmiCecKeycode](HdmiCecKeycode.java) + +# Android TV + +Android TV requires special handling of some keys. + +The general action for key handling is described in the table + +| Android Key | TV Panel | OTT | Soundbar | +| ----------- | ----------------- | ------------------- | ------------------- | +| general | Send to active source | handle on device | handle on device | +| POWER | Toggle the device power state | Toggle the TV power state | Toggle the TV power state | +| TV_POWER | Toggle the device power state | Toggle the TV power state | Toggle the TV power state | +| HOME | Turn on TV, Set active Source to TV, go to home screen | OTP, and go to home screen | OTP, and go to home screen | +| volume keys | Handle on device or send to soundbar | Send to TV or soundbar | Handle on device or send to TV | + +Special cases and flags for each key are described below + +## POWER + +### TV Panel + +TODO + +### OTT + +TODO + +### Soundbar + +TODO + + diff --git a/services/core/java/com/android/server/incident/PendingReports.java b/services/core/java/com/android/server/incident/PendingReports.java index 9fcbab71519d..f39bebf060f7 100644 --- a/services/core/java/com/android/server/incident/PendingReports.java +++ b/services/core/java/com/android/server/incident/PendingReports.java @@ -359,6 +359,8 @@ class PendingReports { private void sendBroadcast(ComponentName receiver, int primaryUser) { final Intent intent = new Intent(Intent.ACTION_PENDING_INCIDENT_REPORTS_CHANGED); intent.setComponent(receiver); + intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); + intent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setBackgroundActivityStartsAllowed(true); diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java index e6129b9b1f32..0b22586bb373 100644 --- a/services/core/java/com/android/server/input/InputManagerService.java +++ b/services/core/java/com/android/server/input/InputManagerService.java @@ -76,6 +76,7 @@ import android.view.InputChannel; import android.view.InputDevice; import android.view.InputEvent; import android.view.InputMonitor; +import android.view.InputWindowHandle; import android.view.KeyEvent; import android.view.PointerIcon; import android.view.Surface; @@ -220,7 +221,8 @@ public class InputManagerService extends IInputManager.Stub int policyFlags); private static native VerifiedInputEvent nativeVerifyInputEvent(long ptr, InputEvent event); private static native void nativeToggleCapsLock(long ptr, int deviceId); - private static native void nativeDisplayRemoved(long ptr, int displayId); + private static native void nativeSetInputWindows(long ptr, InputWindowHandle[] windowHandles, + int displayId); private static native void nativeSetInputDispatchMode(long ptr, boolean enabled, boolean frozen); private static native void nativeSetSystemUiVisibility(long ptr, int visibility); private static native void nativeSetFocusedApplication(long ptr, @@ -1534,7 +1536,7 @@ public class InputManagerService extends IInputManager.Stub /** Clean up input window handles of the given display. */ public void onDisplayRemoved(int displayId) { - nativeDisplayRemoved(mPtr, displayId); + nativeSetInputWindows(mPtr, null /* windowHandles */, displayId); } @Override diff --git a/services/core/java/com/android/server/lights/LightsManager.java b/services/core/java/com/android/server/lights/LightsManager.java index 521913a0c439..706c74137755 100644 --- a/services/core/java/com/android/server/lights/LightsManager.java +++ b/services/core/java/com/android/server/lights/LightsManager.java @@ -16,6 +16,7 @@ package com.android.server.lights; +import android.annotation.Nullable; import android.hardware.light.V2_0.Type; public abstract class LightsManager { @@ -30,7 +31,8 @@ public abstract class LightsManager { public static final int LIGHT_ID_COUNT = Type.COUNT; /** - * Returns the logical light with the given type. + * Returns the logical light with the given type, if it exists, or null. */ + @Nullable public abstract LogicalLight getLight(int id); } diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java index a42dec8b575f..3c6e8d29cae0 100644 --- a/services/core/java/com/android/server/lights/LightsService.java +++ b/services/core/java/com/android/server/lights/LightsService.java @@ -52,8 +52,8 @@ public class LightsService extends SystemService { static final String TAG = "LightsService"; static final boolean DEBUG = false; - private LightImpl[] mLights = null; - private SparseArray<LightImpl> mLightsById = null; + private final LightImpl[] mLightsByType = new LightImpl[LightsManager.LIGHT_ID_COUNT]; + private final SparseArray<LightImpl> mLightsById = new SparseArray<>(); private ILights mVintfLights = null; @@ -96,8 +96,8 @@ public class LightsService extends SystemService { synchronized (LightsService.this) { final List<Light> lights = new ArrayList<Light>(); for (int i = 0; i < mLightsById.size(); i++) { - HwLight hwLight = mLightsById.valueAt(i).getHwLight(); - if (!isSystemLight(hwLight)) { + if (!mLightsById.valueAt(i).isSystemLight()) { + HwLight hwLight = mLightsById.valueAt(i).mHwLight; lights.add(new Light(hwLight.id, hwLight.ordinal, hwLight.type)); } } @@ -138,7 +138,7 @@ public class LightsService extends SystemService { synchronized (LightsService.this) { final LightImpl light = mLightsById.get(lightId); - if (light == null || isSystemLight(light.getHwLight())) { + if (light == null || light.isSystemLight()) { throw new IllegalArgumentException("Invalid light: " + lightId); } return new LightState(light.getColor()); @@ -184,9 +184,8 @@ public class LightsService extends SystemService { private void checkRequestIsValid(int[] lightIds) { for (int i = 0; i < lightIds.length; i++) { final LightImpl light = mLightsById.get(lightIds[i]); - final HwLight hwLight = light.getHwLight(); - Preconditions.checkState(light != null && !isSystemLight(hwLight), - "invalid lightId " + hwLight.id); + Preconditions.checkState(light != null && !light.isSystemLight(), + "Invalid lightId " + lightIds[i]); } } @@ -205,9 +204,8 @@ public class LightsService extends SystemService { } for (int i = 0; i < mLightsById.size(); i++) { LightImpl light = mLightsById.valueAt(i); - HwLight hwLight = light.getHwLight(); - if (!isSystemLight(hwLight)) { - LightState state = states.get(hwLight.id); + if (!light.isSystemLight()) { + LightState state = states.get(light.mHwLight.id); if (state != null) { light.setColor(state.getColor()); } else { @@ -385,26 +383,22 @@ public class LightsService extends SystemService { int brightnessMode) { Trace.traceBegin(Trace.TRACE_TAG_POWER, "setLightState(" + mHwLight.id + ", 0x" + Integer.toHexString(color) + ")"); - if (mVintfLights != null) { - HwLightState lightState = new HwLightState(); - lightState.color = color; - lightState.flashMode = (byte) mode; - lightState.flashOnMs = onMS; - lightState.flashOffMs = offMS; - lightState.brightnessMode = (byte) brightnessMode; - try { + try { + if (mVintfLights != null) { + HwLightState lightState = new HwLightState(); + lightState.color = color; + lightState.flashMode = (byte) mode; + lightState.flashOnMs = onMS; + lightState.flashOffMs = offMS; + lightState.brightnessMode = (byte) brightnessMode; mVintfLights.setLightState(mHwLight.id, lightState); - } catch (RemoteException | UnsupportedOperationException ex) { - Slog.e(TAG, "Failed issuing setLightState", ex); - } finally { - Trace.traceEnd(Trace.TRACE_TAG_POWER); - } - } else { - try { + } else { setLight_native(mHwLight.id, color, mode, onMS, offMS, brightnessMode); - } finally { - Trace.traceEnd(Trace.TRACE_TAG_POWER); } + } catch (RemoteException | UnsupportedOperationException ex) { + Slog.e(TAG, "Failed issuing setLightState", ex); + } finally { + Trace.traceEnd(Trace.TRACE_TAG_POWER); } } @@ -412,8 +406,14 @@ public class LightsService extends SystemService { return mVrModeEnabled && mUseLowPersistenceForVR; } - private HwLight getHwLight() { - return mHwLight; + /** + * Returns whether a light is system-use-only or should be accessible to + * applications using the {@link android.hardware.lights.LightsManager} API. + */ + private boolean isSystemLight() { + // LIGHT_ID_COUNT comes from the 2.0 HIDL HAL and only contains system lights. + // Newly-added lights are made available via the public LightsManager API. + return (0 <= mHwLight.type && mHwLight.type < LightsManager.LIGHT_ID_COUNT); } private int getColor() { @@ -451,36 +451,37 @@ public class LightsService extends SystemService { } private void populateAvailableLights(Context context) { - mLights = new LightImpl[LightsManager.LIGHT_ID_COUNT]; - mLightsById = new SparseArray<>(); - if (mVintfLights != null) { - try { - for (HwLight availableLight : mVintfLights.getLights()) { - LightImpl light = new LightImpl(context, availableLight); - int type = (int) availableLight.type; - if (0 <= type && type < mLights.length && mLights[type] == null) { - mLights[type] = light; - } - mLightsById.put(availableLight.id, light); - } - } catch (RemoteException ex) { - Slog.e(TAG, "Unable to get lights for initialization", ex); + populateAvailableLightsFromAidl(context); + } else { + populateAvailableLightsFromHidl(context); + } + + for (int i = mLightsById.size() - 1; i >= 0; i--) { + final int type = mLightsById.keyAt(i); + if (0 <= type && type < mLightsByType.length) { + mLightsByType[type] = mLightsById.valueAt(i); } } + } - // In the case where only the old HAL is available, all lights will be initialized here - for (int i = 0; i < mLights.length; i++) { - if (mLights[i] == null) { - // The ordinal can be anything if there is only 1 light of each type. Set it to 1. - HwLight light = new HwLight(); - light.id = (byte) i; - light.ordinal = 1; - light.type = (byte) i; - - mLights[i] = new LightImpl(context, light); - mLightsById.put(i, mLights[i]); + private void populateAvailableLightsFromAidl(Context context) { + try { + for (HwLight hwLight : mVintfLights.getLights()) { + mLightsById.put(hwLight.id, new LightImpl(context, hwLight)); } + } catch (RemoteException ex) { + Slog.e(TAG, "Unable to get lights from HAL", ex); + } + } + + private void populateAvailableLightsFromHidl(Context context) { + for (int i = 0; i < mLightsByType.length; i++) { + HwLight hwLight = new HwLight(); + hwLight.id = (byte) i; + hwLight.ordinal = 1; + hwLight.type = (byte) i; + mLightsById.put(hwLight.id, new LightImpl(context, hwLight)); } } @@ -505,25 +506,14 @@ public class LightsService extends SystemService { private final LightsManager mService = new LightsManager() { @Override public LogicalLight getLight(int lightType) { - if (mLights != null && 0 <= lightType && lightType < mLights.length) { - return mLights[lightType]; + if (mLightsByType != null && 0 <= lightType && lightType < mLightsByType.length) { + return mLightsByType[lightType]; } else { return null; } } }; - /** - * Returns whether a light is system-use-only or should be accessible to - * applications using the {@link android.hardware.lights.LightsManager} API. - */ - private static boolean isSystemLight(HwLight light) { - // LIGHT_ID_COUNT comes from the 2.0 HIDL HAL and only contains system - // lights. Newly added lights will be made available via the - // LightsManager API. - return 0 <= light.type && light.type < LightsManager.LIGHT_ID_COUNT; - } - static native void setLight_native(int light, int color, int mode, int onMS, int offMS, int brightnessMode); } diff --git a/services/core/java/com/android/server/location/AppOpsHelper.java b/services/core/java/com/android/server/location/AppOpsHelper.java new file mode 100644 index 000000000000..9c279166ac8a --- /dev/null +++ b/services/core/java/com/android/server/location/AppOpsHelper.java @@ -0,0 +1,253 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location; + +import static android.app.AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION; +import static android.app.AppOpsManager.OP_MONITOR_LOCATION; + +import static com.android.server.LocationManagerService.D; +import static com.android.server.LocationManagerService.TAG; + +import android.annotation.Nullable; +import android.app.AppOpsManager; +import android.content.Context; +import android.os.Binder; +import android.util.Log; + +import com.android.internal.annotations.GuardedBy; +import com.android.internal.util.Preconditions; +import com.android.internal.util.function.pooled.PooledLambda; +import com.android.server.FgThread; + +import java.util.Objects; +import java.util.concurrent.CopyOnWriteArrayList; + +/** + * Provides helpers and listeners for appops. + */ +public class AppOpsHelper { + + /** + * Listener for current user changes. + */ + public interface LocationAppOpListener { + + /** + * Called when something has changed about a location appop for the given package. + */ + void onAppOpsChanged(String packageName); + } + + private final Context mContext; + private final CopyOnWriteArrayList<LocationAppOpListener> mListeners; + + @GuardedBy("this") + @Nullable + private AppOpsManager mAppOps; + + public AppOpsHelper(Context context) { + mContext = context; + mListeners = new CopyOnWriteArrayList<>(); + } + + /** Called when system is ready. */ + public synchronized void onSystemReady() { + if (mAppOps != null) { + return; + } + + mAppOps = Objects.requireNonNull(mContext.getSystemService(AppOpsManager.class)); + mAppOps.startWatchingMode( + AppOpsManager.OP_COARSE_LOCATION, + null, + AppOpsManager.WATCH_FOREGROUND_CHANGES, + new AppOpsManager.OnOpChangedInternalListener() { + public void onOpChanged(int op, String packageName) { + // invoked on ui thread, move to fg thread so ui thread isn't blocked + FgThread.getHandler().sendMessage( + PooledLambda.obtainMessage(AppOpsHelper::onAppOpChanged, + AppOpsHelper.this, packageName)); + } + }); + } + + private void onAppOpChanged(String packageName) { + if (D) { + Log.v(TAG, "location appop changed for " + packageName); + } + + for (LocationAppOpListener listener : mListeners) { + listener.onAppOpsChanged(packageName); + } + } + + /** + * Adds a listener for app ops events. Callbacks occur on an unspecified thread. + */ + public void addListener(LocationAppOpListener listener) { + mListeners.add(listener); + } + + /** + * Removes a listener for app ops events. + */ + public void removeListener(LocationAppOpListener listener) { + mListeners.remove(listener); + } + + /** + * Checks if the given identity may have locations delivered without noting that a location is + * being delivered. This is a looser guarantee than {@link #noteLocationAccess(CallerIdentity)}, + * and this function does not validate package arguments and so should not be used with + * unvalidated arguments or before actually delivering locations. + * + * @see AppOpsManager#checkOpNoThrow(int, int, String) + */ + public boolean checkLocationAccess(CallerIdentity callerIdentity) { + synchronized (this) { + Preconditions.checkState(mAppOps != null); + } + + long identity = Binder.clearCallingIdentity(); + try { + return mAppOps.checkOpNoThrow( + CallerIdentity.asAppOp(callerIdentity.permissionLevel), + callerIdentity.uid, + callerIdentity.packageName) == AppOpsManager.MODE_ALLOWED; + } finally { + Binder.restoreCallingIdentity(identity); + } + } + + /** + * Notes location access to the given identity, ie, location delivery. This method should be + * called right before a location is delivered, and if it returns false, the location should not + * be delivered. + */ + public boolean noteLocationAccess(CallerIdentity identity) { + return noteOpNoThrow(CallerIdentity.asAppOp(identity.permissionLevel), identity); + } + + /** + * Notifies app ops that the given identity is using location at normal/low power levels. If + * this function returns false, do not later call + * {@link #stopLocationMonitoring(CallerIdentity)}. + */ + public boolean startLocationMonitoring(CallerIdentity identity) { + return startLocationMonitoring(OP_MONITOR_LOCATION, identity); + } + + /** + * Notifies app ops that the given identity is no longer using location at normal/low power + * levels. + */ + public void stopLocationMonitoring(CallerIdentity identity) { + stopLocationMonitoring(OP_MONITOR_LOCATION, identity); + } + + /** + * Notifies app ops that the given identity is using location at high levels. If this function + * returns false, do not later call {@link #stopLocationMonitoring(CallerIdentity)}. + */ + public boolean startHighPowerLocationMonitoring(CallerIdentity identity) { + return startLocationMonitoring(OP_MONITOR_HIGH_POWER_LOCATION, identity); + } + + /** + * Notifies app ops that the given identity is no longer using location at high power levels. + */ + public void stopHighPowerLocationMonitoring(CallerIdentity identity) { + stopLocationMonitoring(OP_MONITOR_HIGH_POWER_LOCATION, identity); + } + + /** + * Notes access to any mock location APIs. If this call returns false, access to the APIs should + * silently fail. + */ + public boolean noteMockLocationAccess(CallerIdentity callerIdentity) { + synchronized (this) { + Preconditions.checkState(mAppOps != null); + } + + long identity = Binder.clearCallingIdentity(); + try { + // note that this is not the no throw version of noteOp, this call may throw exceptions + return mAppOps.noteOp( + AppOpsManager.OP_MOCK_LOCATION, + callerIdentity.uid, + callerIdentity.packageName, + callerIdentity.featureId, + null) == AppOpsManager.MODE_ALLOWED; + } finally { + Binder.restoreCallingIdentity(identity); + } + } + + private boolean startLocationMonitoring(int appOp, CallerIdentity callerIdentity) { + synchronized (this) { + Preconditions.checkState(mAppOps != null); + } + + long identity = Binder.clearCallingIdentity(); + try { + return mAppOps.startOpNoThrow( + appOp, + callerIdentity.uid, + callerIdentity.packageName, + false, + callerIdentity.featureId, + null) == AppOpsManager.MODE_ALLOWED; + } finally { + Binder.restoreCallingIdentity(identity); + } + } + + private void stopLocationMonitoring(int appOp, CallerIdentity callerIdentity) { + synchronized (this) { + Preconditions.checkState(mAppOps != null); + } + + long identity = Binder.clearCallingIdentity(); + try { + mAppOps.finishOp( + appOp, + callerIdentity.uid, + callerIdentity.packageName, + callerIdentity.featureId); + } finally { + Binder.restoreCallingIdentity(identity); + } + } + + private boolean noteOpNoThrow(int appOp, CallerIdentity callerIdentity) { + synchronized (this) { + Preconditions.checkState(mAppOps != null); + } + + long identity = Binder.clearCallingIdentity(); + try { + return mAppOps.noteOpNoThrow( + appOp, + callerIdentity.uid, + callerIdentity.packageName, + callerIdentity.featureId, + null) == AppOpsManager.MODE_ALLOWED; + } finally { + Binder.restoreCallingIdentity(identity); + } + } +} diff --git a/services/core/java/com/android/server/location/CallerIdentity.java b/services/core/java/com/android/server/location/CallerIdentity.java index 75ba5b8c212e..b84fd13415fc 100644 --- a/services/core/java/com/android/server/location/CallerIdentity.java +++ b/services/core/java/com/android/server/location/CallerIdentity.java @@ -16,25 +16,211 @@ package com.android.server.location; -import android.annotation.NonNull; +import static android.Manifest.permission.ACCESS_COARSE_LOCATION; +import static android.Manifest.permission.ACCESS_FINE_LOCATION; +import static android.content.pm.PackageManager.PERMISSION_GRANTED; + +import android.annotation.IntDef; import android.annotation.Nullable; +import android.app.AppOpsManager; +import android.content.Context; +import android.os.Binder; +import android.os.UserHandle; + +import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.util.ArrayUtils; +import com.android.internal.util.Preconditions; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.Objects; /** * Represents the calling process's uid, pid, and package name. */ -public class CallerIdentity { - public final int mUid; - public final int mPid; - public final String mPackageName; - public final @Nullable String mFeatureId; - public final @NonNull String mListenerIdentifier; - - public CallerIdentity(int uid, int pid, String packageName, @Nullable String featureId, - @NonNull String listenerIdentifier) { - mUid = uid; - mPid = pid; - mPackageName = packageName; - mFeatureId = featureId; - mListenerIdentifier = listenerIdentifier; +public final class CallerIdentity { + + public static final int PERMISSION_NONE = 0; + public static final int PERMISSION_COARSE = 1; + public static final int PERMISSION_FINE = 2; + + @IntDef({PERMISSION_NONE, PERMISSION_COARSE, PERMISSION_FINE}) + @Retention(RetentionPolicy.SOURCE) + public @interface PermissionLevel {} + + /** + * Converts the given permission level to the corresponding permission. + */ + public static String asPermission(@PermissionLevel int permissionLevel) { + switch (permissionLevel) { + case PERMISSION_COARSE: + return ACCESS_COARSE_LOCATION; + case PERMISSION_FINE: + return ACCESS_FINE_LOCATION; + default: + throw new IllegalArgumentException(); + } + } + + /** + * Converts the given permission level to the corresponding appop. + */ + public static int asAppOp(@PermissionLevel int permissionLevel) { + switch (permissionLevel) { + case PERMISSION_COARSE: + return AppOpsManager.OP_COARSE_LOCATION; + case PERMISSION_FINE: + return AppOpsManager.OP_FINE_LOCATION; + default: + throw new IllegalArgumentException(); + } + } + + /** + * Creates a CallerIdentity from the current binder identity, using the given package and + * feature id. The package will be checked to enforce it belongs to the calling uid, and a + * security exception will be thrown if it is invalid. + */ + public static CallerIdentity fromBinder(Context context, String packageName, + @Nullable String featureId) { + int uid = Binder.getCallingUid(); + if (!ArrayUtils.contains(context.getPackageManager().getPackagesForUid(uid), packageName)) { + throw new SecurityException("invalid package \"" + packageName + "\" for uid " + uid); + } + + return fromBinderUnsafe(context, packageName, featureId); + } + + /** + * Creates a CallerIdentity from the current binder identity, using the given package and + * feature id. The package will not be checked to enforce that it belongs to the calling uid - + * this method should only be used if the package will be validated by some other means, such as + * an appops call. + */ + public static CallerIdentity fromBinderUnsafe(Context context, String packageName, + @Nullable String featureId) { + return new CallerIdentity(Binder.getCallingUid(), Binder.getCallingPid(), + UserHandle.getCallingUserId(), packageName, featureId, + getBinderPermissionLevel(context)); + } + + /** + * Throws a security exception if the caller does not hold a location permission. + */ + public static void enforceCallingOrSelfLocationPermission(Context context) { + enforceLocationPermission(Binder.getCallingUid(), getBinderPermissionLevel(context)); + } + + /** + * Returns false if the caller does not hold a location permission, true otherwise. + */ + public static boolean checkCallingOrSelfLocationPermission(Context context) { + return checkLocationPermission(getBinderPermissionLevel(context)); + } + + private static void enforceLocationPermission(int uid, @PermissionLevel int permissionLevel) { + if (checkLocationPermission(permissionLevel)) { + return; + } + + throw new SecurityException("uid " + uid + " does not have " + ACCESS_COARSE_LOCATION + + " or " + ACCESS_FINE_LOCATION + "."); + } + + private static boolean checkLocationPermission(@PermissionLevel int permissionLevel) { + return permissionLevel >= PERMISSION_COARSE; + } + + private static @PermissionLevel int getBinderPermissionLevel(Context context) { + if (context.checkCallingOrSelfPermission(ACCESS_FINE_LOCATION) == PERMISSION_GRANTED) { + return PERMISSION_FINE; + } + if (context.checkCallingOrSelfPermission(ACCESS_COARSE_LOCATION) == PERMISSION_GRANTED) { + return PERMISSION_COARSE; + } + + return PERMISSION_NONE; + } + + /** The calling UID. */ + public final int uid; + + /** The calling PID. */ + public final int pid; + + /** The calling user. */ + public final int userId; + + /** The calling package name. */ + public final String packageName; + + /** The calling feature id. */ + public final @Nullable String featureId; + + /** + * The calling location permission level. This field should only be used for validating + * permissions for API access. It should not be used for validating permissions for location + * access - that must be done through appops. + */ + public final @PermissionLevel int permissionLevel; + + @VisibleForTesting + public CallerIdentity(int uid, int pid, int userId, String packageName, + @Nullable String featureId, @PermissionLevel int permissionLevel) { + this.uid = uid; + this.pid = pid; + this.userId = userId; + this.packageName = Objects.requireNonNull(packageName); + this.featureId = featureId; + this.permissionLevel = Preconditions.checkArgumentInRange(permissionLevel, PERMISSION_NONE, + PERMISSION_FINE, "permissionLevel"); + } + + /** + * Throws a security exception if the CallerIdentity does not hold a location permission. + */ + public void enforceLocationPermission() { + enforceLocationPermission(uid, permissionLevel); + } + + @Override + public String toString() { + int length = 10 + packageName.length(); + if (featureId != null) { + length += featureId.length(); + } + + StringBuilder builder = new StringBuilder(length); + builder.append(pid).append("/").append(packageName); + if (featureId != null) { + builder.append("["); + if (featureId.startsWith(packageName)) { + builder.append(featureId.substring(packageName.length())); + } else { + builder.append(featureId); + } + builder.append("]"); + } + return builder.toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof CallerIdentity)) { + return false; + } + CallerIdentity that = (CallerIdentity) o; + return uid == that.uid + && pid == that.pid + && packageName.equals(that.packageName) + && Objects.equals(featureId, that.featureId); + } + + @Override + public int hashCode() { + return Objects.hash(uid, pid, packageName, featureId); } } diff --git a/services/core/java/com/android/server/location/GeofenceManager.java b/services/core/java/com/android/server/location/GeofenceManager.java index 4e9c06761e54..195b059b7374 100644 --- a/services/core/java/com/android/server/location/GeofenceManager.java +++ b/services/core/java/com/android/server/location/GeofenceManager.java @@ -16,9 +16,6 @@ package com.android.server.location; -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.app.ActivityManager; import android.app.AppOpsManager; import android.app.PendingIntent; import android.content.Context; @@ -38,7 +35,6 @@ import android.util.Log; import android.util.Slog; import com.android.server.FgThread; -import com.android.server.LocationManagerService; import com.android.server.PendingIntentUtils; import java.io.PrintWriter; @@ -125,16 +121,10 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish } public void addFence(LocationRequest request, Geofence geofence, PendingIntent intent, - int allowedResolutionLevel, int uid, String packageName, @Nullable String featureId, - @NonNull String listenerIdentifier) { - if (D) { - Slog.d(TAG, "addFence: request=" + request + ", geofence=" + geofence - + ", intent=" + intent + ", uid=" + uid + ", packageName=" + packageName); - } - + CallerIdentity identity) { GeofenceState state = new GeofenceState(geofence, request.getExpirationRealtimeMs(SystemClock.elapsedRealtime()), - allowedResolutionLevel, uid, packageName, featureId, listenerIdentifier, intent); + identity, intent); synchronized (mLock) { // first make sure it doesn't already exist for (int i = mFences.size() - 1; i >= 0; i--) { @@ -182,26 +172,14 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish } synchronized (mLock) { - Iterator<GeofenceState> iter = mFences.iterator(); - while (iter.hasNext()) { - GeofenceState state = iter.next(); - if (state.mPackageName.equals(packageName)) { - iter.remove(); - } - } + mFences.removeIf(state -> state.mIdentity.packageName.equals(packageName)); scheduleUpdateFencesLocked(); } } private void removeExpiredFencesLocked() { long time = SystemClock.elapsedRealtime(); - Iterator<GeofenceState> iter = mFences.iterator(); - while (iter.hasNext()) { - GeofenceState state = iter.next(); - if (state.mExpireAt < time) { - iter.remove(); - } - } + mFences.removeIf(state -> state.mExpireAt < time); } private void scheduleUpdateFencesLocked() { @@ -266,24 +244,17 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish double minFenceDistance = Double.MAX_VALUE; boolean needUpdates = false; for (GeofenceState state : mFences) { - if (mSettingsStore.isLocationPackageBlacklisted(ActivityManager.getCurrentUser(), - state.mPackageName)) { - if (D) { - Slog.d(TAG, "skipping geofence processing for blacklisted app: " - + state.mPackageName); - } + CallerIdentity identity = state.mIdentity; + if (mSettingsStore.isLocationPackageBlacklisted(identity.userId, + identity.packageName)) { continue; } - int op = LocationManagerService.resolutionLevelToOp(state.mAllowedResolutionLevel); + int op = CallerIdentity.asAppOp(identity.permissionLevel); if (op >= 0) { - if (mAppOps.noteOpNoThrow(AppOpsManager.OP_FINE_LOCATION, state.mUid, - state.mPackageName, state.mFeatureId, state.mListenerIdentifier) + if (mAppOps.noteOpNoThrow(AppOpsManager.OP_FINE_LOCATION, identity.uid, + identity.packageName, identity.featureId, null) != AppOpsManager.MODE_ALLOWED) { - if (D) { - Slog.d(TAG, "skipping geofence processing for no op app: " - + state.mPackageName); - } continue; } } @@ -429,7 +400,7 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish public void dump(PrintWriter pw) { for (GeofenceState state : mFences) { - pw.println(state.mPackageName + " " + state.mFence); + pw.println(state.mIdentity + " " + state.mFence); } } diff --git a/services/core/java/com/android/server/location/GeofenceState.java b/services/core/java/com/android/server/location/GeofenceState.java index a91a1dcb78e7..13318bfa6492 100644 --- a/services/core/java/com/android/server/location/GeofenceState.java +++ b/services/core/java/com/android/server/location/GeofenceState.java @@ -17,8 +17,6 @@ package com.android.server.location; -import android.annotation.NonNull; -import android.annotation.Nullable; import android.app.PendingIntent; import android.location.Geofence; import android.location.Location; @@ -37,29 +35,20 @@ public class GeofenceState { public final Geofence mFence; private final Location mLocation; public final long mExpireAt; - public final int mAllowedResolutionLevel; - public final int mUid; - public final String mPackageName; - public final @Nullable String mFeatureId; - public final @NonNull String mListenerIdentifier; + public final CallerIdentity mIdentity; public final PendingIntent mIntent; int mState; // current state double mDistanceToCenter; // current distance to center of fence - public GeofenceState(Geofence fence, long expireAt, int allowedResolutionLevel, int uid, - String packageName, @Nullable String featureId, @NonNull String listenerIdentifier, + public GeofenceState(Geofence fence, long expireAt, CallerIdentity identity, PendingIntent intent) { mState = STATE_UNKNOWN; mDistanceToCenter = Double.MAX_VALUE; mFence = fence; mExpireAt = expireAt; - mAllowedResolutionLevel = allowedResolutionLevel; - mUid = uid; - mPackageName = packageName; - mFeatureId = featureId; - mListenerIdentifier = listenerIdentifier; + mIdentity = identity; mIntent = intent; mLocation = new Location(""); diff --git a/services/core/java/com/android/server/location/LocationPermissionUtil.java b/services/core/java/com/android/server/location/LocationPermissionUtil.java index 4465f31cb45b..80b93b5e8ef6 100644 --- a/services/core/java/com/android/server/location/LocationPermissionUtil.java +++ b/services/core/java/com/android/server/location/LocationPermissionUtil.java @@ -49,13 +49,13 @@ public final class LocationPermissionUtil { private static boolean hasPermissionLocationHardware(Context context, CallerIdentity callerIdentity) { return context.checkPermission(android.Manifest.permission.LOCATION_HARDWARE, - callerIdentity.mPid, callerIdentity.mUid) == PackageManager.PERMISSION_GRANTED; + callerIdentity.pid, callerIdentity.uid) == PackageManager.PERMISSION_GRANTED; } private static boolean hasPermissionUpdateAppOpsStats(Context context, CallerIdentity callerIdentity) { return context.checkPermission(android.Manifest.permission.UPDATE_APP_OPS_STATS, - callerIdentity.mPid, callerIdentity.mUid) == PackageManager.PERMISSION_GRANTED; + callerIdentity.pid, callerIdentity.uid) == PackageManager.PERMISSION_GRANTED; } private LocationPermissionUtil() {} diff --git a/services/core/java/com/android/server/location/RemoteListenerHelper.java b/services/core/java/com/android/server/location/RemoteListenerHelper.java index 11f068533a6d..9c908dfb4276 100644 --- a/services/core/java/com/android/server/location/RemoteListenerHelper.java +++ b/services/core/java/com/android/server/location/RemoteListenerHelper.java @@ -179,13 +179,12 @@ public abstract class RemoteListenerHelper<TRequest, TListener extends IInterfac if (LocationPermissionUtil.doesCallerReportToAppOps(context, callerIdentity)) { // The caller is identified as a location provider that will report location // access to AppOps. Skip noteOp but do checkOp to check for location permission. - return mAppOps.checkOpNoThrow(AppOpsManager.OP_FINE_LOCATION, callerIdentity.mUid, - callerIdentity.mPackageName) == AppOpsManager.MODE_ALLOWED; + return mAppOps.checkOpNoThrow(AppOpsManager.OP_FINE_LOCATION, callerIdentity.uid, + callerIdentity.packageName) == AppOpsManager.MODE_ALLOWED; } - return mAppOps.noteOpNoThrow(AppOpsManager.OP_FINE_LOCATION, callerIdentity.mUid, - callerIdentity.mPackageName, callerIdentity.mFeatureId, - "Location sent to " + callerIdentity.mListenerIdentifier) + return mAppOps.noteOpNoThrow(AppOpsManager.OP_FINE_LOCATION, callerIdentity.uid, + callerIdentity.packageName, callerIdentity.featureId, null) == AppOpsManager.MODE_ALLOWED; } @@ -273,7 +272,7 @@ public abstract class RemoteListenerHelper<TRequest, TListener extends IInterfac } @Nullable - protected TRequest getRequest() { + public TRequest getRequest() { return mRequest; } } diff --git a/services/core/java/com/android/server/location/SettingsHelper.java b/services/core/java/com/android/server/location/SettingsHelper.java index 5fe21bdf8950..7ab258c29b46 100644 --- a/services/core/java/com/android/server/location/SettingsHelper.java +++ b/services/core/java/com/android/server/location/SettingsHelper.java @@ -22,7 +22,6 @@ import static android.provider.Settings.Global.LOCATION_BACKGROUND_THROTTLE_INTE import static android.provider.Settings.Global.LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST; import static android.provider.Settings.Global.LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS; import static android.provider.Settings.Global.LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST; -import static android.provider.Settings.Global.LOCATION_LAST_LOCATION_MAX_AGE_MILLIS; import static android.provider.Settings.Secure.LOCATION_COARSE_ACCURACY_M; import static android.provider.Settings.Secure.LOCATION_MODE; import static android.provider.Settings.Secure.LOCATION_MODE_OFF; @@ -92,7 +91,6 @@ public class SettingsHelper { private static final long DEFAULT_BACKGROUND_THROTTLE_INTERVAL_MS = 30 * 60 * 1000; private static final long DEFAULT_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS = 30 * 60 * 1000; - private static final long DEFAULT_MAX_LAST_LOCATION_AGE_MS = 20 * 60 * 1000; private static final float DEFAULT_COARSE_LOCATION_ACCURACY_M = 2000.0f; private final Context mContext; @@ -285,21 +283,6 @@ public class SettingsHelper { } /** - * Retrieve maximum age of the last location. - */ - public long getMaxLastLocationAgeMs() { - long identity = Binder.clearCallingIdentity(); - try { - return Settings.Global.getLong( - mContext.getContentResolver(), - LOCATION_LAST_LOCATION_MAX_AGE_MILLIS, - DEFAULT_MAX_LAST_LOCATION_AGE_MS); - } finally { - Binder.restoreCallingIdentity(identity); - } - } - - /** * Retrieve the accuracy for coarsening location, ie, the grid size used for snap-to-grid * coarsening. */ diff --git a/services/core/java/com/android/server/location/ExponentialBackOff.java b/services/core/java/com/android/server/location/gnss/ExponentialBackOff.java index 8c77b2176b74..05a534fa36e9 100644 --- a/services/core/java/com/android/server/location/ExponentialBackOff.java +++ b/services/core/java/com/android/server/location/gnss/ExponentialBackOff.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; /** * A simple implementation of exponential backoff. diff --git a/services/core/java/com/android/server/location/GnssAntennaInfoProvider.java b/services/core/java/com/android/server/location/gnss/GnssAntennaInfoProvider.java index bc50ebc2c5c3..4ee1100b5297 100644 --- a/services/core/java/com/android/server/location/GnssAntennaInfoProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssAntennaInfoProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import android.content.Context; import android.location.GnssAntennaInfo; @@ -23,6 +23,8 @@ import android.os.Handler; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; +import com.android.server.location.CallerIdentity; +import com.android.server.location.RemoteListenerHelper; import java.util.List; @@ -110,7 +112,7 @@ public abstract class GnssAntennaInfoProvider foreach((IGnssAntennaInfoListener listener, CallerIdentity callerIdentity) -> { if (!hasPermission(mContext, callerIdentity)) { logPermissionDisabledEventNotReported( - TAG, callerIdentity.mPackageName, "GNSS antenna info"); + TAG, callerIdentity.packageName, "GNSS antenna info"); return; } listener.onGnssAntennaInfoReceived(gnssAntennaInfos); diff --git a/services/core/java/com/android/server/location/GnssBatchingProvider.java b/services/core/java/com/android/server/location/gnss/GnssBatchingProvider.java index f3918ee9e8ff..f583a3ed3136 100644 --- a/services/core/java/com/android/server/location/GnssBatchingProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssBatchingProvider.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import android.util.Log; diff --git a/services/core/java/com/android/server/location/GnssCapabilitiesProvider.java b/services/core/java/com/android/server/location/gnss/GnssCapabilitiesProvider.java index 5c8507f7fde0..71b5b33c242b 100644 --- a/services/core/java/com/android/server/location/GnssCapabilitiesProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssCapabilitiesProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import android.location.GnssCapabilities; import android.util.Log; diff --git a/services/core/java/com/android/server/location/GnssConfiguration.java b/services/core/java/com/android/server/location/gnss/GnssConfiguration.java index a3523f23ddcf..14ab79e7ecde 100644 --- a/services/core/java/com/android/server/location/GnssConfiguration.java +++ b/services/core/java/com/android/server/location/gnss/GnssConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import android.content.Context; import android.os.PersistableBundle; diff --git a/services/core/java/com/android/server/location/GnssGeofenceProvider.java b/services/core/java/com/android/server/location/gnss/GnssGeofenceProvider.java index a84b0b1c4335..53883b91c36d 100644 --- a/services/core/java/com/android/server/location/GnssGeofenceProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssGeofenceProvider.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import android.location.IGpsGeofenceHardware; import android.util.Log; diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java index c1fbcfba864a..ad3c8a61182f 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 The Android Open Source Project + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import android.app.AlarmManager; import android.app.AppOpsManager; @@ -78,8 +78,9 @@ import com.android.internal.util.FrameworkStatsLog; import com.android.server.DeviceIdleInternal; import com.android.server.FgThread; import com.android.server.LocalServices; -import com.android.server.location.GnssSatelliteBlacklistHelper.GnssSatelliteBlacklistCallback; -import com.android.server.location.NtpTimeHelper.InjectNtpTimeCallback; +import com.android.server.location.AbstractLocationProvider; +import com.android.server.location.gnss.NtpTimeHelper.InjectNtpTimeCallback; +import com.android.server.location.gnss.GnssSatelliteBlacklistHelper.GnssSatelliteBlacklistCallback; import java.io.FileDescriptor; import java.io.PrintWriter; diff --git a/services/core/java/com/android/server/location/gnss/GnssManagerService.java b/services/core/java/com/android/server/location/gnss/GnssManagerService.java index b57c261931f8..711f45cb7d28 100644 --- a/services/core/java/com/android/server/location/gnss/GnssManagerService.java +++ b/services/core/java/com/android/server/location/gnss/GnssManagerService.java @@ -16,15 +16,11 @@ package com.android.server.location.gnss; -import static android.app.AppOpsManager.OP_FINE_LOCATION; import static android.location.LocationManager.GPS_PROVIDER; import android.Manifest; -import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.AppOpsManager; import android.content.Context; -import android.location.GnssCapabilities; import android.location.GnssMeasurementCorrections; import android.location.GnssRequest; import android.location.IBatchedLocationCallback; @@ -41,7 +37,6 @@ import android.os.IBinder; import android.os.IInterface; import android.os.Process; import android.os.RemoteException; -import android.os.UserHandle; import android.stats.location.LocationStatsEnums; import android.util.ArrayMap; import android.util.Log; @@ -54,15 +49,8 @@ import com.android.server.LocalServices; import com.android.server.LocationManagerServiceUtils.LinkedListener; import com.android.server.LocationManagerServiceUtils.LinkedListenerBase; import com.android.server.location.AppForegroundHelper; +import com.android.server.location.AppOpsHelper; import com.android.server.location.CallerIdentity; -import com.android.server.location.GnssAntennaInfoProvider; -import com.android.server.location.GnssBatchingProvider; -import com.android.server.location.GnssCapabilitiesProvider; -import com.android.server.location.GnssLocationProvider; -import com.android.server.location.GnssMeasurementCorrectionsProvider; -import com.android.server.location.GnssMeasurementsProvider; -import com.android.server.location.GnssNavigationMessageProvider; -import com.android.server.location.GnssStatusListenerHelper; import com.android.server.location.LocationUsageLogger; import com.android.server.location.RemoteListenerHelper; import com.android.server.location.SettingsHelper; @@ -84,6 +72,7 @@ public class GnssManagerService { } private final Context mContext; + private final AppOpsHelper mAppOpsHelper; private final SettingsHelper mSettingsHelper; private final AppForegroundHelper mAppForegroundHelper; private final LocationUsageLogger mLocationUsageLogger; @@ -120,8 +109,6 @@ public class GnssManagerService { @GuardedBy("this") @Nullable private LocationManagerInternal mLocationManagerInternal; - @GuardedBy("this") - @Nullable private AppOpsManager mAppOpsManager; private final Object mGnssBatchingLock = new Object(); @@ -135,19 +122,21 @@ public class GnssManagerService { @GuardedBy("mGnssBatchingLock") private boolean mGnssBatchingInProgress = false; - public GnssManagerService(Context context, SettingsHelper settingsHelper, - AppForegroundHelper appForegroundHelper, LocationUsageLogger locationUsageLogger) { - this(context, settingsHelper, appForegroundHelper, locationUsageLogger, null); + public GnssManagerService(Context context, AppOpsHelper appOpsHelper, + SettingsHelper settingsHelper, AppForegroundHelper appForegroundHelper, + LocationUsageLogger locationUsageLogger) { + this(context, appOpsHelper, settingsHelper, appForegroundHelper, locationUsageLogger, null); } // Can use this constructor to inject GnssLocationProvider for testing @VisibleForTesting - GnssManagerService(Context context, SettingsHelper settingsHelper, + GnssManagerService(Context context, AppOpsHelper appOpsHelper, SettingsHelper settingsHelper, AppForegroundHelper appForegroundHelper, LocationUsageLogger locationUsageLogger, GnssLocationProvider gnssLocationProvider) { Preconditions.checkState(isGnssSupported()); mContext = context; + mAppOpsHelper = appOpsHelper; mSettingsHelper = settingsHelper; mAppForegroundHelper = appForegroundHelper; mLocationUsageLogger = locationUsageLogger; @@ -177,11 +166,11 @@ public class GnssManagerService { return; } + mAppOpsHelper.onSystemReady(); mSettingsHelper.onSystemReady(); mAppForegroundHelper.onSystemReady(); mLocationManagerInternal = LocalServices.getService(LocationManagerInternal.class); - mAppOpsManager = mContext.getSystemService(AppOpsManager.class); mAppForegroundHelper.addListener(this::onAppForegroundChanged); } @@ -215,11 +204,7 @@ public class GnssManagerService { * Get GNSS hardware capabilities. The capabilities returned are a bitfield as described in * {@link android.location.GnssCapabilities}. */ - public long getGnssCapabilities(String packageName) { - if (!checkLocationAppOp(packageName)) { - return GnssCapabilities.INVALID_CAPABILITIES; - } - + public long getGnssCapabilities() { return mGnssCapabilitiesProvider.getGnssCapabilities(); } @@ -230,10 +215,6 @@ public class GnssManagerService { mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null); mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null); - if (!checkLocationAppOp(packageName)) { - return 0; - } - synchronized (mGnssBatchingLock) { return mGnssBatchingProvider.getBatchSize(); } @@ -243,11 +224,13 @@ public class GnssManagerService { * Starts GNSS batch collection. GNSS positions are collected in a batch before being delivered * as a collection. */ - public boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName) { + public boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName, + String featureId) { mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null); mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null); - if (!checkLocationAppOp(packageName)) { + CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, featureId); + if (!mAppOpsHelper.checkLocationAccess(identity)) { return false; } @@ -267,25 +250,19 @@ public class GnssManagerService { * Adds a GNSS batching callback for delivering GNSS location batch results. */ public boolean addGnssBatchingCallback(IBatchedLocationCallback callback, String packageName, - @Nullable String featureId, @NonNull String listenerIdentity) { + @Nullable String featureId) { mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null); mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null); - if (!checkLocationAppOp(packageName)) { - return false; - } + CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, featureId); - CallerIdentity callerIdentity = - new CallerIdentity(Binder.getCallingUid(), Binder.getCallingPid(), packageName, - featureId, listenerIdentity); synchronized (mGnssBatchingLock) { mGnssBatchingCallback = callback; mGnssBatchingDeathCallback = new LinkedListener<>( /* request= */ null, callback, - "BatchedLocationCallback", - callerIdentity, + identity, (IBatchedLocationCallback listener) -> { stopGnssBatch(); removeGnssBatchingCallback(); @@ -305,10 +282,6 @@ public class GnssManagerService { mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null); mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null); - if (!checkLocationAppOp(packageName)) { - return; - } - synchronized (mGnssBatchingLock) { mGnssBatchingProvider.flush(); } @@ -386,7 +359,7 @@ public class GnssManagerService { LinkedListener<TRequest, TListener> linkedListener = entry.getValue(); CallerIdentity callerIdentity = linkedListener.getCallerIdentity(); TRequest request = linkedListener.getRequest(); - if (callerIdentity.mUid != uid) { + if (callerIdentity.uid != uid) { continue; } @@ -404,21 +377,19 @@ public class GnssManagerService { TListener listener, String packageName, @Nullable String featureId, - @NonNull String listenerIdentifier, RemoteListenerHelper<TRequest, TListener> gnssDataProvider, ArrayMap<IBinder, LinkedListener<TRequest, TListener>> gnssDataListeners, Consumer<TListener> binderDeathCallback) { mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null); - if (!checkLocationAppOp(packageName)) { + CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, featureId); + if (!mAppOpsHelper.checkLocationAccess(identity)) { return false; } - CallerIdentity callerIdentity = new CallerIdentity(Binder.getCallingUid(), - Binder.getCallingPid(), packageName, featureId, listenerIdentifier); LinkedListener<TRequest, TListener> linkedListener = new LinkedListener<>(request, listener, - listenerIdentifier, callerIdentity, binderDeathCallback); + identity, binderDeathCallback); IBinder binder = listener.asBinder(); if (!linkedListener.linkToListenerDeathNotificationLocked(binder)) { return false; @@ -437,11 +408,11 @@ public class GnssManagerService { /* hasListener= */ true, /* hasIntent= */ false, /* geofence= */ null, - mAppForegroundHelper.getImportance(callerIdentity.mUid)); + mAppForegroundHelper.getImportance(identity.uid)); } - if (mAppForegroundHelper.isAppForeground(callerIdentity.mUid) - || isThrottlingExempt(callerIdentity)) { - gnssDataProvider.addListener(request, listener, callerIdentity); + if (mAppForegroundHelper.isAppForeground(identity.uid) + || isThrottlingExempt(identity)) { + gnssDataProvider.addListener(request, listener, identity); } return true; } @@ -471,7 +442,7 @@ public class GnssManagerService { gnssDataProvider == mGnssMeasurementsProvider ? LocationStatsEnums.API_ADD_GNSS_MEASUREMENTS_LISTENER : LocationStatsEnums.API_REGISTER_GNSS_STATUS_CALLBACK, - linkedListener.getCallerIdentity().mPackageName, + linkedListener.getCallerIdentity().packageName, /* LocationRequest= */ null, /* hasListener= */ true, /* hasIntent= */ false, @@ -493,7 +464,6 @@ public class GnssManagerService { listener, packageName, featureId, - "Gnss status", mGnssStatusProvider, mGnssStatusListeners, this::unregisterGnssStatusCallback); @@ -514,8 +484,7 @@ public class GnssManagerService { */ public boolean addGnssMeasurementsListener(@Nullable GnssRequest request, IGnssMeasurementsListener listener, String packageName, - @Nullable String featureId, - @NonNull String listenerIdentifier) { + @Nullable String featureId) { if (request != null && request.isFullTracking()) { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.LOCATION_HARDWARE, null); @@ -526,7 +495,6 @@ public class GnssManagerService { listener, packageName, featureId, - listenerIdentifier, mGnssMeasurementsProvider, mGnssMeasurementsListeners, this::removeGnssMeasurementsListener); @@ -541,10 +509,6 @@ public class GnssManagerService { mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null); mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null); - if (!checkLocationAppOp(packageName)) { - return; - } - mGnssMeasurementCorrectionsProvider.injectGnssMeasurementCorrections( measurementCorrections); } @@ -564,18 +528,16 @@ public class GnssManagerService { * * @param listener called when GNSS antenna info is received * @param packageName name of requesting package - * @return true if listener is successfully added, false otherwise */ public boolean addGnssAntennaInfoListener( IGnssAntennaInfoListener listener, String packageName, - @Nullable String featureId, @NonNull String listenerIdentifier) { + @Nullable String featureId) { synchronized (mGnssAntennaInfoListeners) { return addGnssDataListenerLocked( /* request= */ null, listener, packageName, featureId, - listenerIdentifier, mGnssAntennaInfoProvider, mGnssAntennaInfoListeners, this::removeGnssAntennaInfoListener); @@ -599,14 +561,13 @@ public class GnssManagerService { */ public boolean addGnssNavigationMessageListener( IGnssNavigationMessageListener listener, String packageName, - @Nullable String featureId, @NonNull String listenerIdentifier) { + @Nullable String featureId) { synchronized (mGnssNavigationMessageListeners) { return addGnssDataListenerLocked( /* request= */ null, listener, packageName, featureId, - listenerIdentifier, mGnssNavigationMessageProvider, mGnssNavigationMessageListeners, this::removeGnssNavigationMessageListener); @@ -649,7 +610,7 @@ public class GnssManagerService { return; } - int userId = UserHandle.getUserId(gnssBatchingDeathCallback.getCallerIdentity().mUid); + int userId = gnssBatchingDeathCallback.getCallerIdentity().userId; if (!mLocationManagerInternal.isProviderEnabledForUser(GPS_PROVIDER, userId)) { Log.w(TAG, "reportLocationBatch() called without user permission"); return; @@ -663,27 +624,19 @@ public class GnssManagerService { } private boolean isThrottlingExempt(CallerIdentity callerIdentity) { - if (callerIdentity.mUid == Process.SYSTEM_UID) { + if (callerIdentity.uid == Process.SYSTEM_UID) { return true; } if (mSettingsHelper.getBackgroundThrottlePackageWhitelist().contains( - callerIdentity.mPackageName)) { + callerIdentity.packageName)) { return true; } synchronized (this) { Preconditions.checkState(mLocationManagerInternal != null); } - return mLocationManagerInternal.isProviderPackage(callerIdentity.mPackageName); - } - - private boolean checkLocationAppOp(String packageName) { - synchronized (this) { - Preconditions.checkState(mAppOpsManager != null); - } - return mAppOpsManager.checkOp(OP_FINE_LOCATION, Binder.getCallingUid(), packageName) - == AppOpsManager.MODE_ALLOWED; + return mLocationManagerInternal.isProviderPackage(callerIdentity.packageName); } /** diff --git a/services/core/java/com/android/server/location/GnssMeasurementCorrectionsProvider.java b/services/core/java/com/android/server/location/gnss/GnssMeasurementCorrectionsProvider.java index 82528caa0b4e..ac165d1a206b 100644 --- a/services/core/java/com/android/server/location/GnssMeasurementCorrectionsProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssMeasurementCorrectionsProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import android.location.GnssMeasurementCorrections; import android.os.Handler; diff --git a/services/core/java/com/android/server/location/GnssMeasurementsProvider.java b/services/core/java/com/android/server/location/gnss/GnssMeasurementsProvider.java index 6ba5f079264c..b42670149ab4 100644 --- a/services/core/java/com/android/server/location/GnssMeasurementsProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssMeasurementsProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 The Android Open Source Project + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import android.content.Context; import android.location.GnssMeasurementsEvent; @@ -26,6 +26,8 @@ import android.provider.Settings; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; +import com.android.server.location.CallerIdentity; +import com.android.server.location.RemoteListenerHelper; /** * An base implementation for GPS measurements provider. It abstracts out the responsibility of @@ -115,7 +117,7 @@ public abstract class GnssMeasurementsProvider foreach((IGnssMeasurementsListener listener, CallerIdentity callerIdentity) -> { if (!hasPermission(mContext, callerIdentity)) { logPermissionDisabledEventNotReported( - TAG, callerIdentity.mPackageName, "GNSS measurements"); + TAG, callerIdentity.packageName, "GNSS measurements"); return; } listener.onGnssMeasurementsReceived(event); diff --git a/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java b/services/core/java/com/android/server/location/gnss/GnssNavigationMessageProvider.java index fb901e86f494..722be3df2691 100644 --- a/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssNavigationMessageProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 The Android Open Source Project + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import android.content.Context; import android.location.GnssNavigationMessage; @@ -24,6 +24,8 @@ import android.os.RemoteException; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; +import com.android.server.location.CallerIdentity; +import com.android.server.location.RemoteListenerHelper; /** * An base implementation for GPS navigation messages provider. diff --git a/services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java index 5d6474bdbccc..3fb713bc01a5 100644 --- a/services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java +++ b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 The Android Open Source Project + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import android.content.Context; import android.database.Cursor; diff --git a/services/core/java/com/android/server/location/GnssPositionMode.java b/services/core/java/com/android/server/location/gnss/GnssPositionMode.java index 36838fc3647f..045118afbda0 100644 --- a/services/core/java/com/android/server/location/GnssPositionMode.java +++ b/services/core/java/com/android/server/location/gnss/GnssPositionMode.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import java.util.Arrays; diff --git a/services/core/java/com/android/server/location/GnssSatelliteBlacklistHelper.java b/services/core/java/com/android/server/location/gnss/GnssSatelliteBlacklistHelper.java index eb99a851115f..dccef9b9a9c4 100644 --- a/services/core/java/com/android/server/location/GnssSatelliteBlacklistHelper.java +++ b/services/core/java/com/android/server/location/gnss/GnssSatelliteBlacklistHelper.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import android.content.ContentResolver; import android.content.Context; diff --git a/services/core/java/com/android/server/location/GnssStatusListenerHelper.java b/services/core/java/com/android/server/location/gnss/GnssStatusListenerHelper.java index 1d16c03fd6f7..3417e6e7805d 100644 --- a/services/core/java/com/android/server/location/GnssStatusListenerHelper.java +++ b/services/core/java/com/android/server/location/gnss/GnssStatusListenerHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 The Android Open Source Project + * 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. @@ -11,16 +11,19 @@ * 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 + * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import android.content.Context; import android.location.IGnssStatusListener; import android.os.Handler; import android.util.Log; +import com.android.server.location.CallerIdentity; +import com.android.server.location.RemoteListenerHelper; + /** * Implementation of a handler for {@link IGnssStatusListener}. */ @@ -76,7 +79,7 @@ public abstract class GnssStatusListenerHelper extends final float[] basebandCn0s) { foreach((IGnssStatusListener listener, CallerIdentity callerIdentity) -> { if (!hasPermission(mContext, callerIdentity)) { - logPermissionDisabledEventNotReported(TAG, callerIdentity.mPackageName, + logPermissionDisabledEventNotReported(TAG, callerIdentity.packageName, "GNSS status"); return; } @@ -88,7 +91,7 @@ public abstract class GnssStatusListenerHelper extends public void onNmeaReceived(final long timestamp, final String nmea) { foreach((IGnssStatusListener listener, CallerIdentity callerIdentity) -> { if (!hasPermission(mContext, callerIdentity)) { - logPermissionDisabledEventNotReported(TAG, callerIdentity.mPackageName, "NMEA"); + logPermissionDisabledEventNotReported(TAG, callerIdentity.packageName, "NMEA"); return; } listener.onNmeaReceived(timestamp, nmea); diff --git a/services/core/java/com/android/server/location/GnssVisibilityControl.java b/services/core/java/com/android/server/location/gnss/GnssVisibilityControl.java index 2b5fc7989d8b..06fa0ea7791d 100644 --- a/services/core/java/com/android/server/location/GnssVisibilityControl.java +++ b/services/core/java/com/android/server/location/gnss/GnssVisibilityControl.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import android.annotation.Nullable; import android.annotation.SuppressLint; diff --git a/services/core/java/com/android/server/location/GpsPsdsDownloader.java b/services/core/java/com/android/server/location/gnss/GpsPsdsDownloader.java index 6fcb7d1af2ce..273f9cb13a1b 100644 --- a/services/core/java/com/android/server/location/GpsPsdsDownloader.java +++ b/services/core/java/com/android/server/location/gnss/GpsPsdsDownloader.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 The Android Open Source Project + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import android.net.TrafficStats; import android.text.TextUtils; diff --git a/services/core/java/com/android/server/location/NtpTimeHelper.java b/services/core/java/com/android/server/location/gnss/NtpTimeHelper.java index d2296ea27913..2bbb61fbe018 100644 --- a/services/core/java/com/android/server/location/NtpTimeHelper.java +++ b/services/core/java/com/android/server/location/gnss/NtpTimeHelper.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import android.content.Context; import android.net.ConnectivityManager; @@ -12,6 +28,7 @@ import android.util.NtpTrustedTime; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; +import com.android.server.location.gnss.ExponentialBackOff; import java.util.Date; diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index 1b4ec8a8fa32..9297a43b04aa 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -824,7 +824,7 @@ public class LockSettingsService extends ILockSettings.Stub { private void getAuthSecretHal() { try { - mAuthSecretService = IAuthSecret.getService(); + mAuthSecretService = IAuthSecret.getService(/* retry */ true); } catch (NoSuchElementException e) { Slog.i(TAG, "Device doesn't implement AuthSecret HAL"); } catch (RemoteException e) { @@ -1016,9 +1016,14 @@ public class LockSettingsService extends ILockSettings.Stub { } private void enforceFrpResolved() { - if (mInjector.settingsSecureGetInt(mContext.getContentResolver(), - Settings.Secure.SECURE_FRP_MODE, 0, UserHandle.USER_SYSTEM) == 1) { - throw new SecurityException("Cannot change credential while FRP is not resolved yet"); + final ContentResolver cr = mContext.getContentResolver(); + final boolean inSetupWizard = mInjector.settingsSecureGetInt(cr, + Settings.Secure.USER_SETUP_COMPLETE, 0, UserHandle.USER_SYSTEM) == 0; + final boolean secureFrp = mInjector.settingsSecureGetInt(cr, + Settings.Secure.SECURE_FRP_MODE, 0, UserHandle.USER_SYSTEM) == 1; + if (inSetupWizard && secureFrp) { + throw new SecurityException("Cannot change credential in SUW while factory reset" + + " protection is not resolved yet"); } } @@ -2161,6 +2166,13 @@ public class LockSettingsService extends ILockSettings.Stub { } } + private PasswordMetrics loadPasswordMetrics(AuthenticationToken auth, int userHandle) { + synchronized (mSpManager) { + return mSpManager.getPasswordMetrics(auth, getSyntheticPasswordHandleLocked(userHandle), + userHandle); + } + } + /** * Call after {@link #setUserPasswordMetrics} so metrics are updated before * reporting the password changed. @@ -2611,7 +2623,8 @@ public class LockSettingsService extends ILockSettings.Stub { return auth; } - private long getSyntheticPasswordHandleLocked(int userId) { + @VisibleForTesting + long getSyntheticPasswordHandleLocked(int userId) { return getLong(SYNTHETIC_PASSWORD_HANDLE_KEY, SyntheticPasswordManager.DEFAULT_HANDLE, userId); } @@ -2706,13 +2719,8 @@ public class LockSettingsService extends ILockSettings.Stub { resetLockouts.add(new PendingResetLockout(userId, response.getPayload())); } - // TODO: Move setUserPasswordMetrics() inside onCredentialVerified(): this will require - // LSS to store an encrypted version of the latest password metric for every user, - // because user credential is not known when onCredentialVerified() is called during - // a token-based unlock. - setUserPasswordMetrics(userCredential, userId); onCredentialVerified(authResult.authToken, challengeType, challenge, resetLockouts, - userId); + PasswordMetrics.computeForCredential(userCredential), userId); } else if (response.getResponseCode() == VerifyCredentialResponse.RESPONSE_RETRY) { if (response.getTimeout() > 0) { requireStrongAuth(STRONG_AUTH_REQUIRED_AFTER_LOCKOUT, userId); @@ -2724,7 +2732,16 @@ public class LockSettingsService extends ILockSettings.Stub { private void onCredentialVerified(AuthenticationToken authToken, @ChallengeType int challengeType, long challenge, - @Nullable ArrayList<PendingResetLockout> resetLockouts, int userId) { + @Nullable ArrayList<PendingResetLockout> resetLockouts, PasswordMetrics metrics, + int userId) { + + if (metrics != null) { + synchronized (this) { + mUserPasswordMetrics.put(userId, metrics); + } + } else { + Slog.wtf(TAG, "Null metrics after credential verification"); + } unlockKeystore(authToken.deriveKeyStorePassword(), userId); @@ -3118,7 +3135,9 @@ public class LockSettingsService extends ILockSettings.Stub { // TODO: Reset biometrics lockout here. Ideally that should be self-contained inside // onCredentialVerified(), which will require some refactoring on the current lockout // reset logic. - onCredentialVerified(authResult.authToken, CHALLENGE_NONE, 0, null, userId); + + onCredentialVerified(authResult.authToken, CHALLENGE_NONE, 0, null, + loadPasswordMetrics(authResult.authToken, userId), userId); return true; } @@ -3193,6 +3212,12 @@ public class LockSettingsService extends ILockSettings.Stub { mStrongAuth.dump(pw); pw.println(); pw.decreaseIndent(); + + pw.println("RebootEscrow:"); + pw.increaseIndent(); + mRebootEscrowManager.dump(pw); + pw.println(); + pw.decreaseIndent(); } /** @@ -3408,7 +3433,8 @@ public class LockSettingsService extends ILockSettings.Stub { SyntheticPasswordManager.AuthenticationToken authToken = new SyntheticPasswordManager.AuthenticationToken(spVersion); authToken.recreateDirectly(syntheticPassword); - onCredentialVerified(authToken, CHALLENGE_NONE, 0, null, userId); + onCredentialVerified(authToken, CHALLENGE_NONE, 0, null, + loadPasswordMetrics(authToken, userId), userId); } } } diff --git a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java index dabf88670639..8d4efed8604b 100644 --- a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java +++ b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java @@ -18,6 +18,7 @@ package com.android.server.locksettings; import static android.os.UserHandle.USER_SYSTEM; +import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; import android.content.Context; @@ -25,6 +26,7 @@ import android.content.pm.UserInfo; import android.hardware.rebootescrow.IRebootEscrow; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.SystemClock; import android.os.UserManager; import android.provider.Settings; import android.util.Slog; @@ -32,11 +34,15 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.FrameworkStatsLog; +import com.android.internal.util.IndentingPrintWriter; import com.android.internal.widget.RebootEscrowListener; import java.io.IOException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.NoSuchElementException; class RebootEscrowManager { @@ -63,6 +69,11 @@ class RebootEscrowManager { private static final int BOOT_COUNT_TOLERANCE = 5; /** + * Logs events for later debugging in bugreports. + */ + private final RebootEscrowEventLog mEventLog; + + /** * Used to track when the reboot escrow is wanted. Should stay true once escrow is requested * unless clearRebootEscrow is called. This will allow all the active users to be unlocked * after reboot. @@ -135,6 +146,10 @@ class RebootEscrowManager { public void reportMetric(boolean success) { FrameworkStatsLog.write(FrameworkStatsLog.REBOOT_ESCROW_RECOVERY_REPORTED, success); } + + public RebootEscrowEventLog getEventLog() { + return new RebootEscrowEventLog(); + } } RebootEscrowManager(Context context, Callbacks callbacks, LockSettingsStorage storage) { @@ -148,6 +163,7 @@ class RebootEscrowManager { mCallbacks = callbacks; mStorage = storage; mUserManager = injector.getUserManager(); + mEventLog = injector.getEventLog(); } void loadRebootEscrowDataIfAvailable() { @@ -173,6 +189,8 @@ class RebootEscrowManager { return; } + mEventLog.addEntry(RebootEscrowEvent.FOUND_ESCROW_DATA); + boolean allUsersUnlocked = true; for (UserInfo user : rebootEscrowUsers) { allUsersUnlocked &= restoreRebootEscrowForUser(user.id, escrowKey); @@ -221,6 +239,7 @@ class RebootEscrowManager { // Overwrite the existing key with the null key rebootEscrow.storeKey(new byte[32]); + mEventLog.addEntry(RebootEscrowEvent.RETRIEVED_STORED_KEK); return RebootEscrowKey.fromKeyBytes(escrowKeyBytes); } catch (RemoteException e) { Slog.w(TAG, "Could not retrieve escrow data"); @@ -242,6 +261,7 @@ class RebootEscrowManager { mCallbacks.onRebootEscrowRestored(escrowData.getSpVersion(), escrowData.getSyntheticPassword(), userId); Slog.i(TAG, "Restored reboot escrow data for user " + userId); + mEventLog.addEntry(RebootEscrowEvent.RETRIEVED_LSKF_FOR_USER, userId); return true; } catch (IOException e) { Slog.w(TAG, "Could not load reboot escrow data for user " + userId, e); @@ -278,6 +298,7 @@ class RebootEscrowManager { } mStorage.writeRebootEscrow(userId, escrowData.getBlob()); + mEventLog.addEntry(RebootEscrowEvent.STORED_LSKF_FOR_USER, userId); setRebootEscrowReady(true); } @@ -322,6 +343,8 @@ class RebootEscrowManager { for (UserInfo user : users) { mStorage.removeRebootEscrow(user.id); } + + mEventLog.addEntry(RebootEscrowEvent.CLEARED_LSKF_REQUEST); } boolean armRebootEscrowIfNeeded() { @@ -356,6 +379,7 @@ class RebootEscrowManager { if (armedRebootEscrow) { mStorage.setInt(REBOOT_ESCROW_ARMED_KEY, mInjector.getBootCount(), USER_SYSTEM); + mEventLog.addEntry(RebootEscrowEvent.SET_ARMED_STATUS); } return armedRebootEscrow; @@ -375,6 +399,7 @@ class RebootEscrowManager { clearRebootEscrowIfNeeded(); mRebootEscrowWanted = true; + mEventLog.addEntry(RebootEscrowEvent.REQUESTED_LSKF); return true; } @@ -390,4 +415,123 @@ class RebootEscrowManager { void setRebootEscrowListener(RebootEscrowListener listener) { mRebootEscrowListener = listener; } + + @VisibleForTesting + public static class RebootEscrowEvent { + static final int FOUND_ESCROW_DATA = 1; + static final int SET_ARMED_STATUS = 2; + static final int CLEARED_LSKF_REQUEST = 3; + static final int RETRIEVED_STORED_KEK = 4; + static final int REQUESTED_LSKF = 5; + static final int STORED_LSKF_FOR_USER = 6; + static final int RETRIEVED_LSKF_FOR_USER = 7; + + final int mEventId; + final Integer mUserId; + final long mWallTime; + final long mTimestamp; + + RebootEscrowEvent(int eventId) { + this(eventId, null); + } + + RebootEscrowEvent(int eventId, Integer userId) { + mEventId = eventId; + mUserId = userId; + mTimestamp = SystemClock.uptimeMillis(); + mWallTime = System.currentTimeMillis(); + } + + String getEventDescription() { + switch (mEventId) { + case FOUND_ESCROW_DATA: + return "Found escrow data"; + case SET_ARMED_STATUS: + return "Set armed status"; + case CLEARED_LSKF_REQUEST: + return "Cleared request for LSKF"; + case RETRIEVED_STORED_KEK: + return "Retrieved stored KEK"; + case REQUESTED_LSKF: + return "Requested LSKF"; + case STORED_LSKF_FOR_USER: + return "Stored LSKF for user"; + case RETRIEVED_LSKF_FOR_USER: + return "Retrieved LSKF for user"; + default: + return "Unknown event ID " + mEventId; + } + } + } + + @VisibleForTesting + public static class RebootEscrowEventLog { + private RebootEscrowEvent[] mEntries = new RebootEscrowEvent[16]; + private int mNextIndex = 0; + + void addEntry(int eventId) { + addEntryInternal(new RebootEscrowEvent(eventId)); + } + + void addEntry(int eventId, int userId) { + addEntryInternal(new RebootEscrowEvent(eventId, userId)); + } + + private void addEntryInternal(RebootEscrowEvent event) { + final int index = mNextIndex; + mEntries[index] = event; + mNextIndex = (mNextIndex + 1) % mEntries.length; + } + + void dump(@NonNull IndentingPrintWriter pw) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.US); + + for (int i = 0; i < mEntries.length; ++i) { + RebootEscrowEvent event = mEntries[(i + mNextIndex) % mEntries.length]; + if (event == null) { + continue; + } + + pw.print("Event #"); + pw.println(i); + + pw.println(" time=" + sdf.format(new Date(event.mWallTime)) + + " (timestamp=" + event.mTimestamp + ")"); + + pw.print(" event="); + pw.println(event.getEventDescription()); + + if (event.mUserId != null) { + pw.print(" user="); + pw.println(event.mUserId); + } + } + } + } + + void dump(@NonNull IndentingPrintWriter pw) { + pw.print("mRebootEscrowWanted="); + pw.println(mRebootEscrowWanted); + + pw.print("mRebootEscrowReady="); + pw.println(mRebootEscrowReady); + + pw.print("mRebootEscrowListener="); + pw.println(mRebootEscrowListener); + + boolean keySet; + synchronized (mKeyGenerationLock) { + keySet = mPendingRebootEscrowKey != null; + } + + pw.print("mPendingRebootEscrowKey is "); + pw.println(keySet ? "set" : "not set"); + + pw.println(); + pw.println("Event log:"); + pw.increaseIndent(); + mEventLog.dump(pw); + pw.println(); + pw.decreaseIndent(); + } } diff --git a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java index ac49fa293fe7..d644b1dc6ca0 100644 --- a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java +++ b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java @@ -20,6 +20,7 @@ import static com.android.internal.widget.LockPatternUtils.EscrowTokenStateChang import android.annotation.NonNull; import android.annotation.Nullable; +import android.app.admin.PasswordMetrics; import android.content.Context; import android.content.pm.UserInfo; import android.hardware.weaver.V1_0.IWeaver; @@ -97,6 +98,7 @@ public class SyntheticPasswordManager { private static final int SECDISCARDABLE_LENGTH = 16 * 1024; private static final String PASSWORD_DATA_NAME = "pwd"; private static final String WEAVER_SLOT_NAME = "weaver"; + private static final String PASSWORD_METRICS_NAME = "metrics"; public static final long DEFAULT_HANDLE = 0L; private static final byte[] DEFAULT_PASSWORD = "default-password".getBytes(); @@ -132,6 +134,7 @@ public class SyntheticPasswordManager { private static final byte[] PERSONALISATION_WEAVER_PASSWORD = "weaver-pwd".getBytes(); private static final byte[] PERSONALISATION_WEAVER_KEY = "weaver-key".getBytes(); private static final byte[] PERSONALISATION_WEAVER_TOKEN = "weaver-token".getBytes(); + private static final byte[] PERSONALIZATION_PASSWORD_METRICS = "password-metrics".getBytes(); private static final byte[] PERSONALISATION_CONTEXT = "android-synthetic-password-personalization-context".getBytes(); @@ -212,6 +215,11 @@ public class SyntheticPasswordManager { return derivePassword(PERSONALIZATION_PASSWORD_HASH); } + /** Derives key used to encrypt password metrics */ + public byte[] deriveMetricsKey() { + return derivePassword(PERSONALIZATION_PASSWORD_METRICS); + } + /** * Assign escrow data to this auth token. This is a prerequisite to call * {@link AuthenticationToken#recreateFromEscrow}. @@ -383,7 +391,7 @@ public class SyntheticPasswordManager { @VisibleForTesting protected IWeaver getWeaverService() throws RemoteException { try { - return IWeaver.getService(); + return IWeaver.getService(/* retry */ true); } catch (NoSuchElementException e) { Slog.i(TAG, "Device does not support weaver"); return null; @@ -778,7 +786,7 @@ public class SyntheticPasswordManager { synchronizeFrpPassword(pwd, 0, userId); } saveState(PASSWORD_DATA_NAME, pwd.toBytes(), handle, userId); - + savePasswordMetrics(credential, authToken, handle, userId); createSyntheticPasswordBlob(handle, SYNTHETIC_PASSWORD_PASSWORD_BASED, authToken, applicationId, sid, userId); return handle; @@ -1061,6 +1069,12 @@ public class SyntheticPasswordManager { // Perform verifyChallenge to refresh auth tokens for GK if user password exists. result.gkResponse = verifyChallenge(gatekeeper, result.authToken, 0L, userId); + + // Upgrade case: store the metrics if the device did not have stored metrics before, should + // only happen once on old synthetic password blobs. + if (result.authToken != null && !hasPasswordMetrics(handle, userId)) { + savePasswordMetrics(credential, result.authToken, handle, userId); + } return result; } @@ -1216,6 +1230,7 @@ public class SyntheticPasswordManager { destroySyntheticPassword(handle, userId); destroyState(SECDISCARDABLE_NAME, handle, userId); destroyState(PASSWORD_DATA_NAME, handle, userId); + destroyState(PASSWORD_METRICS_NAME, handle, userId); } private void destroySyntheticPassword(long handle, int userId) { @@ -1258,6 +1273,34 @@ public class SyntheticPasswordManager { return loadState(SECDISCARDABLE_NAME, handle, userId); } + /** + * Retrieves the saved password metrics associated with a SP handle. Only meaningful to be + * called on the handle of a password-based synthetic password. A valid AuthenticationToken for + * the target user is required in order to be able to decrypt the encrypted password metrics on + * disk. + */ + public @Nullable PasswordMetrics getPasswordMetrics(AuthenticationToken authToken, long handle, + int userId) { + final byte[] encrypted = loadState(PASSWORD_METRICS_NAME, handle, userId); + if (encrypted == null) return null; + final byte[] decrypted = SyntheticPasswordCrypto.decrypt(authToken.deriveMetricsKey(), + /* personalization= */ new byte[0], encrypted); + if (decrypted == null) return null; + return VersionedPasswordMetrics.deserialize(decrypted).getMetrics(); + } + + private void savePasswordMetrics(LockscreenCredential credential, AuthenticationToken authToken, + long handle, int userId) { + final byte[] encrypted = SyntheticPasswordCrypto.encrypt(authToken.deriveMetricsKey(), + /* personalization= */ new byte[0], + new VersionedPasswordMetrics(credential).serialize()); + saveState(PASSWORD_METRICS_NAME, encrypted, handle, userId); + } + + private boolean hasPasswordMetrics(long handle, int userId) { + return hasState(PASSWORD_METRICS_NAME, handle, userId); + } + private boolean hasState(String stateName, long handle, int userId) { return !ArrayUtils.isEmpty(loadState(stateName, handle, userId)); } diff --git a/services/core/java/com/android/server/locksettings/VersionedPasswordMetrics.java b/services/core/java/com/android/server/locksettings/VersionedPasswordMetrics.java new file mode 100644 index 000000000000..b06e3814ac7c --- /dev/null +++ b/services/core/java/com/android/server/locksettings/VersionedPasswordMetrics.java @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.server.locksettings; + +import android.app.admin.PasswordMetrics; + +import com.android.internal.widget.LockscreenCredential; + +import java.nio.ByteBuffer; + +/** + * A versioned and serializable wrapper around {@link PasswordMetrics}, + * for long-term persistence on disk. + */ +public class VersionedPasswordMetrics { + private static final int VERSION_1 = 1; + + private final PasswordMetrics mMetrics; + private final int mVersion; + + private VersionedPasswordMetrics(int version, PasswordMetrics metrics) { + mMetrics = metrics; + mVersion = version; + } + + public VersionedPasswordMetrics(LockscreenCredential credential) { + this(VERSION_1, PasswordMetrics.computeForCredential(credential)); + } + + public int getVersion() { + return mVersion; + } + + public PasswordMetrics getMetrics() { + return mMetrics; + } + + /** Serialize object to a byte array. */ + public byte[] serialize() { + final ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES * 11); + buffer.putInt(mVersion); + buffer.putInt(mMetrics.credType); + buffer.putInt(mMetrics.length); + buffer.putInt(mMetrics.letters); + buffer.putInt(mMetrics.upperCase); + buffer.putInt(mMetrics.lowerCase); + buffer.putInt(mMetrics.numeric); + buffer.putInt(mMetrics.symbols); + buffer.putInt(mMetrics.nonLetter); + buffer.putInt(mMetrics.nonNumeric); + buffer.putInt(mMetrics.seqLength); + return buffer.array(); + } + + /** Deserialize byte array to an object */ + public static VersionedPasswordMetrics deserialize(byte[] data) { + final ByteBuffer buffer = ByteBuffer.allocate(data.length); + buffer.put(data, 0, data.length); + buffer.flip(); + final int version = buffer.getInt(); + PasswordMetrics metrics = new PasswordMetrics(buffer.getInt(), buffer.getInt(), + buffer.getInt(), buffer.getInt(), buffer.getInt(), buffer.getInt(), buffer.getInt(), + buffer.getInt(), buffer.getInt(), buffer.getInt()); + return new VersionedPasswordMetrics(version, metrics); + } +} diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java index 9bbbc3b93fd7..0bba1723931d 100644 --- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java @@ -708,7 +708,7 @@ class MediaRouter2ServiceImpl { } List<RoutingSessionInfo> sessionInfos = new ArrayList<>(); - for (MediaRoute2Provider provider : managerRecord.mUserRecord.mHandler.mMediaProviders) { + for (MediaRoute2Provider provider : managerRecord.mUserRecord.mHandler.mRouteProviders) { sessionInfos.addAll(provider.getSessionInfos()); } return sessionInfos; @@ -1059,7 +1059,7 @@ class MediaRouter2ServiceImpl { //TODO: Make this thread-safe. private final SystemMediaRoute2Provider mSystemProvider; - private final ArrayList<MediaRoute2Provider> mMediaProviders = + private final ArrayList<MediaRoute2Provider> mRouteProviders = new ArrayList<>(); private final List<MediaRoute2ProviderInfo> mLastProviderInfos = new ArrayList<>(); @@ -1074,7 +1074,7 @@ class MediaRouter2ServiceImpl { mServiceRef = new WeakReference<>(service); mUserRecord = userRecord; mSystemProvider = new SystemMediaRoute2Provider(service.mContext, this); - mMediaProviders.add(mSystemProvider); + mRouteProviders.add(mSystemProvider); mWatcher = new MediaRoute2ProviderWatcher(service.mContext, this, this, mUserRecord.mUserId); } @@ -1097,13 +1097,13 @@ class MediaRouter2ServiceImpl { @Override public void onAddProviderService(@NonNull MediaRoute2ProviderServiceProxy proxy) { proxy.setCallback(this); - mMediaProviders.add(proxy); + mRouteProviders.add(proxy); proxy.updateDiscoveryPreference(mUserRecord.mCompositeDiscoveryPreference); } @Override public void onRemoveProviderService(@NonNull MediaRoute2ProviderServiceProxy proxy) { - mMediaProviders.remove(proxy); + mRouteProviders.remove(proxy); } @Override @@ -1114,9 +1114,9 @@ class MediaRouter2ServiceImpl { @Override public void onSessionCreated(@NonNull MediaRoute2Provider provider, - long requestId, @NonNull RoutingSessionInfo sessionInfo) { + long uniqueRequestId, @NonNull RoutingSessionInfo sessionInfo) { sendMessage(PooledLambda.obtainMessage(UserHandler::onSessionCreatedOnHandler, - this, provider, requestId, sessionInfo)); + this, provider, uniqueRequestId, sessionInfo)); } @@ -1135,10 +1135,10 @@ class MediaRouter2ServiceImpl { } @Override - public void onRequestFailed(@NonNull MediaRoute2Provider provider, long requestId, + public void onRequestFailed(@NonNull MediaRoute2Provider provider, long uniqueRequestId, int reason) { sendMessage(PooledLambda.obtainMessage(UserHandler::onRequestFailedOnHandler, - this, provider, requestId, reason)); + this, provider, uniqueRequestId, reason)); } @Nullable @@ -1148,10 +1148,10 @@ class MediaRouter2ServiceImpl { //TODO: notify session info updates private void onProviderStateChangedOnHandler(@NonNull MediaRoute2Provider provider) { - int providerIndex = getProviderInfoIndex(provider.getUniqueId()); + int providerInfoIndex = getLastProviderInfoIndex(provider.getUniqueId()); MediaRoute2ProviderInfo providerInfo = provider.getProviderInfo(); MediaRoute2ProviderInfo prevInfo = - (providerIndex < 0) ? null : mLastProviderInfos.get(providerIndex); + (providerInfoIndex < 0) ? null : mLastProviderInfos.get(providerInfoIndex); if (Objects.equals(prevInfo, providerInfo)) return; @@ -1171,7 +1171,7 @@ class MediaRouter2ServiceImpl { this, getRouters(), new ArrayList<>(removedRoutes))); } } else { - mLastProviderInfos.set(providerIndex, providerInfo); + mLastProviderInfos.set(providerInfoIndex, providerInfo); List<MediaRoute2Info> addedRoutes = new ArrayList<>(); List<MediaRoute2Info> removedRoutes = new ArrayList<>(); List<MediaRoute2Info> changedRoutes = new ArrayList<>(); @@ -1219,7 +1219,7 @@ class MediaRouter2ServiceImpl { } } - private int getProviderInfoIndex(@NonNull String providerId) { + private int getLastProviderInfoIndex(@NonNull String providerId) { for (int i = 0; i < mLastProviderInfos.size(); i++) { MediaRoute2ProviderInfo providerInfo = mLastProviderInfos.get(i); if (TextUtils.equals(providerInfo.getUniqueId(), providerId)) { @@ -1229,7 +1229,7 @@ class MediaRouter2ServiceImpl { return -1; } - private void requestCreateSessionOnHandler(long requestId, + private void requestCreateSessionOnHandler(long uniqueRequestId, @NonNull RouterRecord routerRecord, @Nullable ManagerRecord managerRecord, @NonNull MediaRoute2Info route, @Nullable Bundle sessionHints) { @@ -1237,20 +1237,21 @@ class MediaRouter2ServiceImpl { if (provider == null) { Slog.w(TAG, "Ignoring session creation request since no provider found for" + " given route=" + route); - notifySessionCreationFailedToRouter(routerRecord, toOriginalRequestId(requestId)); + notifySessionCreationFailedToRouter(routerRecord, + toOriginalRequestId(uniqueRequestId)); return; } SessionCreationRequest request = - new SessionCreationRequest(routerRecord, requestId, route, managerRecord); + new SessionCreationRequest(routerRecord, uniqueRequestId, route, managerRecord); mSessionCreationRequests.add(request); - provider.requestCreateSession(requestId, routerRecord.mPackageName, + provider.requestCreateSession(uniqueRequestId, routerRecord.mPackageName, route.getOriginalId(), sessionHints); } // routerRecord can be null if the session is system's. - private void selectRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord, + private void selectRouteOnHandler(long uniqueRequestId, @Nullable RouterRecord routerRecord, @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) { if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route, "selecting")) { @@ -1263,11 +1264,13 @@ class MediaRouter2ServiceImpl { if (provider == null) { return; } - provider.selectRoute(requestId, getOriginalId(uniqueSessionId), route.getOriginalId()); + provider.selectRoute(uniqueRequestId, getOriginalId(uniqueSessionId), + route.getOriginalId()); } // routerRecord can be null if the session is system's. - private void deselectRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord, + private void deselectRouteOnHandler(long uniqueRequestId, + @Nullable RouterRecord routerRecord, @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) { if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route, "deselecting")) { @@ -1281,12 +1284,13 @@ class MediaRouter2ServiceImpl { return; } - provider.deselectRoute(requestId, getOriginalId(uniqueSessionId), + provider.deselectRoute(uniqueRequestId, getOriginalId(uniqueSessionId), route.getOriginalId()); } // routerRecord can be null if the session is system's. - private void transferToRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord, + private void transferToRouteOnHandler(long uniqueRequestId, + @Nullable RouterRecord routerRecord, @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) { if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route, "transferring to")) { @@ -1299,7 +1303,7 @@ class MediaRouter2ServiceImpl { if (provider == null) { return; } - provider.transferToRoute(requestId, getOriginalId(uniqueSessionId), + provider.transferToRoute(uniqueRequestId, getOriginalId(uniqueSessionId), route.getOriginalId()); } @@ -1342,25 +1346,25 @@ class MediaRouter2ServiceImpl { return true; } - private void setRouteVolumeOnHandler(long requestId, @NonNull MediaRoute2Info route, + private void setRouteVolumeOnHandler(long uniqueRequestId, @NonNull MediaRoute2Info route, int volume) { final MediaRoute2Provider provider = findProvider(route.getProviderId()); if (provider == null) { Slog.w(TAG, "setRouteVolume: couldn't find provider for route=" + route); return; } - provider.setRouteVolume(requestId, route.getOriginalId(), volume); + provider.setRouteVolume(uniqueRequestId, route.getOriginalId(), volume); } - private void setSessionVolumeOnHandler(long requestId, @NonNull String uniqueSessionId, - int volume) { + private void setSessionVolumeOnHandler(long uniqueRequestId, + @NonNull String uniqueSessionId, int volume) { final MediaRoute2Provider provider = findProvider(getProviderId(uniqueSessionId)); if (provider == null) { Slog.w(TAG, "setSessionVolume: couldn't find provider for session " + "id=" + uniqueSessionId); return; } - provider.setSessionVolume(requestId, getOriginalId(uniqueSessionId), volume); + provider.setSessionVolume(uniqueRequestId, getOriginalId(uniqueSessionId), volume); } private void releaseSessionOnHandler(long uniqueRequestId, @@ -1398,10 +1402,10 @@ class MediaRouter2ServiceImpl { } private void onSessionCreatedOnHandler(@NonNull MediaRoute2Provider provider, - long requestId, @NonNull RoutingSessionInfo sessionInfo) { + long uniqueRequestId, @NonNull RoutingSessionInfo sessionInfo) { notifySessionCreatedToManagers(getManagers(), sessionInfo); - if (requestId == REQUEST_ID_NONE) { + if (uniqueRequestId == REQUEST_ID_NONE) { // The session is created without any matching request. return; } @@ -1409,7 +1413,7 @@ class MediaRouter2ServiceImpl { SessionCreationRequest matchingRequest = null; for (SessionCreationRequest request : mSessionCreationRequests) { - if (request.mRequestId == requestId + if (request.mUniqueRequestId == uniqueRequestId && TextUtils.equals( request.mRoute.getProviderId(), provider.getUniqueId())) { matchingRequest = request; @@ -1419,7 +1423,7 @@ class MediaRouter2ServiceImpl { if (matchingRequest == null) { Slog.w(TAG, "Ignoring session creation result for unknown request. " - + "requestId=" + requestId + ", sessionInfo=" + sessionInfo); + + "uniqueRequestId=" + uniqueRequestId + ", sessionInfo=" + sessionInfo); return; } @@ -1428,7 +1432,7 @@ class MediaRouter2ServiceImpl { if (sessionInfo == null) { // Failed notifySessionCreationFailedToRouter(matchingRequest.mRouterRecord, - toOriginalRequestId(requestId)); + toOriginalRequestId(uniqueRequestId)); return; } @@ -1438,15 +1442,15 @@ class MediaRouter2ServiceImpl { if (!sessionInfo.getSelectedRoutes().contains(originalRouteId)) { Slog.w(TAG, "Created session doesn't match the original request." + " originalRouteId=" + originalRouteId - + ", requestId=" + requestId + ", sessionInfo=" + sessionInfo); + + ", uniqueRequestId=" + uniqueRequestId + ", sessionInfo=" + sessionInfo); notifySessionCreationFailedToRouter(matchingRequest.mRouterRecord, - toOriginalRequestId(requestId)); + toOriginalRequestId(uniqueRequestId)); return; } // Succeeded notifySessionCreatedToRouter(matchingRequest.mRouterRecord, - toOriginalRequestId(requestId), sessionInfo); + toOriginalRequestId(uniqueRequestId), sessionInfo); mSessionToRouterMap.put(sessionInfo.getId(), routerRecord); } @@ -1487,16 +1491,16 @@ class MediaRouter2ServiceImpl { } private void onRequestFailedOnHandler(@NonNull MediaRoute2Provider provider, - long requestId, int reason) { - if (handleSessionCreationRequestFailed(provider, requestId, reason)) { + long uniqueRequestId, int reason) { + if (handleSessionCreationRequestFailed(provider, uniqueRequestId, reason)) { return; } - final int requesterId = toRequesterId(requestId); + final int requesterId = toRequesterId(uniqueRequestId); for (ManagerRecord manager : getManagerRecords()) { if (manager.mManagerId == requesterId) { notifyRequestFailedToManager( - manager.mManager, toOriginalRequestId(requestId), reason); + manager.mManager, toOriginalRequestId(uniqueRequestId), reason); return; } } @@ -1505,16 +1509,17 @@ class MediaRouter2ServiceImpl { // TODO: Notify router too when the related callback is introduced. } - // TODO: Find a way to prevent providers from notifying error on random requestId. + // TODO: Find a way to prevent providers from notifying error on random uniqueRequestId. // Solutions can be: // 1) Record the other type of requests too (not only session creation request) - // 2) Throw exception on providers when they try to notify error on random requestId. + // 2) Throw exception on providers when they try to notify error on + // random uniqueRequestId. private boolean handleSessionCreationRequestFailed(@NonNull MediaRoute2Provider provider, - long requestId, int reason) { + long uniqueRequestId, int reason) { // Check whether the failure is about creating a session SessionCreationRequest matchingRequest = null; for (SessionCreationRequest request : mSessionCreationRequests) { - if (request.mRequestId == requestId && TextUtils.equals( + if (request.mUniqueRequestId == uniqueRequestId && TextUtils.equals( request.mRoute.getProviderId(), provider.getUniqueId())) { matchingRequest = request; break; @@ -1532,10 +1537,10 @@ class MediaRouter2ServiceImpl { // The call should be made by either MediaRouter2 or MediaRouter2Manager. if (matchingRequest.mRequestedManagerRecord == null) { notifySessionCreationFailedToRouter( - matchingRequest.mRouterRecord, toOriginalRequestId(requestId)); + matchingRequest.mRouterRecord, toOriginalRequestId(uniqueRequestId)); } else { notifyRequestFailedToManager(matchingRequest.mRequestedManagerRecord.mManager, - toOriginalRequestId(requestId), reason); + toOriginalRequestId(uniqueRequestId), reason); } return true; } @@ -1795,13 +1800,13 @@ class MediaRouter2ServiceImpl { new RouteDiscoveryPreference.Builder(discoveryPreferences) .build(); } - for (MediaRoute2Provider provider : mMediaProviders) { + for (MediaRoute2Provider provider : mRouteProviders) { provider.updateDiscoveryPreference(mUserRecord.mCompositeDiscoveryPreference); } } private MediaRoute2Provider findProvider(@Nullable String providerId) { - for (MediaRoute2Provider provider : mMediaProviders) { + for (MediaRoute2Provider provider : mRouteProviders) { if (TextUtils.equals(provider.getUniqueId(), providerId)) { return provider; } @@ -1811,16 +1816,16 @@ class MediaRouter2ServiceImpl { final class SessionCreationRequest { public final RouterRecord mRouterRecord; - public final long mRequestId; + public final long mUniqueRequestId; public final MediaRoute2Info mRoute; public final ManagerRecord mRequestedManagerRecord; // requestedManagerRecord is not null only when the request is made by manager. - SessionCreationRequest(@NonNull RouterRecord routerRecord, long requestId, + SessionCreationRequest(@NonNull RouterRecord routerRecord, long uniqueRequestId, @NonNull MediaRoute2Info route, @Nullable ManagerRecord requestedManagerRecord) { mRouterRecord = routerRecord; - mRequestId = requestId; + mUniqueRequestId = uniqueRequestId; mRoute = route; mRequestedManagerRecord = requestedManagerRecord; } diff --git a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java index c7d14e0afe7b..5b16d686e04c 100644 --- a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java +++ b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java @@ -54,6 +54,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); static final String DEFAULT_ROUTE_ID = "DEFAULT_ROUTE"; + static final String DEVICE_ROUTE_ID = "DEVICE_ROUTE"; static final String SYSTEM_SESSION_ID = "SYSTEM_SESSION"; private final AudioManager mAudioManager; @@ -67,14 +68,17 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { SystemMediaRoute2Provider.class.getName()); private String mSelectedRouteId; + // For apps without MODIFYING_AUDIO_ROUTING permission. + // This should be the currently selected route. MediaRoute2Info mDefaultRoute; + MediaRoute2Info mDeviceRoute; final AudioRoutesInfo mCurAudioRoutesInfo = new AudioRoutesInfo(); final IAudioRoutesObserver.Stub mAudioRoutesObserver = new IAudioRoutesObserver.Stub() { @Override public void dispatchAudioRoutesChanged(final AudioRoutesInfo newRoutes) { mHandler.post(() -> { - updateDefaultRoute(newRoutes); + updateDeviceRoute(newRoutes); notifyProviderState(); }); } @@ -97,8 +101,9 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { newAudioRoutes = mAudioService.startWatchingRoutes(mAudioRoutesObserver); } catch (RemoteException e) { } - updateDefaultRoute(newAudioRoutes); + updateDeviceRoute(newAudioRoutes); + // .getInstance returns null if there is no bt adapter available mBtRouteProvider = BluetoothRouteProvider.getInstance(context, (routes) -> { publishProviderState(); @@ -109,14 +114,15 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { } }); updateSessionInfosIfNeeded(); - mContext.registerReceiver(new VolumeChangeReceiver(), new IntentFilter(AudioManager.VOLUME_CHANGED_ACTION)); - mHandler.post(() -> { - mBtRouteProvider.start(); - notifyProviderState(); - }); + if (mBtRouteProvider != null) { + mHandler.post(() -> { + mBtRouteProvider.start(); + notifyProviderState(); + }); + } } @Override @@ -150,10 +156,12 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { @Override public void transferToRoute(long requestId, String sessionId, String routeId) { - if (TextUtils.equals(routeId, mDefaultRoute.getId())) { - mBtRouteProvider.transferTo(null); - } else { - mBtRouteProvider.transferTo(routeId); + if (mBtRouteProvider != null) { + if (TextUtils.equals(routeId, mDeviceRoute.getId())) { + mBtRouteProvider.transferTo(null); + } else { + mBtRouteProvider.transferTo(routeId); + } } } @@ -170,7 +178,11 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { // Do nothing since we don't support grouping volume yet. } - private void updateDefaultRoute(AudioRoutesInfo newRoutes) { + public MediaRoute2Info getDefaultRoute() { + return mDefaultRoute; + } + + private void updateDeviceRoute(AudioRoutesInfo newRoutes) { int name = R.string.default_audio_route_name; if (newRoutes != null) { mCurAudioRoutesInfo.mainType = newRoutes.mainType; @@ -185,8 +197,8 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { name = com.android.internal.R.string.default_audio_route_name_usb; } } - mDefaultRoute = new MediaRoute2Info.Builder( - DEFAULT_ROUTE_ID, mContext.getResources().getText(name).toString()) + mDeviceRoute = new MediaRoute2Info.Builder( + DEVICE_ROUTE_ID, mContext.getResources().getText(name).toString()) .setVolumeHandling(mAudioManager.isVolumeFixed() ? MediaRoute2Info.PLAYBACK_VOLUME_FIXED : MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE) @@ -203,7 +215,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { private void updateProviderState() { MediaRoute2ProviderInfo.Builder builder = new MediaRoute2ProviderInfo.Builder(); - builder.addRoute(mDefaultRoute); + builder.addRoute(mDeviceRoute); if (mBtRouteProvider != null) { for (MediaRoute2Info route : mBtRouteProvider.getAllBluetoothRoutes()) { builder.addRoute(route); @@ -228,11 +240,12 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { MediaRoute2Info selectedRoute = mBtRouteProvider.getSelectedRoute(); if (selectedRoute == null) { - selectedRoute = mDefaultRoute; + selectedRoute = mDeviceRoute; } else { - builder.addTransferableRoute(mDefaultRoute.getId()); + builder.addTransferableRoute(mDeviceRoute.getId()); } mSelectedRouteId = selectedRoute.getId(); + mDefaultRoute = new MediaRoute2Info.Builder(DEFAULT_ROUTE_ID, selectedRoute).build(); builder.addSelectedRoute(mSelectedRouteId); for (MediaRoute2Info route : mBtRouteProvider.getTransferableRoutes()) { @@ -282,11 +295,11 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { AudioManager.EXTRA_PREV_VOLUME_STREAM_VALUE, 0); if (newVolume != oldVolume) { - if (TextUtils.equals(mDefaultRoute.getId(), mSelectedRouteId)) { - mDefaultRoute = new MediaRoute2Info.Builder(mDefaultRoute) + if (TextUtils.equals(mDeviceRoute.getId(), mSelectedRouteId)) { + mDeviceRoute = new MediaRoute2Info.Builder(mDeviceRoute) .setVolume(newVolume) .build(); - } else { + } else if (mBtRouteProvider != null) { mBtRouteProvider.setSelectedRouteVolume(newVolume); } publishProviderState(); diff --git a/services/core/java/com/android/server/notification/BubbleExtractor.java b/services/core/java/com/android/server/notification/BubbleExtractor.java index f2eb176aa676..2fa80cd8e4e4 100644 --- a/services/core/java/com/android/server/notification/BubbleExtractor.java +++ b/services/core/java/com/android/server/notification/BubbleExtractor.java @@ -76,7 +76,8 @@ public class BubbleExtractor implements NotificationSignalExtractor { record.setAllowBubble(appCanShowBubble); } } - final boolean applyFlag = mBubbleChecker.isNotificationAppropriateToBubble(record); + final boolean applyFlag = mBubbleChecker.isNotificationAppropriateToBubble(record) + && !record.isFlagBubbleRemoved(); if (applyFlag) { record.getNotification().flags |= FLAG_BUBBLE; } else { diff --git a/services/core/java/com/android/server/notification/NotificationChannelLogger.java b/services/core/java/com/android/server/notification/NotificationChannelLogger.java index 83f4ebb41827..a7b18778f868 100644 --- a/services/core/java/com/android/server/notification/NotificationChannelLogger.java +++ b/services/core/java/com/android/server/notification/NotificationChannelLogger.java @@ -184,14 +184,14 @@ public interface NotificationChannelLogger { * @return Small hash of the channel ID, if present, or 0 otherwise. */ static int getIdHash(@NonNull NotificationChannel channel) { - return NotificationRecordLogger.smallHash(channel.getId()); + return SmallHash.hash(channel.getId()); } /** * @return Small hash of the channel ID, if present, or 0 otherwise. */ static int getIdHash(@NonNull NotificationChannelGroup group) { - return NotificationRecordLogger.smallHash(group.getId()); + return SmallHash.hash(group.getId()); } /** diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 7f805bef520d..4aeddc89f6ed 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -107,6 +107,7 @@ import android.annotation.CallbackExecutor; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; +import android.annotation.UserIdInt; import android.annotation.WorkerThread; import android.app.ActivityManager; import android.app.ActivityManagerInternal; @@ -1213,10 +1214,12 @@ public class NotificationManagerService extends SystemService { // apps querying noMan will know that their notification is not showing // as a bubble. r.getNotification().flags &= ~FLAG_BUBBLE; + r.setFlagBubbleRemoved(true); } else { // Enqueue will trigger resort & if the flag is allowed to be true it'll // be applied there. r.getNotification().flags |= FLAG_ONLY_ALERT_ONCE; + r.setFlagBubbleRemoved(false); mHandler.post(new EnqueueNotificationRunnable(r.getUser().getIdentifier(), r, isAppForeground)); } @@ -1579,7 +1582,9 @@ public class NotificationManagerService extends SystemService { } } else if (action.equals(Intent.ACTION_USER_PRESENT)) { // turn off LED when user passes through lock screen - mNotificationLight.turnOff(); + if (mNotificationLight != null) { + mNotificationLight.turnOff(); + } } else if (action.equals(Intent.ACTION_USER_SWITCHED)) { final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); mUserProfiles.updateCache(context); @@ -1865,7 +1870,8 @@ public class NotificationManagerService extends SystemService { ActivityTaskManagerInternal atm, UsageStatsManagerInternal appUsageStats, DevicePolicyManagerInternal dpm, IUriGrantsManager ugm, UriGrantsManagerInternal ugmInternal, AppOpsManager appOps, UserManager userManager, - NotificationHistoryManager historyManager, StatsManager statsManager) { + NotificationHistoryManager historyManager, StatsManager statsManager, + TelephonyManager telephonyManager) { mHandler = handler; Resources resources = getContext().getResources(); mMaxPackageEnqueueRate = Settings.Global.getFloat(getContext().getContentResolver(), @@ -2008,7 +2014,15 @@ public class NotificationManagerService extends SystemService { mInterruptionFilter = mZenModeHelper.getZenModeListenerInterruptionFilter(); mUserProfiles.updateCache(getContext()); - listenForCallState(); + + telephonyManager.listen(new PhoneStateListener() { + @Override + public void onCallStateChanged(int state, String incomingNumber) { + if (mCallState == state) return; + if (DBG) Slog.d(TAG, "Call state changed: " + callStateToString(state)); + mCallState = state; + } + }, PhoneStateListener.LISTEN_CALL_STATE); mSettingsObserver = new SettingsObserver(mHandler); @@ -2078,7 +2092,8 @@ public class NotificationManagerService extends SystemService { getContext().getSystemService(UserManager.class), new NotificationHistoryManager(getContext(), handler), mStatsManager = (StatsManager) getContext().getSystemService( - Context.STATS_MANAGER)); + Context.STATS_MANAGER), + getContext().getSystemService(TelephonyManager.class)); // register for various Intents IntentFilter filter = new IntentFilter(); @@ -2840,20 +2855,18 @@ public class NotificationManagerService extends SystemService { record = mToastQueue.get(index); record.update(duration); } else { - // Limit the number of toasts that any given package except the android - // package can enqueue. Prevents DOS attacks and deals with leaks. - if (!isSystemToast) { - int count = 0; - final int N = mToastQueue.size(); - for (int i = 0; i < N; i++) { - final ToastRecord r = mToastQueue.get(i); - if (r.pkg.equals(pkg)) { - count++; - if (count >= MAX_PACKAGE_NOTIFICATIONS) { - Slog.e(TAG, "Package has already posted " + count - + " toasts. Not showing more. Package=" + pkg); - return; - } + // Limit the number of toasts that any given package can enqueue. + // Prevents DOS attacks and deals with leaks. + int count = 0; + final int N = mToastQueue.size(); + for (int i = 0; i < N; i++) { + final ToastRecord r = mToastQueue.get(i); + if (r.pkg.equals(pkg)) { + count++; + if (count >= MAX_PACKAGE_NOTIFICATIONS) { + Slog.e(TAG, "Package has already posted " + count + + " toasts. Not showing more. Package=" + pkg); + return; } } } @@ -4193,7 +4206,7 @@ public class NotificationManagerService extends SystemService { @Override public int getInterruptionFilterFromListener(INotificationListener token) throws RemoteException { - synchronized (mNotificationLight) { + synchronized (mNotificationLock) { return mInterruptionFilter; } } @@ -5636,6 +5649,7 @@ public class NotificationManagerService extends SystemService { final NotificationRecord r = new NotificationRecord(getContext(), n, channel); r.setIsAppImportanceLocked(mPreferencesHelper.getIsAppImportanceLocked(pkg, callingUid)); r.setPostSilently(postSilently); + r.setFlagBubbleRemoved(false); if ((notification.flags & Notification.FLAG_FOREGROUND_SERVICE) != 0) { final boolean fgServiceShown = channel.isFgServiceShown(); @@ -6773,7 +6787,7 @@ public class NotificationManagerService extends SystemService { if (canShowLightsLocked(record, aboveThreshold)) { mLights.add(key); updateLightsLocked(); - if (mUseAttentionLight) { + if (mUseAttentionLight && mAttentionLight != null) { mAttentionLight.pulse(); } blink = true; @@ -7974,6 +7988,10 @@ public class NotificationManagerService extends SystemService { @GuardedBy("mNotificationLock") void updateLightsLocked() { + if (mNotificationLight == null) { + return; + } + // handle notification lights NotificationRecord ledNotification = null; while (ledNotification == null && !mLights.isEmpty()) { @@ -8350,17 +8368,6 @@ public class NotificationManagerService extends SystemService { } } - private void listenForCallState() { - getContext().getSystemService(TelephonyManager.class).listen(new PhoneStateListener() { - @Override - public void onCallStateChanged(int state, String incomingNumber) { - if (mCallState == state) return; - if (DBG) Slog.d(TAG, "Call state changed: " + callStateToString(state)); - mCallState = state; - } - }, PhoneStateListener.LISTEN_CALL_STATE); - } - /** * Generates a NotificationRankingUpdate from 'sbns', considering only * notifications visible to the given listener. diff --git a/services/core/java/com/android/server/notification/NotificationRecord.java b/services/core/java/com/android/server/notification/NotificationRecord.java index 3f24b38161c3..54a0f9f46892 100644 --- a/services/core/java/com/android/server/notification/NotificationRecord.java +++ b/services/core/java/com/android/server/notification/NotificationRecord.java @@ -187,6 +187,7 @@ public final class NotificationRecord { private boolean mSuggestionsGeneratedByAssistant; private boolean mEditChoicesBeforeSending; private boolean mHasSeenSmartReplies; + private boolean mFlagBubbleRemoved; private boolean mPostSilently; /** * Whether this notification (and its channels) should be considered user locked. Used in @@ -1201,6 +1202,19 @@ public final class NotificationRecord { return stats.hasBeenVisiblyExpanded(); } + /** + * When the bubble state on a notif changes due to user action (e.g. dismiss a bubble) then + * this value is set until an update or bubble change event due to user action (e.g. create + * bubble from sysui) + **/ + public boolean isFlagBubbleRemoved() { + return mFlagBubbleRemoved; + } + + public void setFlagBubbleRemoved(boolean flagBubbleRemoved) { + mFlagBubbleRemoved = flagBubbleRemoved; + } + public void setSystemGeneratedSmartActions( ArrayList<Notification.Action> systemGeneratedSmartActions) { mSystemGeneratedSmartActions = systemGeneratedSmartActions; diff --git a/services/core/java/com/android/server/notification/NotificationRecordLogger.java b/services/core/java/com/android/server/notification/NotificationRecordLogger.java index 6c833f966d36..eba57304124a 100644 --- a/services/core/java/com/android/server/notification/NotificationRecordLogger.java +++ b/services/core/java/com/android/server/notification/NotificationRecordLogger.java @@ -359,43 +359,24 @@ public interface NotificationRecordLogger { * @return Small hash of the notification ID, and tag (if present). */ int getNotificationIdHash() { - return smallHash(Objects.hashCode(r.getSbn().getTag()) ^ r.getSbn().getId()); + return SmallHash.hash(Objects.hashCode(r.getSbn().getTag()) ^ r.getSbn().getId()); } /** * @return Small hash of the channel ID, if present, or 0 otherwise. */ int getChannelIdHash() { - return smallHash(r.getSbn().getNotification().getChannelId()); + return SmallHash.hash(r.getSbn().getNotification().getChannelId()); } /** * @return Small hash of the group ID, respecting group override if present. 0 otherwise. */ int getGroupIdHash() { - return smallHash(r.getSbn().getGroup()); + return SmallHash.hash(r.getSbn().getGroup()); } } - // "Small" hashes will be in the range [0, MAX_HASH). - int MAX_HASH = (1 << 13); - - /** - * Maps in to the range [0, MAX_HASH), keeping similar values distinct. - * @param in An arbitrary integer. - * @return in mod MAX_HASH, signs chosen to stay in the range [0, MAX_HASH). - */ - static int smallHash(int in) { - return Math.floorMod(in, MAX_HASH); - } - - /** - * @return Small hash of the string, if non-null, or 0 otherwise. - */ - static int smallHash(@Nullable String in) { - return smallHash(Objects.hashCode(in)); - } - } diff --git a/services/core/java/com/android/server/notification/SmallHash.java b/services/core/java/com/android/server/notification/SmallHash.java new file mode 100644 index 000000000000..4483a5ba8b76 --- /dev/null +++ b/services/core/java/com/android/server/notification/SmallHash.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.notification; + +import java.util.Objects; + +/** + * A simple hash function for use in privacy-sensitive logging. Few bits = lots of collisions. + * See {@link NotificationRecordLogger}. + */ +public class SmallHash { + // Hashes will be in the range [0, MAX_HASH). + public static final int MAX_HASH = (1 << 13); + + /** + * @return Small hash of the string, if non-null, or 0 otherwise. + */ + public static int hash(String in) { + return hash(Objects.hashCode(in)); + } + + /** + * Maps in to the range [0, MAX_HASH), keeping similar values distinct. + * @param in An arbitrary integer. + * @return in mod MAX_HASH, signs chosen to stay in the range [0, MAX_HASH). + */ + public static int hash(int in) { + return Math.floorMod(in, MAX_HASH); + } +} diff --git a/services/core/java/com/android/server/oemlock/VendorLock.java b/services/core/java/com/android/server/oemlock/VendorLock.java index 37540d039b9e..9c876da320a9 100644 --- a/services/core/java/com/android/server/oemlock/VendorLock.java +++ b/services/core/java/com/android/server/oemlock/VendorLock.java @@ -38,7 +38,7 @@ class VendorLock extends OemLock { static IOemLock getOemLockHalService() { try { - return IOemLock.getService(); + return IOemLock.getService(/* retry */ true); } catch (NoSuchElementException e) { Slog.i(TAG, "OemLock HAL not present on device"); return null; diff --git a/services/core/java/com/android/server/om/IdmapDaemon.java b/services/core/java/com/android/server/om/IdmapDaemon.java index 20a4c75a1ce6..e8e383404bd6 100644 --- a/services/core/java/com/android/server/om/IdmapDaemon.java +++ b/services/core/java/com/android/server/om/IdmapDaemon.java @@ -116,10 +116,11 @@ class IdmapDaemon { } } - boolean verifyIdmap(String overlayPath, int policies, boolean enforce, int userId) + boolean verifyIdmap(String targetPath, String overlayPath, int policies, boolean enforce, + int userId) throws Exception { try (Connection connection = connect()) { - return mService.verifyIdmap(overlayPath, policies, enforce, userId); + return mService.verifyIdmap(targetPath, overlayPath, policies, enforce, userId); } } diff --git a/services/core/java/com/android/server/om/IdmapManager.java b/services/core/java/com/android/server/om/IdmapManager.java index 7c9be2dfacd6..43fc7ed0e39d 100644 --- a/services/core/java/com/android/server/om/IdmapManager.java +++ b/services/core/java/com/android/server/om/IdmapManager.java @@ -75,7 +75,7 @@ class IdmapManager { try { int policies = calculateFulfilledPolicies(targetPackage, overlayPackage, userId); boolean enforce = enforceOverlayable(overlayPackage); - if (mIdmapDaemon.verifyIdmap(overlayPath, policies, enforce, userId)) { + if (mIdmapDaemon.verifyIdmap(targetPath, overlayPath, policies, enforce, userId)) { return true; } return mIdmapDaemon.createIdmap(targetPath, overlayPath, policies, diff --git a/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java b/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java index 8349632a3743..fce488da87d5 100644 --- a/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java +++ b/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java @@ -16,6 +16,7 @@ package com.android.server.os; +import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.app.ActivityManager; import android.app.AppOpsManager; @@ -34,7 +35,6 @@ import android.util.ArraySet; import android.util.Slog; import com.android.internal.annotations.GuardedBy; -import com.android.internal.util.Preconditions; import com.android.server.SystemConfig; import java.io.FileDescriptor; @@ -95,11 +95,22 @@ class BugreportManagerServiceImpl extends IDumpstate.Stub { @Override @RequiresPermission(android.Manifest.permission.DUMP) public void cancelBugreport() { - mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, "startBugreport"); - // This tells init to cancel bugreportd service. Note that this is achieved through setting - // a system property which is not thread-safe. So the lock here offers thread-safety only - // among callers of the API. + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, + "cancelBugreport"); synchronized (mLock) { + IDumpstate ds = getDumpstateBinderServiceLocked(); + if (ds == null) { + Slog.w(TAG, "cancelBugreport: Could not find native dumpstate service"); + return; + } + try { + ds.cancelBugreport(); + } catch (RemoteException e) { + Slog.e(TAG, "RemoteException in cancelBugreport", e); + } + // This tells init to cancel bugreportd service. Note that this is achieved through + // setting a system property which is not thread-safe. So the lock here offers + // thread-safety only among callers of the API. SystemProperties.set("ctl.stop", BUGREPORT_SERVICE); } } @@ -177,8 +188,14 @@ class BugreportManagerServiceImpl extends IDumpstate.Stub { @GuardedBy("mLock") private boolean isDumpstateBinderServiceRunningLocked() { - IDumpstate ds = IDumpstate.Stub.asInterface(ServiceManager.getService("dumpstate")); - return ds != null; + return getDumpstateBinderServiceLocked() != null; + } + + @GuardedBy("mLock") + @Nullable + private IDumpstate getDumpstateBinderServiceLocked() { + // Note that the binder service on the native side is "dumpstate". + return IDumpstate.Stub.asInterface(ServiceManager.getService("dumpstate")); } /* @@ -202,8 +219,7 @@ class BugreportManagerServiceImpl extends IDumpstate.Stub { int totalTimeWaitedMillis = 0; int seedWaitTimeMillis = 500; while (!timedOut) { - // Note that the binder service on the native side is "dumpstate". - ds = IDumpstate.Stub.asInterface(ServiceManager.getService("dumpstate")); + ds = getDumpstateBinderServiceLocked(); if (ds != null) { Slog.i(TAG, "Got bugreport service handle."); break; diff --git a/services/core/java/com/android/server/pm/ApexManager.java b/services/core/java/com/android/server/pm/ApexManager.java index c37ea8ba68bd..b9d656181b55 100644 --- a/services/core/java/com/android/server/pm/ApexManager.java +++ b/services/core/java/com/android/server/pm/ApexManager.java @@ -16,25 +16,25 @@ package com.android.server.pm; +import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; + import android.annotation.IntDef; +import android.annotation.NonNull; import android.annotation.Nullable; import android.apex.ApexInfo; import android.apex.ApexInfoList; import android.apex.ApexSessionInfo; import android.apex.ApexSessionParams; import android.apex.IApexService; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageInstaller; import android.content.pm.PackageManager; import android.content.pm.PackageParser; +import android.content.pm.parsing.PackageInfoWithoutStateUtils; +import android.os.Binder; import android.os.Environment; import android.os.RemoteException; -import android.os.ServiceManager; import android.os.Trace; import android.sysprop.ApexProperties; import android.util.ArrayMap; @@ -44,8 +44,9 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.os.BackgroundThread; import com.android.internal.util.IndentingPrintWriter; +import com.android.internal.util.Preconditions; +import com.android.server.pm.parsing.PackageParser2; import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.utils.TimingsTraceAndSlog; @@ -60,9 +61,9 @@ import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Map; +import java.util.Objects; import java.util.Set; -import java.util.stream.Collectors; +import java.util.concurrent.ExecutorService; /** * ApexManager class handles communications with the apex service to perform operation and queries, @@ -72,7 +73,7 @@ public abstract class ApexManager { private static final String TAG = "ApexManager"; - static final int MATCH_ACTIVE_PACKAGE = 1 << 0; + public static final int MATCH_ACTIVE_PACKAGE = 1 << 0; static final int MATCH_FACTORY_PACKAGE = 1 << 1; private static final Singleton<ApexManager> sApexManagerSingleton = @@ -80,13 +81,7 @@ public abstract class ApexManager { @Override protected ApexManager create() { if (ApexProperties.updatable().orElse(false)) { - try { - return new ApexManagerImpl(IApexService.Stub.asInterface( - ServiceManager.getServiceOrThrow("apexservice"))); - } catch (ServiceManager.ServiceNotFoundException e) { - throw new IllegalStateException( - "Required service apexservice not available"); - } + return new ApexManagerImpl(); } else { return new ApexManagerFlattenedApex(); } @@ -139,7 +134,14 @@ public abstract class ApexManager { */ public abstract List<ActiveApexInfo> getActiveApexInfos(); - abstract void systemReady(Context context); + /** + * Called by package manager service to scan apex package files when device boots up. + * + * @param packageParser The package parser which supports caches. + * @param executorService An executor to support parallel package parsing. + */ + abstract void scanApexPackagesTraced(@NonNull PackageParser2 packageParser, + @NonNull ExecutorService executorService); /** * Retrieves information about an APEX package. @@ -154,7 +156,7 @@ public abstract class ApexManager { * is not found. */ @Nullable - abstract PackageInfo getPackageInfo(String packageName, @PackageInfoFlags int flags); + public abstract PackageInfo getPackageInfo(String packageName, @PackageInfoFlags int flags); /** * Retrieves information about all active APEX packages. @@ -189,6 +191,27 @@ public abstract class ApexManager { abstract boolean isApexPackage(String packageName); /** + * Whether the APEX package is pre-installed or not. + * + * @param packageInfo the package to check + * @return {@code true} if this package is pre-installed, {@code false} otherwise. + */ + public static boolean isFactory(@NonNull PackageInfo packageInfo) { + return (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0; + } + + /** + * Returns the active apex package's name that contains the (apk) package. + * + * @param containedPackage The (apk) package that might be in a apex + * @return the apex package's name of {@code null} if the {@code containedPackage} is not inside + * any apex. + */ + @Nullable + public abstract String getActiveApexPackageNameContainingPackage( + @NonNull AndroidPackage containedPackage); + + /** * Retrieves information about an apexd staged session i.e. the internal state used by apexd to * track the different states of a session. * @@ -329,8 +352,7 @@ public abstract class ApexManager { * APEX packages. */ @VisibleForTesting - static class ApexManagerImpl extends ApexManager { - private final IApexService mApexService; + protected static class ApexManagerImpl extends ApexManager { private final Object mLock = new Object(); @GuardedBy("mLock") @@ -342,7 +364,7 @@ public abstract class ApexManager { * difference between {@code packageName} and {@code apexModuleName}. */ @GuardedBy("mLock") - private Map<String, List<String>> mApksInApex = new ArrayMap<>(); + private ArrayMap<String, List<String>> mApksInApex = new ArrayMap<>(); @GuardedBy("mLock") private List<PackageInfo> mAllPackagesCache; @@ -357,11 +379,7 @@ public abstract class ApexManager { * the apk container to {@code apexModuleName} of the apex-payload inside. */ @GuardedBy("mLock") - private Map<String, String> mPackageNameToApexModuleName; - - ApexManagerImpl(IApexService apexService) { - mApexService = apexService; - } + private ArrayMap<String, String> mPackageNameToApexModuleName; /** * Whether an APEX package is active or not. @@ -374,13 +392,16 @@ public abstract class ApexManager { } /** - * Whether the APEX package is pre-installed or not. - * - * @param packageInfo the package to check - * @return {@code true} if this package is pre-installed, {@code false} otherwise. + * Retrieve the service from ServiceManager. If the service is not running, it will be + * started, and this function will block until it is ready. */ - private static boolean isFactory(PackageInfo packageInfo) { - return (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0; + @VisibleForTesting + protected IApexService waitForApexService() { + try { + return IApexService.Stub.asInterface(Binder.waitForService("apexservice")); + } catch (RemoteException e) { + throw new IllegalStateException("Required service apexservice not available"); + } } @Override @@ -392,7 +413,7 @@ public abstract class ApexManager { t.traceBegin("getActiveApexInfos_noCache"); try { mActiveApexInfosCache = new ArraySet<>(); - final ApexInfo[] activePackages = mApexService.getActivePackages(); + final ApexInfo[] activePackages = waitForApexService().getActivePackages(); for (int i = 0; i < activePackages.length; i++) { ApexInfo apexInfo = activePackages[i]; mActiveApexInfosCache.add(new ActiveApexInfo(apexInfo)); @@ -411,104 +432,94 @@ public abstract class ApexManager { } @Override - void systemReady(Context context) { - context.registerReceiver(new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - // Post populateAllPackagesCacheIfNeeded to a background thread, since it's - // expensive to run it in broadcast handler thread. - BackgroundThread.getHandler().post(() -> populateAllPackagesCacheIfNeeded()); - context.unregisterReceiver(this); - } - }, new IntentFilter(Intent.ACTION_BOOT_COMPLETED)); - } - - private void populatePackageNameToApexModuleNameIfNeeded() { - synchronized (mLock) { - if (mPackageNameToApexModuleName != null) { - return; - } - try { - mPackageNameToApexModuleName = new ArrayMap<>(); - final ApexInfo[] allPkgs = mApexService.getAllPackages(); - for (int i = 0; i < allPkgs.length; i++) { - ApexInfo ai = allPkgs[i]; - PackageParser.PackageLite pkgLite; - try { - File apexFile = new File(ai.modulePath); - pkgLite = PackageParser.parsePackageLite(apexFile, 0); - } catch (PackageParser.PackageParserException pe) { - throw new IllegalStateException("Unable to parse: " - + ai.modulePath, pe); - } - mPackageNameToApexModuleName.put(pkgLite.packageName, ai.moduleName); - } - } catch (RemoteException re) { - Slog.e(TAG, "Unable to retrieve packages from apexservice: ", re); - throw new RuntimeException(re); + void scanApexPackagesTraced(@NonNull PackageParser2 packageParser, + @NonNull ExecutorService executorService) { + Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "scanApexPackagesTraced"); + try { + synchronized (mLock) { + scanApexPackagesInternalLocked(packageParser, executorService); } + } finally { + Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } } - private void populateAllPackagesCacheIfNeeded() { - synchronized (mLock) { - if (mAllPackagesCache != null) { - return; - } - try { - mAllPackagesCache = new ArrayList<>(); - HashSet<String> activePackagesSet = new HashSet<>(); - HashSet<String> factoryPackagesSet = new HashSet<>(); - final ApexInfo[] allPkgs = mApexService.getAllPackages(); - for (ApexInfo ai : allPkgs) { - // If the device is using flattened APEX, don't report any APEX - // packages since they won't be managed or updated by PackageManager. - if ((new File(ai.modulePath)).isDirectory()) { - break; - } - int flags = PackageManager.GET_META_DATA - | PackageManager.GET_SIGNING_CERTIFICATES - | PackageManager.GET_SIGNATURES; - PackageParser.Package pkg; - try { - File apexFile = new File(ai.modulePath); - PackageParser pp = new PackageParser(); - pkg = pp.parsePackage(apexFile, flags, false); - PackageParser.collectCertificates(pkg, false); - } catch (PackageParser.PackageParserException pe) { - throw new IllegalStateException("Unable to parse: " + ai, pe); - } + @GuardedBy("mLock") + private void scanApexPackagesInternalLocked(PackageParser2 packageParser, + ExecutorService executorService) { + final ApexInfo[] allPkgs; + try { + mAllPackagesCache = new ArrayList<>(); + mPackageNameToApexModuleName = new ArrayMap<>(); + allPkgs = waitForApexService().getAllPackages(); + } catch (RemoteException re) { + Slog.e(TAG, "Unable to retrieve packages from apexservice: " + re.toString()); + throw new RuntimeException(re); + } + if (allPkgs.length == 0) { + return; + } + int flags = PackageManager.GET_META_DATA + | PackageManager.GET_SIGNING_CERTIFICATES + | PackageManager.GET_SIGNATURES; + ArrayMap<File, ApexInfo> parsingApexInfo = new ArrayMap<>(); + ParallelPackageParser parallelPackageParser = + new ParallelPackageParser(packageParser, executorService); + + for (ApexInfo ai : allPkgs) { + File apexFile = new File(ai.modulePath); + parallelPackageParser.submit(apexFile, flags); + parsingApexInfo.put(apexFile, ai); + } - final PackageInfo packageInfo = - PackageParser.generatePackageInfo(pkg, ai, flags); - mAllPackagesCache.add(packageInfo); - if (ai.isActive) { - if (activePackagesSet.contains(packageInfo.packageName)) { - throw new IllegalStateException( - "Two active packages have the same name: " - + packageInfo.packageName); - } - activePackagesSet.add(packageInfo.packageName); + HashSet<String> activePackagesSet = new HashSet<>(); + HashSet<String> factoryPackagesSet = new HashSet<>(); + // Process results one by one + for (int i = 0; i < parsingApexInfo.size(); i++) { + ParallelPackageParser.ParseResult parseResult = parallelPackageParser.take(); + Throwable throwable = parseResult.throwable; + ApexInfo ai = parsingApexInfo.get(parseResult.scanFile); + + if (throwable == null) { + final PackageInfo packageInfo = PackageInfoWithoutStateUtils.generate( + parseResult.parsedPackage, ai, flags); + if (packageInfo == null) { + throw new IllegalStateException("Unable to generate package info: " + + ai.modulePath); + } + mAllPackagesCache.add(packageInfo); + mPackageNameToApexModuleName.put(packageInfo.packageName, ai.moduleName); + if (ai.isActive) { + if (activePackagesSet.contains(packageInfo.packageName)) { + throw new IllegalStateException( + "Two active packages have the same name: " + + packageInfo.packageName); } - if (ai.isFactory) { - if (factoryPackagesSet.contains(packageInfo.packageName)) { - throw new IllegalStateException( - "Two factory packages have the same name: " - + packageInfo.packageName); - } - factoryPackagesSet.add(packageInfo.packageName); + activePackagesSet.add(packageInfo.packageName); + } + if (ai.isFactory) { + if (factoryPackagesSet.contains(packageInfo.packageName)) { + throw new IllegalStateException( + "Two factory packages have the same name: " + + packageInfo.packageName); } + factoryPackagesSet.add(packageInfo.packageName); } - } catch (RemoteException re) { - Slog.e(TAG, "Unable to retrieve packages from apexservice: " + re.toString()); - throw new RuntimeException(re); + } else if (throwable instanceof PackageParser.PackageParserException) { + throw new IllegalStateException("Unable to parse: " + ai.modulePath, throwable); + } else { + throw new IllegalStateException("Unexpected exception occurred while parsing " + + ai.modulePath, throwable); } } } @Override - @Nullable PackageInfo getPackageInfo(String packageName, @PackageInfoFlags int flags) { - populateAllPackagesCacheIfNeeded(); + @Nullable + public PackageInfo getPackageInfo(String packageName, + @PackageInfoFlags int flags) { + Preconditions.checkState(mAllPackagesCache != null, + "APEX packages have not been scanned"); boolean matchActive = (flags & MATCH_ACTIVE_PACKAGE) != 0; boolean matchFactory = (flags & MATCH_FACTORY_PACKAGE) != 0; for (PackageInfo packageInfo: mAllPackagesCache) { @@ -525,35 +536,51 @@ public abstract class ApexManager { @Override List<PackageInfo> getActivePackages() { - populateAllPackagesCacheIfNeeded(); - return mAllPackagesCache - .stream() - .filter(item -> isActive(item)) - .collect(Collectors.toList()); + Preconditions.checkState(mAllPackagesCache != null, + "APEX packages have not been scanned"); + final List<PackageInfo> activePackages = new ArrayList<>(); + for (int i = 0; i < mAllPackagesCache.size(); i++) { + final PackageInfo packageInfo = mAllPackagesCache.get(i); + if (isActive(packageInfo)) { + activePackages.add(packageInfo); + } + } + return activePackages; } @Override List<PackageInfo> getFactoryPackages() { - populateAllPackagesCacheIfNeeded(); - return mAllPackagesCache - .stream() - .filter(item -> isFactory(item)) - .collect(Collectors.toList()); + Preconditions.checkState(mAllPackagesCache != null, + "APEX packages have not been scanned"); + final List<PackageInfo> factoryPackages = new ArrayList<>(); + for (int i = 0; i < mAllPackagesCache.size(); i++) { + final PackageInfo packageInfo = mAllPackagesCache.get(i); + if (isFactory(packageInfo)) { + factoryPackages.add(packageInfo); + } + } + return factoryPackages; } @Override List<PackageInfo> getInactivePackages() { - populateAllPackagesCacheIfNeeded(); - return mAllPackagesCache - .stream() - .filter(item -> !isActive(item)) - .collect(Collectors.toList()); + Preconditions.checkState(mAllPackagesCache != null, + "APEX packages have not been scanned"); + final List<PackageInfo> inactivePackages = new ArrayList<>(); + for (int i = 0; i < mAllPackagesCache.size(); i++) { + final PackageInfo packageInfo = mAllPackagesCache.get(i); + if (!isActive(packageInfo)) { + inactivePackages.add(packageInfo); + } + } + return inactivePackages; } @Override boolean isApexPackage(String packageName) { if (!isApexSupported()) return false; - populateAllPackagesCacheIfNeeded(); + Preconditions.checkState(mAllPackagesCache != null, + "APEX packages have not been scanned"); for (PackageInfo packageInfo : mAllPackagesCache) { if (packageInfo.packageName.equals(packageName)) { return true; @@ -563,9 +590,40 @@ public abstract class ApexManager { } @Override + @Nullable + public String getActiveApexPackageNameContainingPackage( + @NonNull AndroidPackage containedPackage) { + Preconditions.checkState(mPackageNameToApexModuleName != null, + "APEX packages have not been scanned"); + + Objects.requireNonNull(containedPackage); + + synchronized (mLock) { + int numApksInApex = mApksInApex.size(); + for (int apkInApexNum = 0; apkInApexNum < numApksInApex; apkInApexNum++) { + if (mApksInApex.valueAt(apkInApexNum).contains( + containedPackage.getPackageName())) { + String apexModuleName = mApksInApex.keyAt(apkInApexNum); + + int numApexPkgs = mPackageNameToApexModuleName.size(); + for (int apexPkgNum = 0; apexPkgNum < numApexPkgs; apexPkgNum++) { + if (mPackageNameToApexModuleName.valueAt(apexPkgNum).equals( + apexModuleName)) { + return mPackageNameToApexModuleName.keyAt(apexPkgNum); + } + } + } + } + } + + return null; + } + + @Override @Nullable ApexSessionInfo getStagedSessionInfo(int sessionId) { try { - ApexSessionInfo apexSessionInfo = mApexService.getStagedSessionInfo(sessionId); + ApexSessionInfo apexSessionInfo = + waitForApexService().getStagedSessionInfo(sessionId); if (apexSessionInfo.isUnknown) { return null; } @@ -580,7 +638,7 @@ public abstract class ApexManager { ApexInfoList submitStagedSession(ApexSessionParams params) throws PackageManagerException { try { final ApexInfoList apexInfoList = new ApexInfoList(); - mApexService.submitStagedSession(params, apexInfoList); + waitForApexService().submitStagedSession(params, apexInfoList); return apexInfoList; } catch (RemoteException re) { Slog.e(TAG, "Unable to contact apexservice", re); @@ -595,7 +653,7 @@ public abstract class ApexManager { @Override void markStagedSessionReady(int sessionId) throws PackageManagerException { try { - mApexService.markStagedSessionReady(sessionId); + waitForApexService().markStagedSessionReady(sessionId); } catch (RemoteException re) { Slog.e(TAG, "Unable to contact apexservice", re); throw new RuntimeException(re); @@ -609,7 +667,7 @@ public abstract class ApexManager { @Override void markStagedSessionSuccessful(int sessionId) { try { - mApexService.markStagedSessionSuccessful(sessionId); + waitForApexService().markStagedSessionSuccessful(sessionId); } catch (RemoteException re) { Slog.e(TAG, "Unable to contact apexservice", re); throw new RuntimeException(re); @@ -628,7 +686,7 @@ public abstract class ApexManager { @Override boolean revertActiveSessions() { try { - mApexService.revertActiveSessions(); + waitForApexService().revertActiveSessions(); return true; } catch (RemoteException re) { Slog.e(TAG, "Unable to contact apexservice", re); @@ -642,7 +700,7 @@ public abstract class ApexManager { @Override boolean abortStagedSession(int sessionId) throws PackageManagerException { try { - mApexService.abortStagedSession(sessionId); + waitForApexService().abortStagedSession(sessionId); return true; } catch (RemoteException re) { Slog.e(TAG, "Unable to contact apexservice", re); @@ -657,7 +715,7 @@ public abstract class ApexManager { @Override boolean uninstallApex(String apexPackagePath) { try { - mApexService.unstagePackages(Collections.singletonList(apexPackagePath)); + waitForApexService().unstagePackages(Collections.singletonList(apexPackagePath)); return true; } catch (Exception e) { return false; @@ -684,8 +742,9 @@ public abstract class ApexManager { @Override List<String> getApksInApex(String apexPackageName) { - populatePackageNameToApexModuleNameIfNeeded(); synchronized (mLock) { + Preconditions.checkState(mPackageNameToApexModuleName != null, + "APEX packages have not been scanned"); String moduleName = mPackageNameToApexModuleName.get(apexPackageName); if (moduleName == null) { return Collections.emptyList(); @@ -697,17 +756,19 @@ public abstract class ApexManager { @Override @Nullable public String getApexModuleNameForPackageName(String apexPackageName) { - populatePackageNameToApexModuleNameIfNeeded(); synchronized (mLock) { + Preconditions.checkState(mPackageNameToApexModuleName != null, + "APEX packages have not been scanned"); return mPackageNameToApexModuleName.get(apexPackageName); } } @Override public long snapshotCeData(int userId, int rollbackId, String apexPackageName) { - populatePackageNameToApexModuleNameIfNeeded(); String apexModuleName; synchronized (mLock) { + Preconditions.checkState(mPackageNameToApexModuleName != null, + "APEX packages have not been scanned"); apexModuleName = mPackageNameToApexModuleName.get(apexPackageName); } if (apexModuleName == null) { @@ -715,7 +776,7 @@ public abstract class ApexManager { return -1; } try { - return mApexService.snapshotCeData(userId, rollbackId, apexModuleName); + return waitForApexService().snapshotCeData(userId, rollbackId, apexModuleName); } catch (Exception e) { Slog.e(TAG, e.getMessage(), e); return -1; @@ -724,9 +785,10 @@ public abstract class ApexManager { @Override public boolean restoreCeData(int userId, int rollbackId, String apexPackageName) { - populatePackageNameToApexModuleNameIfNeeded(); String apexModuleName; synchronized (mLock) { + Preconditions.checkState(mPackageNameToApexModuleName != null, + "APEX packages have not been scanned"); apexModuleName = mPackageNameToApexModuleName.get(apexPackageName); } if (apexModuleName == null) { @@ -734,7 +796,7 @@ public abstract class ApexManager { return false; } try { - mApexService.restoreCeData(userId, rollbackId, apexModuleName); + waitForApexService().restoreCeData(userId, rollbackId, apexModuleName); return true; } catch (Exception e) { Slog.e(TAG, e.getMessage(), e); @@ -745,7 +807,7 @@ public abstract class ApexManager { @Override public boolean destroyDeSnapshots(int rollbackId) { try { - mApexService.destroyDeSnapshots(rollbackId); + waitForApexService().destroyDeSnapshots(rollbackId); return true; } catch (Exception e) { Slog.e(TAG, e.getMessage(), e); @@ -756,7 +818,7 @@ public abstract class ApexManager { @Override public boolean destroyCeSnapshotsNotSpecified(int userId, int[] retainRollbackIds) { try { - mApexService.destroyCeSnapshotsNotSpecified(userId, retainRollbackIds); + waitForApexService().destroyCeSnapshotsNotSpecified(userId, retainRollbackIds); return true; } catch (Exception e) { Slog.e(TAG, e.getMessage(), e); @@ -797,18 +859,10 @@ public abstract class ApexManager { void dump(PrintWriter pw, @Nullable String packageName) { final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ", 120); try { - populateAllPackagesCacheIfNeeded(); ipw.println(); - ipw.println("Active APEX packages:"); - dumpFromPackagesCache(getActivePackages(), packageName, ipw); - ipw.println("Inactive APEX packages:"); - dumpFromPackagesCache(getInactivePackages(), packageName, ipw); - ipw.println("Factory APEX packages:"); - dumpFromPackagesCache(getFactoryPackages(), packageName, ipw); - ipw.increaseIndent(); ipw.println("APEX session state:"); ipw.increaseIndent(); - final ApexSessionInfo[] sessions = mApexService.getSessions(); + final ApexSessionInfo[] sessions = waitForApexService().getSessions(); for (ApexSessionInfo si : sessions) { ipw.println("Session ID: " + si.sessionId); ipw.increaseIndent(); @@ -834,6 +888,17 @@ public abstract class ApexManager { ipw.decreaseIndent(); } ipw.decreaseIndent(); + ipw.println(); + if (mAllPackagesCache == null) { + ipw.println("APEX packages have not been scanned"); + return; + } + ipw.println("Active APEX packages:"); + dumpFromPackagesCache(getActivePackages(), packageName, ipw); + ipw.println("Inactive APEX packages:"); + dumpFromPackagesCache(getInactivePackages(), packageName, ipw); + ipw.println("Factory APEX packages:"); + dumpFromPackagesCache(getFactoryPackages(), packageName, ipw); } catch (RemoteException e) { ipw.println("Couldn't communicate with apexd."); } @@ -879,12 +944,13 @@ public abstract class ApexManager { } @Override - void systemReady(Context context) { + void scanApexPackagesTraced(@NonNull PackageParser2 packageParser, + @NonNull ExecutorService executorService) { // No-op } @Override - PackageInfo getPackageInfo(String packageName, int flags) { + public PackageInfo getPackageInfo(String packageName, int flags) { return null; } @@ -909,6 +975,15 @@ public abstract class ApexManager { } @Override + @Nullable + public String getActiveApexPackageNameContainingPackage( + @NonNull AndroidPackage containedPackage) { + Objects.requireNonNull(containedPackage); + + return null; + } + + @Override ApexSessionInfo getStagedSessionInfo(int sessionId) { throw new UnsupportedOperationException(); } diff --git a/services/core/java/com/android/server/pm/AppsFilter.java b/services/core/java/com/android/server/pm/AppsFilter.java index 690b9f71d90b..805d91852d8e 100644 --- a/services/core/java/com/android/server/pm/AppsFilter.java +++ b/services/core/java/com/android/server/pm/AppsFilter.java @@ -55,6 +55,7 @@ import com.android.server.om.OverlayReferenceMapper; import com.android.server.pm.parsing.pkg.AndroidPackage; import java.io.PrintWriter; +import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.Set; @@ -507,7 +508,65 @@ public class AppsFilter { private static boolean isSystemSigned(@NonNull PackageParser.SigningDetails sysSigningDetails, PackageSetting pkgSetting) { return pkgSetting.isSystem() - && pkgSetting.signatures.mSigningDetails.signaturesMatchExactly(sysSigningDetails); + && pkgSetting.signatures.mSigningDetails.signaturesMatchExactly(sysSigningDetails); + } + + private static void sort(int[] uids, int nextUidIndex) { + Arrays.sort(uids, 0, nextUidIndex); + } + + /** + * Fetches all app Ids that a given setting is currently visible to, per provided user. This + * only includes UIDs >= {@link Process#FIRST_APPLICATION_UID} as all other UIDs can already see + * all applications. + * + * If the setting is visible to all UIDs, null is returned. If an app is not visible to any + * applications, the int array will be empty. + * + * @param users the set of users that should be evaluated for this calculation + * @param existingSettings the set of all package settings that currently exist on device + * @return a SparseArray mapping userIds to a sorted int array of appIds that may view the + * provided setting or null if the app is visible to all and no whitelist should be + * applied. + */ + @Nullable + public SparseArray<int[]> getVisibilityWhitelist(PackageSetting setting, int[] users, + ArrayMap<String, PackageSetting> existingSettings) { + if (mForceQueryable.contains(setting.appId)) { + return null; + } + // let's reserve max memory to limit the number of allocations + SparseArray<int[]> result = new SparseArray<>(users.length); + for (int u = 0; u < users.length; u++) { + final int userId = users[u]; + int[] appIds = new int[existingSettings.size()]; + int[] buffer = null; + int whitelistSize = 0; + for (int i = existingSettings.size() - 1; i >= 0; i--) { + final PackageSetting existingSetting = existingSettings.valueAt(i); + final int existingAppId = existingSetting.appId; + if (existingAppId < Process.FIRST_APPLICATION_UID) { + continue; + } + final int loc = Arrays.binarySearch(appIds, 0, whitelistSize, existingAppId); + if (loc >= 0) { + continue; + } + final int existingUid = UserHandle.getUid(userId, existingAppId); + if (!shouldFilterApplication(existingUid, existingSetting, setting, userId)) { + if (buffer == null) { + buffer = new int[appIds.length]; + } + final int insert = ~loc; + System.arraycopy(appIds, insert, buffer, 0, whitelistSize - insert); + appIds[insert] = existingUid; + System.arraycopy(buffer, 0, appIds, insert + 1, whitelistSize - insert); + whitelistSize++; + } + } + result.put(userId, Arrays.copyOf(appIds, whitelistSize)); + } + return result; } /** diff --git a/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java b/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java index 7069818e3894..40876754eae8 100644 --- a/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java +++ b/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java @@ -64,6 +64,7 @@ import com.android.server.wm.ActivityTaskManagerInternal; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { private static final String TAG = "CrossProfileAppsService"; @@ -447,7 +448,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { final int uid = mInjector.getPackageManager() .getPackageUidAsUser(packageName, /* flags= */ 0, userId); if (currentModeEquals(newMode, packageName, uid)) { - Slog.w(TAG, "Attempt to set mode to existing value of " + newMode + " for " + Slog.i(TAG, "Attempt to set mode to existing value of " + newMode + " for " + packageName + " on user ID " + userId); return; } @@ -577,6 +578,24 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { setInteractAcrossProfilesAppOp(packageName, AppOpsManager.opToDefaultMode(op)); } + @Override + public void clearInteractAcrossProfilesAppOps() { + final int defaultMode = + AppOpsManager.opToDefaultMode( + AppOpsManager.permissionToOp(Manifest.permission.INTERACT_ACROSS_PROFILES)); + findAllPackageNames() + .forEach(packageName -> setInteractAcrossProfilesAppOp(packageName, defaultMode)); + } + + private List<String> findAllPackageNames() { + return mInjector.getPackageManagerInternal() + .getInstalledApplications( + /* flags= */ 0, mInjector.getCallingUserId(), mInjector.getCallingUid()) + .stream() + .map(applicationInfo -> applicationInfo.packageName) + .collect(Collectors.toList()); + } + CrossProfileAppsInternal getLocalService() { return mLocalService; } diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index 2ff3d2a3a938..8ff7ea9d61dd 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -490,6 +490,14 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements throw new SecurityException("User restriction prevents installing"); } + if (params.dataLoaderParams != null + && mContext.checkCallingOrSelfPermission(Manifest.permission.USE_INSTALLER_V2) + != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException("You need the " + + "com.android.permission.USE_INSTALLER_V2 permission " + + "to use a data loader"); + } + String requestedInstallerPackageName = params.installerPackageName != null ? params.installerPackageName : installerPackageName; diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index 348a4cb77163..1248ec01e020 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -2479,12 +2479,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { @Override public DataLoaderParamsParcel getDataLoaderParams() { + mContext.enforceCallingOrSelfPermission(Manifest.permission.USE_INSTALLER_V2, null); return params.dataLoaderParams != null ? params.dataLoaderParams.getData() : null; } @Override public void addFile(int location, String name, long lengthBytes, byte[] metadata, byte[] signature) { + mContext.enforceCallingOrSelfPermission(Manifest.permission.USE_INSTALLER_V2, null); if (!isDataLoaderInstallation()) { throw new IllegalStateException( "Cannot add files to non-data loader installation session."); @@ -2517,6 +2519,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { @Override public void removeFile(int location, String name) { + mContext.enforceCallingOrSelfPermission(Manifest.permission.USE_INSTALLER_V2, null); if (!isDataLoaderInstallation()) { throw new IllegalStateException( "Cannot add files to non-data loader installation session."); @@ -3242,8 +3245,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { new ComponentName( readStringAttribute(in, ATTR_DATALOADER_PACKAGE_NAME), readStringAttribute(in, ATTR_DATALOADER_CLASS_NAME)), - readStringAttribute(in, ATTR_DATALOADER_ARGUMENTS), - null); + readStringAttribute(in, ATTR_DATALOADER_ARGUMENTS)); } final File appIconFile = buildAppIconFile(sessionId, sessionsDir); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 58a9d9c5f6bf..414449d42d78 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -93,6 +93,7 @@ import static android.content.pm.PackageManager.MOVE_FAILED_SYSTEM_PACKAGE; import static android.content.pm.PackageManager.PERMISSION_DENIED; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.content.pm.PackageManager.RESTRICTION_NONE; +import static android.content.pm.PackageManager.UNINSTALL_REASON_UNKNOWN; import static android.content.pm.PackageParser.isApkFile; import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; import static android.os.incremental.IncrementalManager.isIncrementalPath; @@ -135,6 +136,7 @@ import android.annotation.Nullable; import android.annotation.UserIdInt; import android.annotation.WorkerThread; import android.app.ActivityManager; +import android.app.ActivityManagerInternal; import android.app.AppOpsManager; import android.app.ApplicationPackageManager; import android.app.BroadcastOptions; @@ -415,7 +417,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Predicate; -import java.util.stream.Collectors; /** * Keep track of all those APKs everywhere. @@ -737,9 +738,10 @@ public class PackageManagerService extends IPackageManager.Stub final private ArrayMap<String, File> mExpectingBetter = new ArrayMap<>(); /** - * Tracks existing system packages prior to receiving an OTA. Keys are package name. + * Tracks existing packages prior to receiving an OTA. Keys are package name. + * Only non-null during an OTA, and even then it is nulled again once systemReady(). */ - final private ArraySet<String> mExistingSystemPackages = new ArraySet<>(); + private @Nullable ArraySet<String> mExistingPackages = null; /** * Whether or not system app permissions should be promoted from install to runtime. */ @@ -881,6 +883,7 @@ public class PackageManagerService extends IPackageManager.Stub private final Singleton<UserManagerService> mUserManagerProducer; private final Singleton<Settings> mSettingsProducer; private final Singleton<ActivityTaskManagerInternal> mActivityTaskManagerProducer; + private final Singleton<ActivityManagerInternal> mActivityManagerInternalProducer; private final Singleton<DeviceIdleInternal> mLocalDeviceIdleController; private final Singleton<StorageManagerInternal> mStorageManagerInternalProducer; private final Singleton<NetworkPolicyManagerInternal> mNetworkPolicyManagerProducer; @@ -899,6 +902,7 @@ public class PackageManagerService extends IPackageManager.Stub Producer<UserManagerService> userManagerProducer, Producer<Settings> settingsProducer, Producer<ActivityTaskManagerInternal> activityTaskManagerProducer, + Producer<ActivityManagerInternal> activityManagerInternalProducer, Producer<DeviceIdleInternal> deviceIdleControllerProducer, Producer<StorageManagerInternal> storageManagerInternalProducer, Producer<NetworkPolicyManagerInternal> networkPolicyManagerProducer, @@ -919,6 +923,7 @@ public class PackageManagerService extends IPackageManager.Stub mUserManagerProducer = new Singleton<>(userManagerProducer); mSettingsProducer = new Singleton<>(settingsProducer); mActivityTaskManagerProducer = new Singleton<>(activityTaskManagerProducer); + mActivityManagerInternalProducer = new Singleton<>(activityManagerInternalProducer); mLocalDeviceIdleController = new Singleton<>(deviceIdleControllerProducer); mStorageManagerInternalProducer = new Singleton<>(storageManagerInternalProducer); mNetworkPolicyManagerProducer = new Singleton<>(networkPolicyManagerProducer); @@ -983,6 +988,10 @@ public class PackageManagerService extends IPackageManager.Stub return mActivityTaskManagerProducer.get(this, mPackageManager); } + public ActivityManagerInternal getActivityManagerInternal() { + return mActivityManagerInternalProducer.get(this, mPackageManager); + } + public DeviceIdleInternal getLocalDeviceIdleController() { return mLocalDeviceIdleController.get(this, mPackageManager); } @@ -2118,16 +2127,23 @@ public class PackageManagerService extends IPackageManager.Stub } extras.putInt(PackageInstaller.EXTRA_DATA_LOADER_TYPE, dataLoaderType); // Send to all running apps. + final SparseArray<int[]> newBroadcastWhitelist; + + synchronized (mLock) { + newBroadcastWhitelist = mAppsFilter.getVisibilityWhitelist( + getPackageSettingInternal(res.name, Process.SYSTEM_UID), + updateUserIds, mSettings.mPackages); + } sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName, extras, 0 /*flags*/, null /*targetPackage*/, null /*finishedReceiver*/, - updateUserIds, instantUserIds); + updateUserIds, instantUserIds, newBroadcastWhitelist); if (installerPackageName != null) { // Send to the installer, even if it's not running. sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName, extras, 0 /*flags*/, installerPackageName, null /*finishedReceiver*/, - updateUserIds, instantUserIds); + updateUserIds, instantUserIds, null /* broadcastWhitelist */); } // if the required verifier is defined, but, is not the installer of record // for the package, it gets notified @@ -2137,7 +2153,7 @@ public class PackageManagerService extends IPackageManager.Stub sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName, extras, 0 /*flags*/, mRequiredVerifierPackage, null /*finishedReceiver*/, - updateUserIds, instantUserIds); + updateUserIds, instantUserIds, null /* broadcastWhitelist */); } // If package installer is defined, notify package installer about new // app installed @@ -2145,7 +2161,7 @@ public class PackageManagerService extends IPackageManager.Stub sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName, extras, Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND /*flags*/, mRequiredInstallerPackage, null /*finishedReceiver*/, - firstUserIds, instantUserIds); + firstUserIds, instantUserIds, null /* broadcastWhitelist */); } // Send replaced for users that don't see the package for the first time @@ -2153,23 +2169,24 @@ public class PackageManagerService extends IPackageManager.Stub sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, packageName, extras, 0 /*flags*/, null /*targetPackage*/, null /*finishedReceiver*/, - updateUserIds, instantUserIds); + updateUserIds, instantUserIds, res.removedInfo.broadcastWhitelist); if (installerPackageName != null) { sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, packageName, extras, 0 /*flags*/, installerPackageName, null /*finishedReceiver*/, - updateUserIds, instantUserIds); + updateUserIds, instantUserIds, null /*broadcastWhitelist*/); } if (notifyVerifier) { sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, packageName, extras, 0 /*flags*/, mRequiredVerifierPackage, null /*finishedReceiver*/, - updateUserIds, instantUserIds); + updateUserIds, instantUserIds, null /*broadcastWhitelist*/); } sendPackageBroadcast(Intent.ACTION_MY_PACKAGE_REPLACED, null /*package*/, null /*extras*/, 0 /*flags*/, packageName /*targetPackage*/, - null /*finishedReceiver*/, updateUserIds, instantUserIds); + null /*finishedReceiver*/, updateUserIds, instantUserIds, + null /*broadcastWhitelist*/); } else if (launchedForRestore && !res.pkg.isSystem()) { // First-install and we did a restore, so we're responsible for the // first-launch broadcast. @@ -2206,6 +2223,7 @@ public class PackageManagerService extends IPackageManager.Stub sendResourcesChangedBroadcast(true, true, pkgList, uidArray, null); } } else if (!ArrayUtils.isEmpty(res.libraryConsumers)) { // if static shared lib + int[] allUsers = mInjector.getUserManagerService().getUserIds(); for (int i = 0; i < res.libraryConsumers.size(); i++) { AndroidPackage pkg = res.libraryConsumers.get(i); // send broadcast that all consumers of the static shared library have changed @@ -2511,6 +2529,7 @@ public class PackageManagerService extends IPackageManager.Stub i.getPermissionManagerServiceInternal().getPermissionSettings(), lock), new Injector.LocalServicesProducer<>(ActivityTaskManagerInternal.class), + new Injector.LocalServicesProducer<>(ActivityManagerInternal.class), new Injector.LocalServicesProducer<>(DeviceIdleInternal.class), new Injector.LocalServicesProducer<>(StorageManagerInternal.class), new Injector.LocalServicesProducer<>(NetworkPolicyManagerInternal.class), @@ -2570,9 +2589,10 @@ public class PackageManagerService extends IPackageManager.Stub private void installWhitelistedSystemPackages() { synchronized (mLock) { final boolean scheduleWrite = mUserManager.installWhitelistedSystemPackages( - isFirstBoot(), isDeviceUpgrading()); + isFirstBoot(), isDeviceUpgrading(), mExistingPackages); if (scheduleWrite) { scheduleWritePackageRestrictionsLocked(UserHandle.USER_ALL); + scheduleWriteSettingsLocked(); } } } @@ -2655,6 +2675,11 @@ public class PackageManagerService extends IPackageManager.Stub + partition.folder); } } + + @Override + public String toString() { + return folder.getAbsolutePath() + ":" + scanFlag; + } } public PackageManagerService(Injector injector, boolean onlyCore, boolean factoryTest) { @@ -2757,15 +2782,19 @@ public class PackageManagerService extends IPackageManager.Stub mApexManager = ApexManager.getInstance(); mAppsFilter = mInjector.getAppsFilter(); + final List<ScanPartition> scanPartitions = new ArrayList<>(); + final List<ApexManager.ActiveApexInfo> activeApexInfos = mApexManager.getActiveApexInfos(); + for (int i = 0; i < activeApexInfos.size(); i++) { + final ScanPartition scanPartition = resolveApexToScanPartition(activeApexInfos.get(i)); + if (scanPartition != null) { + scanPartitions.add(scanPartition); + } + } + mDirsToScanAsSystem = new ArrayList<>(); mDirsToScanAsSystem.addAll(SYSTEM_PARTITIONS); - mDirsToScanAsSystem.addAll(mApexManager.getActiveApexInfos().stream() - .map(PackageManagerService::resolveApexToScanPartition) - .filter(Objects::nonNull).collect(Collectors.toList())); - Slog.d(TAG, - "Directories scanned as system partitions: [" + mDirsToScanAsSystem.stream().map( - d -> (d.folder.getAbsolutePath() + ":" + d.scanFlag)) - .collect(Collectors.joining(",")) + "]"); + mDirsToScanAsSystem.addAll(scanPartitions); + Slog.d(TAG, "Directories scanned as system partitions: " + mDirsToScanAsSystem); // CHECKSTYLE:OFF IndentationCheck synchronized (mInstallLock) { @@ -2873,13 +2902,12 @@ public class PackageManagerService extends IPackageManager.Stub mIsPreNMR1Upgrade = mIsUpgrade && ver.sdkVersion < Build.VERSION_CODES.N_MR1; mIsPreQUpgrade = mIsUpgrade && ver.sdkVersion < Build.VERSION_CODES.Q; - // save off the names of pre-existing system packages prior to scanning; we don't - // want to automatically grant runtime permissions for new system apps - if (mPromoteSystemApps) { + // Save the names of pre-existing packages prior to scanning, so we can determine + // which system packages are completely new due to an upgrade. + if (isDeviceUpgrading()) { + mExistingPackages = new ArraySet<>(mSettings.mPackages.size()); for (PackageSetting ps : mSettings.mPackages.values()) { - if (isSystemApp(ps)) { - mExistingSystemPackages.add(ps.name); - } + mExistingPackages.add(ps.name); } } @@ -2900,6 +2928,9 @@ public class PackageManagerService extends IPackageManager.Stub mMetrics, mCacheDir, mPackageParserCallback); ExecutorService executorService = ParallelPackageParser.makeExecutorService(); + // Prepare apex package info before scanning APKs, these information are needed when + // scanning apk in apex. + mApexManager.scanApexPackagesTraced(packageParser, executorService); // Collect vendor/product/system_ext overlay packages. (Do this before scanning // any apps.) // For security and version matching reason, only consider overlay packages if they @@ -3337,7 +3368,6 @@ public class PackageManagerService extends IPackageManager.Stub } // clear only after permissions and other defaults have been updated - mExistingSystemPackages.clear(); mPromoteSystemApps = false; // All the changes are done during package scanning. @@ -12201,7 +12231,8 @@ public class PackageManagerService extends IPackageManager.Stub @Override public void sendPackageBroadcast(final String action, final String pkg, final Bundle extras, final int flags, final String targetPkg, final IIntentReceiver finishedReceiver, - final int[] userIds, int[] instantUserIds) { + final int[] userIds, int[] instantUserIds, + @Nullable SparseArray<int[]> broadcastWhitelist) { mHandler.post(() -> { try { final IActivityManager am = ActivityManager.getService(); @@ -12213,10 +12244,10 @@ public class PackageManagerService extends IPackageManager.Stub resolvedUserIds = userIds; } doSendBroadcast(am, action, pkg, extras, flags, targetPkg, finishedReceiver, - resolvedUserIds, false); + resolvedUserIds, false, broadcastWhitelist); if (instantUserIds != null && instantUserIds != EMPTY_INT_ARRAY) { doSendBroadcast(am, action, pkg, extras, flags, targetPkg, finishedReceiver, - instantUserIds, true); + instantUserIds, true, null); } } catch (RemoteException ex) { } @@ -12286,8 +12317,7 @@ public class PackageManagerService extends IPackageManager.Stub */ private void doSendBroadcast(IActivityManager am, String action, String pkg, Bundle extras, int flags, String targetPkg, IIntentReceiver finishedReceiver, - int[] userIds, boolean isInstantApp) - throws RemoteException { + int[] userIds, boolean isInstantApp, @Nullable SparseArray<int[]> broadcastWhitelist) { for (int id : userIds) { final Intent intent = new Intent(action, pkg != null ? Uri.fromParts(PACKAGE_SCHEME, pkg, null) : null); @@ -12314,9 +12344,10 @@ public class PackageManagerService extends IPackageManager.Stub + intent.toShortString(false, true, false, false) + " " + intent.getExtras(), here); } - am.broadcastIntentWithFeature(null, null, intent, null, finishedReceiver, - 0, null, null, requiredPermissions, android.app.AppOpsManager.OP_NONE, - null, finishedReceiver != null, false, id); + mInjector.getActivityManagerInternal().broadcastIntent( + intent, finishedReceiver, requiredPermissions, + finishedReceiver != null, id, + broadcastWhitelist == null ? null : broadcastWhitelist.get(id)); } } @@ -12444,7 +12475,10 @@ public class PackageManagerService extends IPackageManager.Stub extras.putInt(Intent.EXTRA_UID, uid); sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, - packageName, extras, 0, null, null, userIds, instantUserIds); + packageName, extras, 0, null, null, userIds, instantUserIds, + mAppsFilter.getVisibilityWhitelist( + getPackageSettingInternal(packageName, Process.SYSTEM_UID), + userIds, mSettings.mPackages)); if (sendBootCompleted && !ArrayUtils.isEmpty(userIds)) { mHandler.post(() -> { for (int userId : userIds) { @@ -12650,7 +12684,7 @@ public class PackageManagerService extends IPackageManager.Stub extras.putIntArray(Intent.EXTRA_CHANGED_UID_LIST, uidList); extras.putInt(Intent.EXTRA_DISTRACTION_RESTRICTIONS, distractionFlags); sendPackageBroadcast(Intent.ACTION_DISTRACTING_PACKAGES_CHANGED, null, extras, - Intent.FLAG_RECEIVER_REGISTERED_ONLY, null, null, new int[]{userId}, null); + Intent.FLAG_RECEIVER_REGISTERED_ONLY, null, null, new int[]{userId}, null, null); } private void sendPackagesSuspendedForUser(String[] pkgList, int[] uidList, int userId, @@ -12662,7 +12696,7 @@ public class PackageManagerService extends IPackageManager.Stub suspended ? Intent.ACTION_PACKAGES_SUSPENDED : Intent.ACTION_PACKAGES_UNSUSPENDED, null, extras, Intent.FLAG_RECEIVER_REGISTERED_ONLY, null, null, - new int[] {userId}, null); + new int[] {userId}, null, null); } /** @@ -12764,6 +12798,7 @@ public class PackageManagerService extends IPackageManager.Stub pkgSetting.setInstalled(true, userId); pkgSetting.setHidden(false, userId); pkgSetting.setInstallReason(installReason, userId); + pkgSetting.setUninstallReason(PackageManager.UNINSTALL_REASON_UNKNOWN, userId); mSettings.writePackageRestrictionsLPr(userId); mSettings.writeKernelMappingLPr(pkgSetting); installed = true; @@ -13052,31 +13087,27 @@ public class PackageManagerService extends IPackageManager.Stub ? Intent.ACTION_MY_PACKAGE_SUSPENDED : Intent.ACTION_MY_PACKAGE_UNSUSPENDED; mHandler.post(() -> { - try { - final IActivityManager am = ActivityManager.getService(); - if (am == null) { - Slog.wtf(TAG, "IActivityManager null. Cannot send MY_PACKAGE_ " - + (suspended ? "" : "UN") + "SUSPENDED broadcasts"); - return; - } - final int[] targetUserIds = new int[] {userId}; - for (String packageName : affectedPackages) { - final Bundle appExtras = suspended - ? getSuspendedPackageAppExtrasInternal(packageName, userId) - : null; - final Bundle intentExtras; - if (appExtras != null) { - intentExtras = new Bundle(1); - intentExtras.putBundle(Intent.EXTRA_SUSPENDED_PACKAGE_EXTRAS, appExtras); - } else { - intentExtras = null; - } - doSendBroadcast(am, action, null, intentExtras, - Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND, packageName, null, - targetUserIds, false); + final IActivityManager am = ActivityManager.getService(); + if (am == null) { + Slog.wtf(TAG, "IActivityManager null. Cannot send MY_PACKAGE_ " + + (suspended ? "" : "UN") + "SUSPENDED broadcasts"); + return; + } + final int[] targetUserIds = new int[] {userId}; + for (String packageName : affectedPackages) { + final Bundle appExtras = suspended + ? getSuspendedPackageAppExtrasInternal(packageName, userId) + : null; + final Bundle intentExtras; + if (appExtras != null) { + intentExtras = new Bundle(1); + intentExtras.putBundle(Intent.EXTRA_SUSPENDED_PACKAGE_EXTRAS, appExtras); + } else { + intentExtras = null; } - } catch (RemoteException ex) { - // Shouldn't happen as AMS is in the same process. + doSendBroadcast(am, action, null, intentExtras, + Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND, packageName, null, + targetUserIds, false, null); } }); } @@ -14076,7 +14107,7 @@ public class PackageManagerService extends IPackageManager.Stub private void sendFirstLaunchBroadcast(String pkgName, String installerPkg, int[] userIds, int[] instantUserIds) { sendPackageBroadcast(Intent.ACTION_PACKAGE_FIRST_LAUNCH, pkgName, null, 0, - installerPkg, null, userIds, instantUserIds); + installerPkg, null, userIds, instantUserIds, null /* broadcastWhitelist */); } private abstract class HandlerParams { @@ -15596,7 +15627,8 @@ public class PackageManagerService extends IPackageManager.Stub } // It's implied that when a user requests installation, they want the app to be - // installed and enabled. + // installed and enabled. (This does not apply to USER_ALL, which here means only + // install on users for which the app is already installed). if (userId != UserHandle.USER_ALL) { ps.setInstalled(true, userId); ps.setEnabled(COMPONENT_ENABLED_STATE_DEFAULT, userId, installerPackageName); @@ -15614,7 +15646,7 @@ public class PackageManagerService extends IPackageManager.Stub mSettings.addInstallerPackageNames(installSource); // When replacing an existing package, preserve the original install reason for all - // users that had the package installed before. + // users that had the package installed before. Similarly for uninstall reasons. final Set<Integer> previousUserIds = new ArraySet<>(); if (res.removedInfo != null && res.removedInfo.installReasons != null) { final int installReasonCount = res.removedInfo.installReasons.size(); @@ -15625,10 +15657,20 @@ public class PackageManagerService extends IPackageManager.Stub previousUserIds.add(previousUserId); } } + if (res.removedInfo != null && res.removedInfo.uninstallReasons != null) { + for (int i = 0; i < res.removedInfo.uninstallReasons.size(); i++) { + final int previousUserId = res.removedInfo.uninstallReasons.keyAt(i); + final int previousReason = res.removedInfo.uninstallReasons.valueAt(i); + ps.setUninstallReason(previousReason, previousUserId); + } + } // Set install reason for users that are having the package newly installed. + final int[] allUsersList = mUserManager.getUserIds(); if (userId == UserHandle.USER_ALL) { - for (int currentUserId : mUserManager.getUserIds()) { + // TODO(b/152629990): It appears that the package doesn't actually get newly + // installed in this case, so the installReason shouldn't get modified? + for (int currentUserId : allUsersList) { if (!previousUserIds.contains(currentUserId)) { ps.setInstallReason(installReason, currentUserId); } @@ -15636,6 +15678,12 @@ public class PackageManagerService extends IPackageManager.Stub } else if (!previousUserIds.contains(userId)) { ps.setInstallReason(installReason, userId); } + // Ensure that the uninstall reason is UNKNOWN for users with the package installed. + for (int currentUserId : allUsersList) { + if (ps.getInstalled(currentUserId)) { + ps.setUninstallReason(UNINSTALL_REASON_UNKNOWN, currentUserId); + } + } mSettings.writeKernelMappingLPr(ps); } res.name = pkgName; @@ -16142,6 +16190,8 @@ public class PackageManagerService extends IPackageManager.Stub reconciledPkg.pkgSetting.firstInstallTime = deletedPkgSetting.firstInstallTime; reconciledPkg.pkgSetting.lastUpdateTime = System.currentTimeMillis(); + res.removedInfo.broadcastWhitelist = mAppsFilter.getVisibilityWhitelist( + reconciledPkg.pkgSetting, request.mAllUsers, mSettings.mPackages); if (reconciledPkg.prepareResult.system) { // Remove existing system package removePackageLI(oldPackage, true); @@ -16999,6 +17049,7 @@ public class PackageManagerService extends IPackageManager.Stub final String pkgName11 = parsedPackage.getPackageName(); final int[] allUsers; final int[] installedUsers; + final int[] uninstalledUsers; synchronized (mLock) { oldPackage = mPackages.get(pkgName11); @@ -17073,6 +17124,7 @@ public class PackageManagerService extends IPackageManager.Stub // In case of rollback, remember per-user/profile install state allUsers = mUserManager.getUserIds(); installedUsers = ps.queryInstalledUsers(allUsers, true); + uninstalledUsers = ps.queryInstalledUsers(allUsers, false); // don't allow an upgrade from full to ephemeral @@ -17111,6 +17163,11 @@ public class PackageManagerService extends IPackageManager.Stub final int userId = installedUsers[i]; res.removedInfo.installReasons.put(userId, ps.getInstallReason(userId)); } + res.removedInfo.uninstallReasons = new SparseArray<>(uninstalledUsers.length); + for (int i = 0; i < uninstalledUsers.length; i++) { + final int userId = uninstalledUsers[i]; + res.removedInfo.uninstallReasons.put(userId, ps.getUninstallReason(userId)); + } sysPkg = oldPackage.isSystem(); if (sysPkg) { @@ -17943,11 +18000,15 @@ public class PackageManagerService extends IPackageManager.Stub int[] broadcastUsers = null; int[] instantUserIds = null; SparseArray<Integer> installReasons; + SparseArray<Integer> uninstallReasons; boolean isRemovedPackageSystemUpdate = false; boolean isUpdate; boolean dataRemoved; boolean removedForAllUsers; boolean isStaticSharedLib; + // a two dimensional array mapping userId to the set of appIds that can receive notice + // of package changes + SparseArray<int[]> broadcastWhitelist; // Clean up resources deleted packages. InstallArgs args = null; ArrayMap<String, PackageInstalledInfo> appearedChildPackages; @@ -17981,19 +18042,19 @@ public class PackageManagerService extends IPackageManager.Stub Bundle extras = new Bundle(2); extras.putInt(Intent.EXTRA_UID, removedAppId >= 0 ? removedAppId : uid); extras.putBoolean(Intent.EXTRA_REPLACING, true); - packageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, - removedPackage, extras, 0, null /*targetPackage*/, null, null, null); - packageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, - removedPackage, extras, 0, null /*targetPackage*/, null, null, null); - packageSender.sendPackageBroadcast(Intent.ACTION_MY_PACKAGE_REPLACED, - null, null, 0, removedPackage, null, null, null); + packageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, removedPackage, extras, + 0, null /*targetPackage*/, null, null, null, broadcastWhitelist); + packageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, removedPackage, + extras, 0, null /*targetPackage*/, null, null, null, broadcastWhitelist); + packageSender.sendPackageBroadcast(Intent.ACTION_MY_PACKAGE_REPLACED, null, null, 0, + removedPackage, null, null, null, null /* broadcastWhitelist */); if (installerPackageName != null) { packageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, removedPackage, extras, 0 /*flags*/, - installerPackageName, null, null, null); + installerPackageName, null, null, null, null /* broadcastWhitelist */); packageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, removedPackage, extras, 0 /*flags*/, - installerPackageName, null, null, null); + installerPackageName, null, null, null, null /* broadcastWhitelist */); } } @@ -18016,17 +18077,16 @@ public class PackageManagerService extends IPackageManager.Stub if (removedPackage != null) { packageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REMOVED, removedPackage, extras, 0, null /*targetPackage*/, null, - broadcastUsers, instantUserIds); + broadcastUsers, instantUserIds, broadcastWhitelist); if (installerPackageName != null) { packageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REMOVED, removedPackage, extras, 0 /*flags*/, - installerPackageName, null, broadcastUsers, instantUserIds); + installerPackageName, null, broadcastUsers, instantUserIds, null); } if (dataRemoved && !isRemovedPackageSystemUpdate) { packageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_FULLY_REMOVED, - removedPackage, extras, - Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND, - null, null, broadcastUsers, instantUserIds); + removedPackage, extras, Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND, null, + null, broadcastUsers, instantUserIds, broadcastWhitelist); packageSender.notifyPackageRemoved(removedPackage, removedUid); } } @@ -18039,7 +18099,7 @@ public class PackageManagerService extends IPackageManager.Stub packageSender.sendPackageBroadcast(Intent.ACTION_UID_REMOVED, null, extras, Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND, - null, null, broadcastUsers, instantUserIds); + null, null, broadcastUsers, instantUserIds, broadcastWhitelist); } } @@ -18165,6 +18225,9 @@ public class PackageManagerService extends IPackageManager.Stub installedStateChanged = true; } deletedPs.setInstalled(installed, userId); + if (installed) { + deletedPs.setUninstallReason(UNINSTALL_REASON_UNKNOWN, userId); + } } } } @@ -18347,6 +18410,9 @@ public class PackageManagerService extends IPackageManager.Stub installedStateChanged = true; } ps.setInstalled(installed, userId); + if (installed) { + ps.setUninstallReason(UNINSTALL_REASON_UNKNOWN, userId); + } mSettings.writeRuntimePermissionsForUserLPr(userId, false); } @@ -18619,7 +18685,9 @@ public class PackageManagerService extends IPackageManager.Stub null /*enabledComponents*/, null /*disabledComponents*/, ps.readUserState(nextUserId).domainVerificationStatus, - 0, PackageManager.INSTALL_REASON_UNKNOWN, + 0 /*linkGeneration*/, + PackageManager.INSTALL_REASON_UNKNOWN, + PackageManager.UNINSTALL_REASON_UNKNOWN, null /*harmfulAppWarning*/); } mSettings.writeKernelMappingLPr(ps); @@ -20372,8 +20440,7 @@ public class PackageManagerService extends IPackageManager.Stub } private void sendPackageChangedBroadcast(String packageName, - boolean dontKillApp, ArrayList<String> componentNames, int packageUid, - String reason) { + boolean dontKillApp, ArrayList<String> componentNames, int packageUid, String reason) { if (DEBUG_INSTALL) Log.v(TAG, "Sending package changed: package=" + packageName + " components=" + componentNames); @@ -20396,8 +20463,14 @@ public class PackageManagerService extends IPackageManager.Stub final boolean isInstantApp = isInstantApp(packageName, userId); final int[] userIds = isInstantApp ? EMPTY_INT_ARRAY : new int[] { userId }; final int[] instantUserIds = isInstantApp ? new int[] { userId } : EMPTY_INT_ARRAY; + final SparseArray<int[]> broadcastWhitelist; + synchronized (mLock) { + broadcastWhitelist = isInstantApp ? null : mAppsFilter.getVisibilityWhitelist( + getPackageSettingInternal(packageName, Process.SYSTEM_UID), + userIds, mSettings.mPackages); + } sendPackageBroadcast(Intent.ACTION_PACKAGE_CHANGED, packageName, extras, flags, null, null, - userIds, instantUserIds); + userIds, instantUserIds, broadcastWhitelist); } @Override @@ -20696,7 +20769,6 @@ public class PackageManagerService extends IPackageManager.Stub storage.registerListener(mStorageListener); mInstallerService.systemReady(); - mApexManager.systemReady(mContext); mPackageDexOptimizer.systemReady(); mInjector.getStorageManagerInternal().addExternalStoragePolicy( @@ -20771,6 +20843,8 @@ public class PackageManagerService extends IPackageManager.Stub // installation on reboot. Make sure this is the last component to be call since the // installation might require other components to be ready. mInstallerService.restoreAndApplyStagedSessionIfNeeded(); + + mExistingPackages = null; } public void waitForAppDataPrepared() { @@ -21632,7 +21706,7 @@ public class PackageManagerService extends IPackageManager.Stub } private void sendResourcesChangedBroadcast(boolean mediaStatus, boolean replacing, - String[] pkgList, int uidArr[], IIntentReceiver finishedReceiver) { + String[] pkgList, int[] uidArr, IIntentReceiver finishedReceiver) { int size = pkgList.length; if (size > 0) { // Send broadcasts here @@ -21646,7 +21720,8 @@ public class PackageManagerService extends IPackageManager.Stub } String action = mediaStatus ? Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE : Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE; - sendPackageBroadcast(action, null, extras, 0, null, finishedReceiver, null, null); + // TODO: not sure how to handle this one. + sendPackageBroadcast(action, null, extras, 0, null, finishedReceiver, null, null, null); } } @@ -22723,16 +22798,17 @@ public class PackageManagerService extends IPackageManager.Stub /** * Called by UserManagerService. * - * @param installablePackages system packages that should be initially installed for this user, - * or {@code null} if all system packages should be installed + * @param userTypeInstallablePackages system packages that should be initially installed for + * this type of user, or {@code null} if all system packages + * should be installed * @param disallowedPackages packages that should not be initially installed. Takes precedence * over installablePackages. */ - void createNewUser(int userId, @Nullable Set<String> installablePackages, + void createNewUser(int userId, @Nullable Set<String> userTypeInstallablePackages, String[] disallowedPackages) { synchronized (mInstallLock) { mSettings.createNewUserLI(this, mInstaller, userId, - installablePackages, disallowedPackages); + userTypeInstallablePackages, disallowedPackages); } synchronized (mLock) { scheduleWritePackageRestrictionsLocked(userId); @@ -23746,19 +23822,6 @@ public class PackageManagerService extends IPackageManager.Stub } @Override - public boolean setInstalled(AndroidPackage pkg, @UserIdInt int userId, - boolean installed) { - synchronized (mLock) { - final PackageSetting ps = mSettings.mPackages.get(pkg.getPackageName()); - if (ps.getInstalled(userId) != installed) { - ps.setInstalled(installed, userId); - return true; - } - return false; - } - } - - @Override public void requestInstantAppResolutionPhaseTwo(AuxiliaryResolveInfo responseObj, Intent origIntent, String resolvedType, String callingPackage, @Nullable String callingFeatureId, boolean isRequesterInstantApp, @@ -23828,16 +23891,6 @@ public class PackageManagerService extends IPackageManager.Stub } @Override - public boolean isLegacySystemApp(AndroidPackage pkg) { - synchronized (mLock) { - final PackageSetting ps = getPackageSetting(pkg.getPackageName()); - return mPromoteSystemApps - && ps.isSystem() - && mExistingSystemPackages.contains(ps.name); - } - } - - @Override public List<PackageInfo> getOverlayPackages(int userId) { final ArrayList<PackageInfo> overlayPackages = new ArrayList<PackageInfo>(); synchronized (mLock) { @@ -24842,7 +24895,8 @@ interface PackageSender { */ void sendPackageBroadcast(final String action, final String pkg, final Bundle extras, final int flags, final String targetPkg, - final IIntentReceiver finishedReceiver, final int[] userIds, int[] instantUserIds); + final IIntentReceiver finishedReceiver, final int[] userIds, int[] instantUserIds, + @Nullable SparseArray<int[]> broadcastWhitelist); void sendPackageAddedForNewUsers(String packageName, boolean sendBootCompleted, boolean includeStopped, int appId, int[] userIds, int[] instantUserIds); void notifyPackageAdded(String packageName, int uid); diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index 8a9f1b3afd02..b4eacf6226ce 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -105,6 +105,7 @@ import com.android.internal.util.ArrayUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; import com.android.server.SystemConfig; +import com.android.server.pm.PackageManagerShellCommandDataLoader.Metadata; import dalvik.system.DexFile; @@ -118,7 +119,6 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.URISyntaxException; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Base64; import java.util.Collection; @@ -1278,42 +1278,7 @@ class PackageManagerShellCommand extends ShellCommand { pw.println("Success"); return 0; } - - long timeoutMs = params.timeoutMs <= 0 - ? DEFAULT_WAIT_MS - : params.timeoutMs; - PackageInstaller.SessionInfo si = mInterface.getPackageInstaller() - .getSessionInfo(sessionId); - long currentTime = System.currentTimeMillis(); - long endTime = currentTime + timeoutMs; - // Using a loop instead of BroadcastReceiver since we can receive session update - // broadcast only if packageInstallerName is "android". We can't always force - // "android" as packageIntallerName, e.g, rollback auto implies - // "-i com.android.shell". - while (currentTime < endTime) { - if (si != null - && (si.isStagedSessionReady() || si.isStagedSessionFailed())) { - break; - } - SystemClock.sleep(Math.min(endTime - currentTime, 100)); - currentTime = System.currentTimeMillis(); - si = mInterface.getPackageInstaller().getSessionInfo(sessionId); - } - if (si == null) { - pw.println("Failure [failed to retrieve SessionInfo]"); - return 1; - } - if (!si.isStagedSessionReady() && !si.isStagedSessionFailed()) { - pw.println("Failure [timed out after " + timeoutMs + " ms]"); - return 1; - } - if (!si.isStagedSessionReady()) { - pw.println("Error [" + si.getStagedSessionErrorCode() + "] [" - + si.getStagedSessionErrorMessage() + "]"); - return 1; - } - pw.println("Success. Reboot device to apply staged session"); - return 0; + return doWaitForStagedSessionRead(sessionId, params.timeoutMs, pw); } finally { if (abandonSession) { try { @@ -1324,14 +1289,92 @@ class PackageManagerShellCommand extends ShellCommand { } } + private int doWaitForStagedSessionRead(int sessionId, long timeoutMs, PrintWriter pw) + throws RemoteException { + if (timeoutMs <= 0) { + timeoutMs = DEFAULT_WAIT_MS; + } + PackageInstaller.SessionInfo si = mInterface.getPackageInstaller() + .getSessionInfo(sessionId); + if (si == null) { + pw.println("Failure [Unknown session " + sessionId + "]"); + return 1; + } + if (!si.isStaged()) { + pw.println("Failure [Session " + sessionId + " is not a staged session]"); + return 1; + } + long currentTime = System.currentTimeMillis(); + long endTime = currentTime + timeoutMs; + // Using a loop instead of BroadcastReceiver since we can receive session update + // broadcast only if packageInstallerName is "android". We can't always force + // "android" as packageIntallerName, e.g, rollback auto implies + // "-i com.android.shell". + while (currentTime < endTime) { + if (si != null && (si.isStagedSessionReady() || si.isStagedSessionFailed())) { + break; + } + SystemClock.sleep(Math.min(endTime - currentTime, 100)); + currentTime = System.currentTimeMillis(); + si = mInterface.getPackageInstaller().getSessionInfo(sessionId); + } + if (si == null) { + pw.println("Failure [failed to retrieve SessionInfo]"); + return 1; + } + if (!si.isStagedSessionReady() && !si.isStagedSessionFailed()) { + pw.println("Failure [timed out after " + timeoutMs + " ms]"); + return 1; + } + if (!si.isStagedSessionReady()) { + pw.println("Error [" + si.getStagedSessionErrorCode() + "] [" + + si.getStagedSessionErrorMessage() + "]"); + return 1; + } + pw.println("Success. Reboot device to apply staged session"); + return 0; + } + private int runInstallAbandon() throws RemoteException { final int sessionId = Integer.parseInt(getNextArg()); return doAbandonSession(sessionId, true /*logSuccess*/); } private int runInstallCommit() throws RemoteException { + final PrintWriter pw = getOutPrintWriter(); + String opt; + boolean waitForStagedSessionReady = true; + long timeoutMs = -1; + while ((opt = getNextOption()) != null) { + switch (opt) { + case "--wait": + waitForStagedSessionReady = true; + // If there is only one remaining argument, then it represents the sessionId, we + // shouldn't try to parse it as timeoutMs. + if (getRemainingArgsCount() > 1) { + try { + timeoutMs = Long.parseLong(peekNextArg()); + getNextArg(); + } catch (NumberFormatException ignore) { + } + } + break; + case "--no-wait": + waitForStagedSessionReady = false; + break; + } + } final int sessionId = Integer.parseInt(getNextArg()); - return doCommitSession(sessionId, true /*logSuccess*/); + if (doCommitSession(sessionId, false /*logSuccess*/) != PackageInstaller.STATUS_SUCCESS) { + return 1; + } + final PackageInstaller.SessionInfo si = mInterface.getPackageInstaller() + .getSessionInfo(sessionId); + if (si == null || !si.isStaged() || !waitForStagedSessionReady) { + pw.println("Success"); + return 0; + } + return doWaitForStagedSessionRead(sessionId, timeoutMs, pw); } private int runInstallCreate() throws RemoteException { @@ -3025,9 +3068,9 @@ class PackageManagerShellCommand extends ShellCommand { // 1. Single file from stdin. if (args.isEmpty() || STDIN_PATH.equals(args.get(0))) { final String name = "base." + (isApex ? "apex" : "apk"); - final String metadata = "-" + name; + final Metadata metadata = Metadata.forStdIn(name); session.addFile(LOCATION_DATA_APP, name, sessionSizeBytes, - metadata.getBytes(StandardCharsets.UTF_8), null); + metadata.toByteArray(), null); return 0; } @@ -3056,9 +3099,10 @@ class PackageManagerShellCommand extends ShellCommand { private int processArgForStdin(String arg, PackageInstaller.Session session) { final String[] fileDesc = arg.split(":"); - String name, metadata; + String name, fileId; long sizeBytes; byte[] signature = null; + int streamingVersion = 0; try { if (fileDesc.length < 2) { @@ -3067,14 +3111,22 @@ class PackageManagerShellCommand extends ShellCommand { } name = fileDesc[0]; sizeBytes = Long.parseUnsignedLong(fileDesc[1]); - metadata = name; + fileId = name; if (fileDesc.length > 2 && !TextUtils.isEmpty(fileDesc[2])) { - metadata = fileDesc[2]; + fileId = fileDesc[2]; } if (fileDesc.length > 3) { signature = Base64.getDecoder().decode(fileDesc[3]); } + if (fileDesc.length > 4) { + streamingVersion = Integer.parseUnsignedInt(fileDesc[4]); + if (streamingVersion < 0 || streamingVersion > 1) { + getErrPrintWriter().println( + "Unsupported streaming version: " + streamingVersion); + return 1; + } + } } catch (IllegalArgumentException e) { getErrPrintWriter().println( "Unable to parse file parameters: " + arg + ", reason: " + e); @@ -3086,9 +3138,14 @@ class PackageManagerShellCommand extends ShellCommand { return 1; } + final Metadata metadata; + if (signature != null) { - // Streaming/adb mode. - metadata = "+" + metadata; + // Streaming/adb mode. Versions: + // 0: data only streaming, tree has to be fully available, + // 1: tree and data streaming. + metadata = (streamingVersion == 0) ? Metadata.forDataOnlyStreaming(fileId) + : Metadata.forStreaming(fileId); try { if (V4Signature.readFrom(signature) == null) { getErrPrintWriter().println("V4 signature is invalid in: " + arg); @@ -3101,11 +3158,10 @@ class PackageManagerShellCommand extends ShellCommand { } } else { // Single-shot read from stdin. - metadata = "-" + metadata; + metadata = Metadata.forStdIn(fileId); } - session.addFile(LOCATION_DATA_APP, name, sizeBytes, - metadata.getBytes(StandardCharsets.UTF_8), signature); + session.addFile(LOCATION_DATA_APP, name, sizeBytes, metadata.toByteArray(), signature); return 0; } @@ -3115,7 +3171,7 @@ class PackageManagerShellCommand extends ShellCommand { final File file = new File(inPath); final String name = file.getName(); final long size = file.length(); - final byte[] metadata = inPath.getBytes(StandardCharsets.UTF_8); + final Metadata metadata = Metadata.forLocalFile(inPath); byte[] v4signatureBytes = null; // Try to load the v4 signature file for the APK; it might not exist. @@ -3132,7 +3188,7 @@ class PackageManagerShellCommand extends ShellCommand { } } - session.addFile(LOCATION_DATA_APP, name, size, metadata, v4signatureBytes); + session.addFile(LOCATION_DATA_APP, name, size, metadata.toByteArray(), v4signatureBytes); } private int doWriteSplits(int sessionId, ArrayList<String> splitPaths, long sessionSizeBytes, diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java b/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java index 6d83d70f1cb1..2aa6e5737e9b 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java @@ -24,7 +24,6 @@ import android.content.pm.PackageInstaller; import android.os.ParcelFileDescriptor; import android.os.ShellCommand; import android.service.dataloader.DataLoaderService; -import android.text.TextUtils; import android.util.Slog; import android.util.SparseArray; @@ -114,6 +113,74 @@ public class PackageManagerShellCommandDataLoader extends DataLoaderService { } } + static class Metadata { + /** + * Full files read from stdin. + */ + static final byte STDIN = 0; + /** + * Full files read from local file. + */ + static final byte LOCAL_FILE = 1; + /** + * Signature tree read from stdin, data streamed. + */ + static final byte DATA_ONLY_STREAMING = 2; + /** + * Everything streamed. + */ + static final byte STREAMING = 3; + + private final byte mMode; + private final String mData; + + static Metadata forStdIn(String fileId) { + return new Metadata(STDIN, fileId); + } + + static Metadata forLocalFile(String filePath) { + return new Metadata(LOCAL_FILE, filePath); + } + + static Metadata forDataOnlyStreaming(String fileId) { + return new Metadata(DATA_ONLY_STREAMING, fileId); + } + + static Metadata forStreaming(String fileId) { + return new Metadata(STREAMING, fileId); + } + + private Metadata(byte mode, String data) { + this.mMode = mode; + this.mData = (data == null) ? "" : data; + } + + static Metadata fromByteArray(byte[] bytes) throws IOException { + if (bytes == null || bytes.length == 0) { + return null; + } + byte mode = bytes[0]; + String data = new String(bytes, 1, bytes.length - 1, StandardCharsets.UTF_8); + return new Metadata(mode, data); + } + + byte[] toByteArray() { + byte[] dataBytes = this.mData.getBytes(StandardCharsets.UTF_8); + byte[] result = new byte[1 + dataBytes.length]; + result[0] = this.mMode; + System.arraycopy(dataBytes, 0, result, 1, dataBytes.length); + return result; + } + + byte getMode() { + return this.mMode; + } + + String getData() { + return this.mData; + } + } + private static class DataLoader implements DataLoaderService.DataLoader { private DataLoaderParams mParams = null; private FileSystemConnector mConnector = null; @@ -136,19 +203,31 @@ public class PackageManagerShellCommandDataLoader extends DataLoaderService { } try { for (InstallationFile file : addedFiles) { - String filePath = new String(file.getMetadata(), StandardCharsets.UTF_8); - if (TextUtils.isEmpty(filePath) || filePath.startsWith(STDIN_PATH)) { - final ParcelFileDescriptor inFd = getStdInPFD(shellCommand); - mConnector.writeData(file.getName(), 0, file.getLengthBytes(), inFd); - } else { - ParcelFileDescriptor incomingFd = null; - try { - incomingFd = getLocalFile(shellCommand, filePath); - mConnector.writeData(file.getName(), 0, incomingFd.getStatSize(), - incomingFd); - } finally { - IoUtils.closeQuietly(incomingFd); + Metadata metadata = Metadata.fromByteArray(file.getMetadata()); + if (metadata == null) { + Slog.e(TAG, "Invalid metadata for file: " + file.getName()); + return false; + } + switch (metadata.getMode()) { + case Metadata.STDIN: { + final ParcelFileDescriptor inFd = getStdInPFD(shellCommand); + mConnector.writeData(file.getName(), 0, file.getLengthBytes(), inFd); + break; + } + case Metadata.LOCAL_FILE: { + ParcelFileDescriptor incomingFd = null; + try { + incomingFd = getLocalFile(shellCommand, metadata.getData()); + mConnector.writeData(file.getName(), 0, incomingFd.getStatSize(), + incomingFd); + } finally { + IoUtils.closeQuietly(incomingFd); + } + break; } + default: + Slog.e(TAG, "Unsupported metadata mode: " + metadata.getMode()); + return false; } } return true; diff --git a/services/core/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java index 318a233b6e14..7cb3df5a0350 100644 --- a/services/core/java/com/android/server/pm/PackageSettingBase.java +++ b/services/core/java/com/android/server/pm/PackageSettingBase.java @@ -24,6 +24,7 @@ import android.annotation.NonNull; import android.content.pm.ApplicationInfo; import android.content.pm.IntentFilterVerificationInfo; import android.content.pm.PackageManager; +import android.content.pm.PackageManager.UninstallReason; import android.content.pm.PackageParser; import android.content.pm.PackageUserState; import android.content.pm.Signature; @@ -315,6 +316,14 @@ public abstract class PackageSettingBase extends SettingBase { modifyUserState(userId).installReason = installReason; } + int getUninstallReason(int userId) { + return readUserState(userId).uninstallReason; + } + + void setUninstallReason(@UninstallReason int uninstallReason, int userId) { + modifyUserState(userId).uninstallReason = uninstallReason; + } + void setOverlayPaths(List<String> overlayPaths, int userId) { modifyUserState(userId).setOverlayPaths(overlayPaths == null ? null : overlayPaths.toArray(new String[overlayPaths.size()])); @@ -471,7 +480,7 @@ public abstract class PackageSettingBase extends SettingBase { ArrayMap<String, PackageUserState.SuspendParams> suspendParams, boolean instantApp, boolean virtualPreload, String lastDisableAppCaller, ArraySet<String> enabledComponents, ArraySet<String> disabledComponents, - int domainVerifState, int linkGeneration, int installReason, + int domainVerifState, int linkGeneration, int installReason, int uninstallReason, String harmfulAppWarning) { PackageUserState state = modifyUserState(userId); state.ceDataInode = ceDataInode; @@ -489,6 +498,7 @@ public abstract class PackageSettingBase extends SettingBase { state.domainVerificationStatus = domainVerifState; state.appLinkGeneration = linkGeneration; state.installReason = installReason; + state.uninstallReason = uninstallReason; state.instantApp = instantApp; state.virtualPreload = virtualPreload; state.harmfulAppWarning = harmfulAppWarning; @@ -502,7 +512,7 @@ public abstract class PackageSettingBase extends SettingBase { otherState.virtualPreload, otherState.lastDisableAppCaller, otherState.enabledComponents, otherState.disabledComponents, otherState.domainVerificationStatus, otherState.appLinkGeneration, - otherState.installReason, otherState.harmfulAppWarning); + otherState.installReason, otherState.uninstallReason, otherState.harmfulAppWarning); } ArraySet<String> getEnabledComponents(int userId) { diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 62541ab4951e..f6ca87df482f 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -24,6 +24,8 @@ import static android.content.pm.PackageManager.INSTALL_FAILED_SHARED_USER_INCOM import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; import static android.content.pm.PackageManager.MATCH_DEFAULT_ONLY; +import static android.content.pm.PackageManager.UNINSTALL_REASON_UNKNOWN; +import static android.content.pm.PackageManager.UNINSTALL_REASON_USER_TYPE; import static android.os.Process.PACKAGE_INFO_GID; import static android.os.Process.SYSTEM_UID; @@ -266,6 +268,7 @@ public final class Settings { private static final String ATTR_DOMAIN_VERIFICATON_STATE = "domainVerificationStatus"; private static final String ATTR_APP_LINK_GENERATION = "app-link-generation"; private static final String ATTR_INSTALL_REASON = "install-reason"; + private static final String ATTR_UNINSTALL_REASON = "uninstall-reason"; private static final String ATTR_INSTANT_APP = "instant-app"; private static final String ATTR_VIRTUAL_PRELOAD = "virtual-preload"; private static final String ATTR_HARMFUL_APP_WARNING = "harmful-app-warning"; @@ -684,7 +687,9 @@ public final class Settings { null /*enabledComponents*/, null /*disabledComponents*/, INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED, - 0, PackageManager.INSTALL_REASON_UNKNOWN, + 0 /*linkGeneration*/, + PackageManager.INSTALL_REASON_UNKNOWN, + PackageManager.UNINSTALL_REASON_UNKNOWN, null /*harmfulAppWarning*/); } } @@ -768,6 +773,7 @@ public final class Settings { if (allUserInfos != null) { for (UserInfo userInfo : allUserInfos) { pkgSetting.setInstalled(true, userInfo.id); + pkgSetting.setUninstallReason(UNINSTALL_REASON_UNKNOWN, userInfo.id); } } } @@ -1580,7 +1586,9 @@ public final class Settings { null /*enabledComponents*/, null /*disabledComponents*/, INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED, - 0, PackageManager.INSTALL_REASON_UNKNOWN, + 0 /*linkGeneration*/, + PackageManager.INSTALL_REASON_UNKNOWN, + PackageManager.UNINSTALL_REASON_UNKNOWN, null /*harmfulAppWarning*/); } return; @@ -1678,6 +1686,8 @@ public final class Settings { } final int installReason = XmlUtils.readIntAttribute(parser, ATTR_INSTALL_REASON, PackageManager.INSTALL_REASON_UNKNOWN); + final int uninstallReason = XmlUtils.readIntAttribute(parser, + ATTR_UNINSTALL_REASON, PackageManager.UNINSTALL_REASON_UNKNOWN); ArraySet<String> enabledComponents = null; ArraySet<String> disabledComponents = null; @@ -1751,7 +1761,7 @@ public final class Settings { hidden, distractionFlags, suspended, suspendParamsMap, instantApp, virtualPreload, enabledCaller, enabledComponents, disabledComponents, verifState, - linkGeneration, installReason, harmfulAppWarning); + linkGeneration, installReason, uninstallReason, harmfulAppWarning); } else if (tagName.equals("preferred-activities")) { readPreferredActivitiesLPw(parser, userId); } else if (tagName.equals(TAG_PERSISTENT_PREFERRED_ACTIVITIES)) { @@ -2079,6 +2089,10 @@ public final class Settings { serializer.attribute(null, ATTR_INSTALL_REASON, Integer.toString(ustate.installReason)); } + if (ustate.uninstallReason != PackageManager.UNINSTALL_REASON_UNKNOWN) { + serializer.attribute(null, ATTR_UNINSTALL_REASON, + Integer.toString(ustate.uninstallReason)); + } if (ustate.harmfulAppWarning != null) { serializer.attribute(null, ATTR_HARMFUL_APP_WARNING, ustate.harmfulAppWarning); @@ -4126,7 +4140,7 @@ public final class Settings { } void createNewUserLI(@NonNull PackageManagerService service, @NonNull Installer installer, - @UserIdInt int userHandle, @Nullable Set<String> installablePackages, + @UserIdInt int userHandle, @Nullable Set<String> userTypeInstallablePackages, String[] disallowedPackages) { final TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG + "Timing", Trace.TRACE_TAG_PACKAGE_MANAGER); @@ -4137,7 +4151,7 @@ public final class Settings { String[] seinfos; int[] targetSdkVersions; int packagesCount; - final boolean skipPackageWhitelist = installablePackages == null; + final boolean skipPackageWhitelist = userTypeInstallablePackages == null; synchronized (mLock) { Collection<PackageSetting> packages = mPackages.values(); packagesCount = packages.size(); @@ -4152,13 +4166,20 @@ public final class Settings { if (ps.pkg == null) { continue; } - final boolean shouldInstall = ps.isSystem() && - (skipPackageWhitelist || installablePackages.contains(ps.name)) && + final boolean shouldMaybeInstall = ps.isSystem() && !ArrayUtils.contains(disallowedPackages, ps.name) && !ps.getPkgState().isHiddenUntilInstalled(); + final boolean shouldReallyInstall = shouldMaybeInstall && + (skipPackageWhitelist || userTypeInstallablePackages.contains(ps.name)); // Only system apps are initially installed. - ps.setInstalled(shouldInstall, userHandle); - if (!shouldInstall) { + ps.setInstalled(shouldReallyInstall, userHandle); + // If userTypeInstallablePackages is the *only* reason why we're not installing, + // then uninstallReason is USER_TYPE. If there's a different reason, or if we + // actually are installing, put UNKNOWN. + final int uninstallReason = (shouldMaybeInstall && !shouldReallyInstall) ? + UNINSTALL_REASON_USER_TYPE : UNINSTALL_REASON_UNKNOWN; + ps.setUninstallReason(uninstallReason, userHandle); + if (!shouldReallyInstall) { writeKernelMappingLPr(ps); } // Need to create a data directory for all apps under this user. Accumulate all diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java index 342c90719916..60292b45c0ee 100644 --- a/services/core/java/com/android/server/pm/StagingManager.java +++ b/services/core/java/com/android/server/pm/StagingManager.java @@ -75,13 +75,11 @@ import com.android.server.rollback.WatchdogRollbackLogger; import java.io.File; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import java.util.function.Predicate; -import java.util.stream.Collectors; /** * This class handles staged install sessions, i.e. install sessions that require packages to @@ -222,6 +220,7 @@ public class StagingManager { // which will be propagated to populate stagedSessionErrorMessage of this session. final ApexInfoList apexInfoList = mApexManager.submitStagedSession(apexSessionParams); final List<PackageInfo> result = new ArrayList<>(); + final List<String> apexPackageNames = new ArrayList<>(); for (ApexInfo apexInfo : apexInfoList.apexInfos) { final PackageInfo packageInfo; int flags = PackageManager.GET_META_DATA; @@ -245,9 +244,10 @@ public class StagingManager { checkRequiredVersionCode(session, activePackage); checkDowngrade(session, activePackage, packageInfo); result.add(packageInfo); + apexPackageNames.add(packageInfo.packageName); } - Slog.d(TAG, "Session " + session.sessionId + " has following APEX packages: [" - + result.stream().map(p -> p.packageName).collect(Collectors.joining(",")) + "]"); + Slog.d(TAG, "Session " + session.sessionId + " has following APEX packages: " + + apexPackageNames); return result; } @@ -313,13 +313,16 @@ public class StagingManager { return filter.test(session); } synchronized (mStagedSessions) { - return !(Arrays.stream(session.getChildSessionIds()) - // Retrieve cached sessions matching ids. - .mapToObj(i -> mStagedSessions.get(i)) - // Filter only the ones containing APEX. - .filter(childSession -> filter.test(childSession)) - .collect(Collectors.toList()) - .isEmpty()); + final int[] childSessionIds = session.getChildSessionIds(); + for (int id : childSessionIds) { + // Retrieve cached sessions matching ids. + final PackageInstallerSession s = mStagedSessions.get(id); + // Filter only the ones containing APEX. + if (filter.test(s)) { + return true; + } + } + return false; } } @@ -669,15 +672,15 @@ public class StagingManager { // contain an APK, and with those then create a new multi-package group of sessions, // carrying over all the session parameters and unmarking them as staged. On commit the // sessions will be installed atomically. - final List<PackageInstallerSession> childSessions; + final List<PackageInstallerSession> childSessions = new ArrayList<>(); synchronized (mStagedSessions) { - childSessions = - Arrays.stream(session.getChildSessionIds()) - // Retrieve cached sessions matching ids. - .mapToObj(i -> mStagedSessions.get(i)) - // Filter only the ones containing APKs. - .filter(childSession -> !isApexSession(childSession)) - .collect(Collectors.toList()); + final int[] childSessionIds = session.getChildSessionIds(); + for (int id : childSessionIds) { + final PackageInstallerSession s = mStagedSessions.get(id); + if (!isApexSession(s)) { + childSessions.add(s); + } + } } if (childSessions.isEmpty()) { // APEX-only multi-package staged session, nothing to do. diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index ef8cad15290c..d2443fa735e9 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -3438,10 +3438,10 @@ public class UserManagerService extends IUserManager.Stub { StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE); t.traceEnd(); - final Set<String> installablePackages = + final Set<String> userTypeInstallablePackages = mSystemPackageInstaller.getInstallablePackagesForUserType(userType); t.traceBegin("PM.createNewUser"); - mPm.createNewUser(userId, installablePackages, disallowedPackages); + mPm.createNewUser(userId, userTypeInstallablePackages, disallowedPackages); t.traceEnd(); userInfo.partial = false; @@ -3562,8 +3562,10 @@ public class UserManagerService extends IUserManager.Stub { } /** Install/uninstall system packages for all users based on their user-type, as applicable. */ - boolean installWhitelistedSystemPackages(boolean isFirstBoot, boolean isUpgrade) { - return mSystemPackageInstaller.installWhitelistedSystemPackages(isFirstBoot, isUpgrade); + boolean installWhitelistedSystemPackages(boolean isFirstBoot, boolean isUpgrade, + @Nullable ArraySet<String> existingPackages) { + return mSystemPackageInstaller.installWhitelistedSystemPackages( + isFirstBoot, isUpgrade, existingPackages); } private long getCreationTime() { diff --git a/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java b/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java index d6480d35110d..85c2306f6d89 100644 --- a/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java +++ b/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java @@ -20,6 +20,7 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; +import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.content.pm.PackageParser; import android.content.res.Resources; @@ -74,6 +75,14 @@ import java.util.Set; * <li>Otherwise, the package is implicitly treated as blacklisted for all users</li> * </ul> * + * <p>Packages are only installed/uninstalled by this mechanism when a new user is created or during + * an update. In the case of updates:<ul> + * <li>new packages are (un)installed per the whitelist/blacklist</li> + * <li>pre-existing installed blacklisted packages are never uninstalled</li> + * <li>pre-existing not-installed whitelisted packages are only installed if the reason why they + * had been previously uninstalled was due to UserSystemPackageInstaller</li> + * </ul> + * * <p><b>NOTE:</b> the {@code SystemConfig} state is only updated on first boot or after a system * update. So, to verify changes during development, you can emulate the latter by calling: * <pre><code> @@ -171,8 +180,12 @@ class UserSystemPackageInstaller { * * This is responsible for enforcing the whitelist for pre-existing users (i.e. USER_SYSTEM); * enforcement for new users is done when they are created in UserManagerService.createUser(). + * + * @param preExistingPackages list of packages on the device prior to the upgrade. Cannot be + * null if isUpgrade is true. */ - boolean installWhitelistedSystemPackages(boolean isFirstBoot, boolean isUpgrade) { + boolean installWhitelistedSystemPackages(boolean isFirstBoot, boolean isUpgrade, + @Nullable ArraySet<String> preExistingPackages) { final int mode = getWhitelistMode(); checkWhitelistedSystemPackages(mode); final boolean isConsideredUpgrade = isUpgrade && !isIgnoreOtaMode(mode); @@ -198,20 +211,51 @@ class UserSystemPackageInstaller { final boolean install = (userWhitelist == null || userWhitelist.contains(pkg.getPackageName())) && !pkgSetting.getPkgState().isHiddenUntilInstalled(); - if (isConsideredUpgrade && !isFirstBoot && !install) { - return; // To be careful, we don’t uninstall apps during OTAs - } - final boolean changed = pmInt.setInstalled(pkg, userId, install); - if (changed) { - Slog.i(TAG, (install ? "Installed " : "Uninstalled ") - + pkg.getPackageName() + " for user " + userId); + if (pkgSetting.getInstalled(userId) == install + || !shouldChangeInstallationState(pkgSetting, install, userId, isFirstBoot, + isConsideredUpgrade, preExistingPackages)) { + return; } + pkgSetting.setInstalled(install, userId); + pkgSetting.setUninstallReason( + install ? PackageManager.UNINSTALL_REASON_UNKNOWN : + PackageManager.UNINSTALL_REASON_USER_TYPE, + userId); + Slog.i(TAG, (install ? "Installed " : "Uninstalled ") + + pkg.getPackageName() + " for user " + userId); }); } return true; } /** + * Returns whether to proceed with install/uninstall for the given package. + * In particular, do not install a package unless it was only uninstalled due to the user type; + * and do not uninstall a package if it previously was installed (prior to the OTA). + * + * Should be called only within PackageManagerInternal.forEachPackageSetting() since it + * requires the LP lock. + * + * @param preOtaPkgs list of packages on the device prior to the upgrade. + * Cannot be null if isUpgrade is true. + */ + private static boolean shouldChangeInstallationState(PackageSetting pkgSetting, + boolean install, + @UserIdInt int userId, + boolean isFirstBoot, + boolean isUpgrade, + @Nullable ArraySet<String> preOtaPkgs) { + if (install) { + // Only proceed with install if we are the only reason why it had been uninstalled. + return pkgSetting.getUninstallReason(userId) + == PackageManager.UNINSTALL_REASON_USER_TYPE; + } else { + // Only proceed with uninstall if the package is new to the device. + return isFirstBoot || (isUpgrade && !preOtaPkgs.contains(pkgSetting.name)); + } + } + + /** * Checks whether the system packages and the mWhitelistedPackagesForUserTypes whitelist are * in 1-to-1 correspondence. */ diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 04c965e69588..82c02a4ebefe 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -42,6 +42,7 @@ import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; import static android.permission.PermissionManager.KILL_APP_REASON_GIDS_CHANGED; import static android.permission.PermissionManager.KILL_APP_REASON_PERMISSIONS_REVOKED; +import static com.android.server.pm.ApexManager.MATCH_ACTIVE_PACKAGE; import static com.android.server.pm.PackageManagerService.DEBUG_INSTALL; import static com.android.server.pm.PackageManagerService.DEBUG_PACKAGE_SCANNING; import static com.android.server.pm.PackageManagerService.DEBUG_PERMISSIONS; @@ -130,6 +131,7 @@ import com.android.server.LocalServices; import com.android.server.ServiceThread; import com.android.server.SystemConfig; import com.android.server.Watchdog; +import com.android.server.pm.ApexManager; import com.android.server.pm.PackageManagerServiceUtils; import com.android.server.pm.PackageSetting; import com.android.server.pm.SharedUserSetting; @@ -3317,39 +3319,51 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (!privappPermissionsDisable && privilegedPermission && pkg.isPrivileged() && !platformPackage && platformPermission) { if (!hasPrivappWhitelistEntry(perm, pkg)) { - // Only report violations for apps on system image - if (!mSystemReady && !pkgSetting.getPkgState().isUpdatedSystemApp()) { - // it's only a reportable violation if the permission isn't explicitly denied - ArraySet<String> deniedPermissions = null; - if (pkg.isVendor()) { - deniedPermissions = SystemConfig.getInstance() - .getVendorPrivAppDenyPermissions(pkg.getPackageName()); - } else if (pkg.isProduct()) { - deniedPermissions = SystemConfig.getInstance() - .getProductPrivAppDenyPermissions(pkg.getPackageName()); - } else if (pkg.isSystemExt()) { - deniedPermissions = SystemConfig.getInstance() - .getSystemExtPrivAppDenyPermissions(pkg.getPackageName()); - } else { - deniedPermissions = SystemConfig.getInstance() - .getPrivAppDenyPermissions(pkg.getPackageName()); - } - final boolean permissionViolation = - deniedPermissions == null || !deniedPermissions.contains(perm); - if (permissionViolation) { - Slog.w(TAG, "Privileged permission " + perm + " for package " - + pkg.getPackageName() + " (" + pkg.getCodePath() - + ") not in privapp-permissions whitelist"); - - if (RoSystemProperties.CONTROL_PRIVAPP_PERMISSIONS_ENFORCE) { - if (mPrivappPermissionsViolations == null) { - mPrivappPermissionsViolations = new ArraySet<>(); + // Only enforce whitelist this on boot + if (!mSystemReady + // Updated system apps do not need to be whitelisted + && !pkgSetting.getPkgState().isUpdatedSystemApp()) { + ApexManager apexMgr = ApexManager.getInstance(); + String apexContainingPkg = apexMgr.getActiveApexPackageNameContainingPackage( + pkg); + + // Apps that are in updated apexs' do not need to be whitelisted + if (apexContainingPkg == null || apexMgr.isFactory( + apexMgr.getPackageInfo(apexContainingPkg, MATCH_ACTIVE_PACKAGE))) { + // it's only a reportable violation if the permission isn't explicitly + // denied + ArraySet<String> deniedPermissions = null; + if (pkg.isVendor()) { + deniedPermissions = SystemConfig.getInstance() + .getVendorPrivAppDenyPermissions(pkg.getPackageName()); + } else if (pkg.isProduct()) { + deniedPermissions = SystemConfig.getInstance() + .getProductPrivAppDenyPermissions(pkg.getPackageName()); + } else if (pkg.isSystemExt()) { + deniedPermissions = SystemConfig.getInstance() + .getSystemExtPrivAppDenyPermissions(pkg.getPackageName()); + } else { + deniedPermissions = SystemConfig.getInstance() + .getPrivAppDenyPermissions(pkg.getPackageName()); + } + final boolean permissionViolation = + deniedPermissions == null || !deniedPermissions.contains(perm); + if (permissionViolation) { + Slog.w(TAG, "Privileged permission " + perm + " for package " + + pkg.getPackageName() + " (" + pkg.getCodePath() + + ") not in privapp-permissions whitelist"); + + if (RoSystemProperties.CONTROL_PRIVAPP_PERMISSIONS_ENFORCE) { + if (mPrivappPermissionsViolations == null) { + mPrivappPermissionsViolations = new ArraySet<>(); + } + mPrivappPermissionsViolations.add( + pkg.getPackageName() + " (" + pkg.getCodePath() + "): " + + perm); } - mPrivappPermissionsViolations.add( - pkg.getPackageName() + " (" + pkg.getCodePath() + "): " + perm); + } else { + return false; } - } else { - return false; } } if (RoSystemProperties.CONTROL_PRIVAPP_PERMISSIONS_ENFORCE) { diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 1e1256547f2c..c9736401f680 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -49,7 +49,6 @@ import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_SYSTEM_ERROR; import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; -import static android.view.WindowManager.LayoutParams.TYPE_DREAM; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; @@ -2091,7 +2090,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Window manager does the checking for this. outAppOp[0] = OP_TOAST_WINDOW; return ADD_OKAY; - case TYPE_DREAM: case TYPE_INPUT_METHOD: case TYPE_WALLPAPER: case TYPE_PRESENTATION: @@ -2230,7 +2228,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { case TYPE_STATUS_BAR: case TYPE_NAVIGATION_BAR: case TYPE_WALLPAPER: - case TYPE_DREAM: return false; default: // Hide only windows below the keyguard host window. diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java index efe2af3352c2..7eb3f01798c5 100644 --- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java +++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java @@ -31,7 +31,6 @@ import static android.view.WindowManager.LayoutParams.TYPE_BOOT_PROGRESS; import static android.view.WindowManager.LayoutParams.TYPE_DISPLAY_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; import static android.view.WindowManager.LayoutParams.TYPE_DRAG; -import static android.view.WindowManager.LayoutParams.TYPE_DREAM; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_CONSUMER; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG; @@ -806,9 +805,6 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { return canAddInternalSystemWindow ? 13 : 10; case TYPE_APPLICATION_OVERLAY: return 12; - case TYPE_DREAM: - // used for Dreams (screensavers with TYPE_DREAM windows) - return 14; case TYPE_INPUT_METHOD: // on-screen keyboards and other such input method user interfaces go here. return 15; diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index 5025835b5a59..86ff926af7d4 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -3531,7 +3531,9 @@ public final class PowerManagerService extends SystemService } // Control light outside of lock. - light.setFlashing(color, LogicalLight.LIGHT_FLASH_HARDWARE, (on ? 3 : 0), 0); + if (light != null) { + light.setFlashing(color, LogicalLight.LIGHT_FLASH_HARDWARE, (on ? 3 : 0), 0); + } } private void setDozeAfterScreenOffInternal(boolean on) { diff --git a/services/core/java/com/android/server/power/ThermalManagerService.java b/services/core/java/com/android/server/power/ThermalManagerService.java index 74c3a9ec375b..4f4019cdea50 100644 --- a/services/core/java/com/android/server/power/ThermalManagerService.java +++ b/services/core/java/com/android/server/power/ThermalManagerService.java @@ -107,7 +107,8 @@ public class ThermalManagerService extends SystemService { private final AtomicBoolean mHalReady = new AtomicBoolean(); /** Watches temperatures to forecast when throttling will occur */ - private final TemperatureWatcher mTemperatureWatcher = new TemperatureWatcher(); + @VisibleForTesting + final TemperatureWatcher mTemperatureWatcher = new TemperatureWatcher(); /** Invalid throttling status */ private static final int INVALID_THROTTLING = Integer.MIN_VALUE; @@ -767,7 +768,7 @@ public class ThermalManagerService extends SystemService { protected boolean connectToHal() { synchronized (mHalLock) { try { - mThermalHal10 = android.hardware.thermal.V1_0.IThermal.getService(); + mThermalHal10 = android.hardware.thermal.V1_0.IThermal.getService(true); mThermalHal10.linkToDeath(new DeathRecipient(), THERMAL_HAL_DEATH_COOKIE); Slog.i(TAG, @@ -902,7 +903,7 @@ public class ThermalManagerService extends SystemService { protected boolean connectToHal() { synchronized (mHalLock) { try { - mThermalHal11 = android.hardware.thermal.V1_1.IThermal.getService(); + mThermalHal11 = android.hardware.thermal.V1_1.IThermal.getService(true); mThermalHal11.linkToDeath(new DeathRecipient(), THERMAL_HAL_DEATH_COOKIE); mThermalHal11.registerThermalCallback(mThermalCallback11); @@ -1046,7 +1047,7 @@ public class ThermalManagerService extends SystemService { protected boolean connectToHal() { synchronized (mHalLock) { try { - mThermalHal20 = android.hardware.thermal.V2_0.IThermal.getService(); + mThermalHal20 = android.hardware.thermal.V2_0.IThermal.getService(true); mThermalHal20.linkToDeath(new DeathRecipient(), THERMAL_HAL_DEATH_COOKIE); mThermalHal20.registerThermalChangedCallback(mThermalCallback20, false, 0 /* not used */); @@ -1069,16 +1070,19 @@ public class ThermalManagerService extends SystemService { } } - private class TemperatureWatcher { + @VisibleForTesting + class TemperatureWatcher { private final Handler mHandler = BackgroundThread.getHandler(); /** Map of skin temperature sensor name to a corresponding list of samples */ @GuardedBy("mSamples") - private final ArrayMap<String, ArrayList<Sample>> mSamples = new ArrayMap<>(); + @VisibleForTesting + final ArrayMap<String, ArrayList<Sample>> mSamples = new ArrayMap<>(); /** Map of skin temperature sensor name to the corresponding SEVERE temperature threshold */ @GuardedBy("mSamples") - private ArrayMap<String, Float> mSevereThresholds = new ArrayMap<>(); + @VisibleForTesting + ArrayMap<String, Float> mSevereThresholds = new ArrayMap<>(); @GuardedBy("mSamples") private long mLastForecastCallTimeMillis = 0; @@ -1146,7 +1150,8 @@ public class ThermalManagerService extends SystemService { * Calculates the trend using a linear regression. As the samples are degrees Celsius with * associated timestamps in milliseconds, the slope is in degrees Celsius per millisecond. */ - private float getSlopeOf(List<Sample> samples) { + @VisibleForTesting + float getSlopeOf(List<Sample> samples) { long sumTimes = 0L; float sumTemperatures = 0.0f; for (int s = 0; s < samples.size(); ++s) { @@ -1177,7 +1182,8 @@ public class ThermalManagerService extends SystemService { */ private static final float DEGREES_BETWEEN_ZERO_AND_ONE = 30.0f; - private float normalizeTemperature(float temperature, float severeThreshold) { + @VisibleForTesting + float normalizeTemperature(float temperature, float severeThreshold) { synchronized (mSamples) { float zeroNormalized = severeThreshold - DEGREES_BETWEEN_ZERO_AND_ONE; if (temperature <= zeroNormalized) { @@ -1245,7 +1251,15 @@ public class ThermalManagerService extends SystemService { } } - private class Sample { + @VisibleForTesting + // Since Sample is inside an inner class, we can't make it static + // This allows test code to create Sample objects via ThermalManagerService + Sample createSampleForTesting(long time, float temperature) { + return new Sample(time, temperature); + } + + @VisibleForTesting + class Sample { public long time; public float temperature; diff --git a/services/core/java/com/android/server/security/FileIntegrityService.java b/services/core/java/com/android/server/security/FileIntegrityService.java index 482090a02025..841aca5a8d6f 100644 --- a/services/core/java/com/android/server/security/FileIntegrityService.java +++ b/services/core/java/com/android/server/security/FileIntegrityService.java @@ -18,14 +18,19 @@ package com.android.server.security; import android.annotation.NonNull; import android.annotation.Nullable; +import android.app.AppOpsManager; import android.content.Context; import android.content.pm.PackageManager; +import android.content.pm.PackageManagerInternal; +import android.os.Binder; import android.os.Build; import android.os.IBinder; import android.os.SystemProperties; +import android.os.UserHandle; import android.security.IFileIntegrityService; import android.util.Slog; +import com.android.server.LocalServices; import com.android.server.SystemService; import java.io.ByteArrayInputStream; @@ -58,10 +63,10 @@ public class FileIntegrityService extends SystemService { } @Override - public boolean isAppSourceCertificateTrusted(@Nullable byte[] certificateBytes) { - enforceAnyCallingPermissions( - android.Manifest.permission.REQUEST_INSTALL_PACKAGES, - android.Manifest.permission.INSTALL_PACKAGES); + public boolean isAppSourceCertificateTrusted(@Nullable byte[] certificateBytes, + @NonNull String packageName) { + checkCallerPermission(packageName); + try { if (!isApkVeritySupported()) { return false; @@ -77,14 +82,30 @@ public class FileIntegrityService extends SystemService { } } - private void enforceAnyCallingPermissions(String ...permissions) { - for (String permission : permissions) { - if (getContext().checkCallingPermission(permission) - == PackageManager.PERMISSION_GRANTED) { - return; - } + private void checkCallerPermission(String packageName) { + final int callingUid = Binder.getCallingUid(); + final int callingUserId = UserHandle.getUserId(callingUid); + final PackageManagerInternal packageManager = + LocalServices.getService(PackageManagerInternal.class); + final int packageUid = packageManager.getPackageUid( + packageName, 0 /*flag*/, callingUserId); + if (callingUid != packageUid) { + throw new SecurityException( + "Calling uid " + callingUid + " does not own package " + packageName); + } + + if (getContext().checkCallingPermission(android.Manifest.permission.INSTALL_PACKAGES) + == PackageManager.PERMISSION_GRANTED) { + return; + } + + final AppOpsManager appOpsManager = getContext().getSystemService(AppOpsManager.class); + final int mode = appOpsManager.checkOpNoThrow( + AppOpsManager.OP_REQUEST_INSTALL_PACKAGES, callingUid, packageName); + if (mode != AppOpsManager.MODE_ALLOWED) { + throw new SecurityException( + "Caller should have INSTALL_PACKAGES or REQUEST_INSTALL_PACKAGES"); } - throw new SecurityException("Insufficient permission"); } }; diff --git a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java index a9e8d3fc7a3a..06f2d65c13b2 100644 --- a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java +++ b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java @@ -108,6 +108,12 @@ import java.util.Set; public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddlewareService, Dumpable { private static final String TAG = "SoundTriggerMiddlewareValidation"; + private enum ModuleState { + ALIVE, + DETACHED, + DEAD + }; + private final @NonNull ISoundTriggerMiddlewareService mDelegate; private final @NonNull Context mContext; private Map<Integer, Set<ModuleService>> mModules; @@ -381,6 +387,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware private ISoundTriggerModule mDelegate; private @NonNull Map<Integer, ModelState> mLoadedModels = new HashMap<>(); private final int mHandle; + private ModuleState mState = ModuleState.ALIVE; ModuleService(int handle, @NonNull ISoundTriggerCallback callback) { mCallback = callback; @@ -406,7 +413,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware synchronized (SoundTriggerMiddlewareValidation.this) { // State validation. - if (mDelegate == null) { + if (mState == ModuleState.DETACHED) { throw new IllegalStateException("Module has been detached."); } @@ -430,7 +437,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware synchronized (SoundTriggerMiddlewareValidation.this) { // State validation. - if (mDelegate == null) { + if (mState == ModuleState.DETACHED) { throw new IllegalStateException("Module has been detached."); } @@ -453,7 +460,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware synchronized (SoundTriggerMiddlewareValidation.this) { // State validation. - if (mDelegate == null) { + if (mState == ModuleState.DETACHED) { throw new IllegalStateException("Module has been detached."); } ModelState modelState = mLoadedModels.get( @@ -486,7 +493,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware synchronized (SoundTriggerMiddlewareValidation.this) { // State validation. - if (mDelegate == null) { + if (mState == ModuleState.DETACHED) { throw new IllegalStateException("Module has been detached."); } ModelState modelState = mLoadedModels.get( @@ -520,7 +527,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware synchronized (SoundTriggerMiddlewareValidation.this) { // State validation. - if (mDelegate == null) { + if (mState == ModuleState.DETACHED) { throw new IllegalStateException("Module has been detached."); } ModelState modelState = mLoadedModels.get( @@ -549,7 +556,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware synchronized (SoundTriggerMiddlewareValidation.this) { // State validation. - if (mDelegate == null) { + if (mState == ModuleState.DETACHED) { throw new IllegalStateException("Module has been detached."); } ModelState modelState = mLoadedModels.get( @@ -577,7 +584,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware synchronized (SoundTriggerMiddlewareValidation.this) { // State validation. - if (mDelegate == null) { + if (mState == ModuleState.DETACHED) { throw new IllegalStateException("Module has been detached."); } ModelState modelState = mLoadedModels.get( @@ -605,7 +612,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware synchronized (SoundTriggerMiddlewareValidation.this) { // State validation. - if (mDelegate == null) { + if (mState == ModuleState.DETACHED) { throw new IllegalStateException("Module has been detached."); } ModelState modelState = mLoadedModels.get( @@ -634,7 +641,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware synchronized (SoundTriggerMiddlewareValidation.this) { // State validation. - if (mDelegate == null) { + if (mState == ModuleState.DETACHED) { throw new IllegalStateException("Module has been detached."); } ModelState modelState = mLoadedModels.get( @@ -663,10 +670,10 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware synchronized (SoundTriggerMiddlewareValidation.this) { // State validation. - if (mDelegate == null) { + if (mState == ModuleState.DETACHED) { throw new IllegalStateException("Module has already been detached."); } - if (!mLoadedModels.isEmpty()) { + if (mState == ModuleState.ALIVE && !mLoadedModels.isEmpty()) { throw new IllegalStateException("Cannot detach while models are loaded."); } @@ -682,13 +689,13 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware // Override toString() in order to have the delegate's ID in it. @Override public String toString() { - return mDelegate.toString(); + return Objects.toString(mDelegate.toString()); } private void detachInternal() { try { mDelegate.detach(); - mDelegate = null; + mState = ModuleState.DETACHED; mCallback.asBinder().unlinkToDeath(this, 0); mModules.get(mHandle).remove(this); } catch (RemoteException e) { @@ -697,13 +704,18 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware } void dump(PrintWriter pw) { - pw.printf("Loaded models for session %s (handle, active)", toString()); - pw.println(); - pw.println("-------------------------------"); - for (Map.Entry<Integer, ModelState> entry : mLoadedModels.entrySet()) { - pw.print(entry.getKey()); - pw.print('\t'); - pw.print(entry.getValue().activityState.name()); + if (mState == ModuleState.ALIVE) { + pw.printf("Loaded models for session %s (handle, active)", toString()); + pw.println(); + pw.println("-------------------------------"); + for (Map.Entry<Integer, ModelState> entry : mLoadedModels.entrySet()) { + pw.print(entry.getKey()); + pw.print('\t'); + pw.print(entry.getValue().activityState.name()); + pw.println(); + } + } else { + pw.printf("Session %s is dead", toString()); pw.println(); } } @@ -762,6 +774,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware public void onModuleDied() { synchronized (SoundTriggerMiddlewareValidation.this) { try { + mState = ModuleState.DEAD; mCallback.onModuleDied(); } catch (RemoteException e) { // Dead client will be handled by binderDied() - no need to handle here. diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java index 5e1be51bfed6..606c1bbfc982 100644 --- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java @@ -2840,44 +2840,6 @@ public class StatsPullAtomService extends SystemService { HistoricalOps histOps = ops.get(EXTERNAL_STATS_SYNC_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); processHistoricalOps(histOps, atomTag, pulledData); - - for (int uidIdx = 0; uidIdx < histOps.getUidCount(); uidIdx++) { - final HistoricalUidOps uidOps = histOps.getUidOpsAt(uidIdx); - final int uid = uidOps.getUid(); - for (int pkgIdx = 0; pkgIdx < uidOps.getPackageCount(); pkgIdx++) { - final HistoricalPackageOps packageOps = uidOps.getPackageOpsAt(pkgIdx); - for (int opIdx = 0; opIdx < packageOps.getOpCount(); opIdx++) { - final AppOpsManager.HistoricalOp op = packageOps.getOpAt(opIdx); - - StatsEvent.Builder e = StatsEvent.newBuilder(); - e.setAtomId(atomTag); - e.writeInt(uid); - e.writeString(packageOps.getPackageName()); - e.writeInt(op.getOpCode()); - e.writeLong(op.getForegroundAccessCount(OP_FLAGS_PULLED)); - e.writeLong(op.getBackgroundAccessCount(OP_FLAGS_PULLED)); - e.writeLong(op.getForegroundRejectCount(OP_FLAGS_PULLED)); - e.writeLong(op.getBackgroundRejectCount(OP_FLAGS_PULLED)); - e.writeLong(op.getForegroundAccessDuration(OP_FLAGS_PULLED)); - e.writeLong(op.getBackgroundAccessDuration(OP_FLAGS_PULLED)); - - String perm = AppOpsManager.opToPermission(op.getOpCode()); - if (perm == null) { - e.writeBoolean(false); - } else { - PermissionInfo permInfo; - try { - permInfo = mContext.getPackageManager().getPermissionInfo(perm, 0); - e.writeBoolean(permInfo.getProtection() == PROTECTION_DANGEROUS); - } catch (PackageManager.NameNotFoundException exception) { - e.writeBoolean(false); - } - } - - pulledData.add(e.build()); - } - } - } } catch (Throwable t) { // TODO: catch exceptions at a more granular level Slog.e(TAG, "Could not read appops", t); diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java index b051bab71f12..8ff2a1b6364b 100644 --- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java +++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java @@ -37,9 +37,9 @@ class TimeZoneDetectorShellCommand extends ShellCommand { } switch (cmd) { - case "suggestTelephonyTimeZone": + case "suggest_telephony_time_zone": return runSuggestTelephonyTimeZone(); - case "suggestManualTimeZone": + case "suggest_manual_time_zone": return runSuggestManualTimeZone(); default: { return handleDefaultCommands(cmd); @@ -105,9 +105,9 @@ class TimeZoneDetectorShellCommand extends ShellCommand { pw.println("Time Zone Detector (time_zone_detector) commands:"); pw.println(" help"); pw.println(" Print this help text."); - pw.println(" suggestTelephonyTimeZone"); + pw.println(" suggest_telephony_time_zone"); pw.println(" --suggestion <telephony suggestion opts>"); - pw.println(" suggestManualTimeZone"); + pw.println(" suggest_manual_time_zone"); pw.println(" --suggestion <manual suggestion opts>"); pw.println(); ManualTimeZoneSuggestion.printCommandLineOpts(pw); diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java index 0eb27cc5cff0..e0b3ad526f35 100644 --- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java +++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java @@ -22,9 +22,12 @@ import android.app.timezonedetector.TelephonyTimeZoneSuggestion; import java.io.PrintWriter; /** - * The interface for the class that implement the time detection algorithm used by the + * The interface for the class that implements the time detection algorithm used by the * {@link TimeZoneDetectorService}. * + * <p>The strategy uses suggestions to decide whether to modify the device's time zone setting + * and what to set it to. + * * <p>Most calls will be handled by a single thread but that is not true for all calls. For example * {@link #dump(PrintWriter, String[])}) may be called on a different thread so implementations must * handle thread safety. @@ -33,7 +36,9 @@ import java.io.PrintWriter; */ public interface TimeZoneDetectorStrategy { - /** Process the suggested manually-entered (i.e. user sourced) time zone. */ + /** + * Suggests a time zone for the device using manually-entered (i.e. user sourced) information. + */ void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion suggestion); /** @@ -41,8 +46,7 @@ public interface TimeZoneDetectorStrategy { * {@link TelephonyTimeZoneSuggestion#getZoneId()} is {@code null}. The suggestion is scoped to * a specific {@link TelephonyTimeZoneSuggestion#getSlotIndex() slotIndex}. * See {@link TelephonyTimeZoneSuggestion} for an explanation of the metadata associated with a - * suggestion. The strategy uses suggestions to decide whether to modify the device's time zone - * setting and what to set it to. + * suggestion. */ void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion suggestion); diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index 722d9f7e7c38..ddf166eb0bd5 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -2441,9 +2441,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub * the caller here writes new bitmap data. */ if (which == FLAG_SYSTEM && mLockWallpaperMap.get(userId) == null) { - if (DEBUG) { - Slog.i(TAG, "Migrating system->lock to preserve"); - } + Slog.i(TAG, "Migrating current wallpaper to be lock-only before" + + "updating system wallpaper"); migrateSystemToLockWallpaperLocked(userId); } @@ -2511,6 +2510,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub ParcelFileDescriptor fd = ParcelFileDescriptor.open(wallpaper.wallpaperFile, MODE_CREATE|MODE_READ_WRITE|MODE_TRUNCATE); if (!SELinux.restorecon(wallpaper.wallpaperFile)) { + Slog.w(TAG, "restorecon failed for wallpaper file: " + + wallpaper.wallpaperFile.getPath()); return null; } wallpaper.name = name; @@ -2520,10 +2521,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } // Nullify field to require new computation wallpaper.primaryColors = null; - if (DEBUG) { - Slog.v(TAG, "updateWallpaperBitmapLocked() : id=" + wallpaper.wallpaperId - + " name=" + name + " file=" + wallpaper.wallpaperFile.getName()); - } + Slog.v(TAG, "updateWallpaperBitmapLocked() : id=" + wallpaper.wallpaperId + + " name=" + name + " file=" + wallpaper.wallpaperFile.getName()); return fd; } catch (FileNotFoundException e) { Slog.w(TAG, "Error setting wallpaper", e); @@ -2556,7 +2555,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub WallpaperData wallpaper; synchronized (mLock) { - if (DEBUG) Slog.v(TAG, "setWallpaperComponent name=" + name); + Slog.v(TAG, "setWallpaperComponent name=" + name); wallpaper = mWallpaperMap.get(userId); if (wallpaper == null) { throw new IllegalStateException("Wallpaper not yet initialized for user " + userId); @@ -2571,6 +2570,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub if (mLockWallpaperMap.get(userId) == null) { // We're using the static imagery and there is no lock-specific image in place, // therefore it's a shared system+lock image that we need to migrate. + Slog.i(TAG, "Migrating current wallpaper to be lock-only before" + + "updating system wallpaper"); migrateSystemToLockWallpaperLocked(userId); } } diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 3477d82f4d71..62ec9366e137 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -2085,7 +2085,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A /** Returns true if this activity is opaque and fills the entire space of this task. */ boolean occludesParent() { - return mOccludesParent; + return !finishing && mOccludesParent; } boolean setOccludesParent(boolean occludesParent) { @@ -2504,7 +2504,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A final DisplayContent display = stack.getDisplay(); next = display.topRunningActivity(); if (next != null) { - display.positionStackAtTop(next.getRootTask(), + display.mTaskContainers.positionStackAtTop(next.getRootTask(), false /* includingParents */, "finish-display-top"); } } @@ -2679,7 +2679,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A final ActivityRecord next = display.topRunningActivity(); final boolean isLastStackOverEmptyHome = next == null && stack.isFocusedStackOnDisplay() - && display.getOrCreateRootHomeTask() != null; + && display.mTaskContainers.getOrCreateRootHomeTask() != null; if (isLastStackOverEmptyHome) { // Don't destroy activity immediately if this is the last activity on the display and // the display contains home stack. Although there is no next activity at the moment, @@ -3160,7 +3160,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } // Reset the last saved PiP snap fraction on removal. - mDisplayContent.mPinnedStackControllerLocked.resetReentryBounds(mActivityComponent); + mDisplayContent.mPinnedStackControllerLocked.onActivityHidden(mActivityComponent); mWmService.mEmbeddedWindowController.onActivityRemoved(this); mRemovingFromDisplay = false; } @@ -4426,7 +4426,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A ProtoLog.v(WM_DEBUG_ADD_REMOVE, "notifyAppStopped: %s", this); mAppStopped = true; // Reset the last saved PiP snap fraction on app stop. - mDisplayContent.mPinnedStackControllerLocked.resetReentryBounds(mActivityComponent); + mDisplayContent.mPinnedStackControllerLocked.onActivityHidden(mActivityComponent); destroySurfaces(); // Remove any starting window that was added for this app if they are still around. removeStartingWindow(); @@ -4477,7 +4477,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // case where this is the top activity in a pinned stack. final boolean isTop = this == stack.getTopNonFinishingActivity(); final boolean isTopNotPinnedStack = stack.isAttached() - && stack.getDisplay().isTopNotPinnedStack(stack); + && stack.getDisplay().mTaskContainers.isTopNotPinnedStack(stack); final boolean visibleIgnoringDisplayStatus = stack.checkKeyguardVisibility(this, visibleIgnoringKeyguard, isTop && isTopNotPinnedStack); @@ -5201,7 +5201,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } finishLaunchTickingLocked(); if (task != null) { - task.hasBeenVisible = true; + task.setHasBeenVisible(true); } } @@ -6651,17 +6651,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } } - void savePinnedStackBounds() { - // Leaving PiP to fullscreen, save the snap fraction based on the pre-animation bounds - // for the next re-entry into PiP (assuming the activity is not hidden or destroyed) - final ActivityStack pinnedStack = mDisplayContent.getRootPinnedTask(); - if (pinnedStack == null) return; - final Rect stackBounds = mTmpRect; - pinnedStack.getBounds(stackBounds); - mDisplayContent.mPinnedStackControllerLocked.saveReentryBounds( - mActivityComponent, stackBounds); - } - /** Returns true if the configuration is compatible with this activity. */ boolean isConfigurationCompatible(Configuration config) { final int orientation = getRequestedOrientation(); @@ -7389,7 +7378,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A */ boolean isResumedActivityOnDisplay() { final DisplayContent display = getDisplay(); - return display != null && this == display.getResumedActivity(); + return display != null && this == display.mTaskContainers.getResumedActivity(); } diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index fa0ad505f1a9..9815d6d0a53e 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -670,7 +670,7 @@ class ActivityStack extends Task { // Since always on top is only on when the stack is freeform or pinned, the state // can be toggled when the windowing mode changes. We must make sure the stack is // placed properly when always on top state changes. - display.positionStackAtTop(this, false /* includingParents */); + display.mTaskContainers.positionStackAtTop(this, false /* includingParents */); } } @@ -742,7 +742,7 @@ class ActivityStack extends Task { // Need to make sure windowing mode is supported. If we in the process of creating the stack // no need to resolve the windowing mode again as it is already resolved to the right mode. if (!creating) { - windowingMode = display.validateWindowingMode(windowingMode, + windowingMode = display.mTaskContainers.validateWindowingMode(windowingMode, null /* ActivityRecord */, topTask, getActivityType()); } if (display.getRootSplitScreenPrimaryTask() == this @@ -752,7 +752,8 @@ class ActivityStack extends Task { windowingMode = mRestoreOverrideWindowingMode; } - final boolean alreadyInSplitScreenMode = display.isSplitScreenModeActivated(); + final boolean alreadyInSplitScreenMode = display.mTaskContainers + .isSplitScreenModeActivated(); // Don't send non-resizeable notifications if the windowing mode changed was a side effect // of us entering split-screen mode. @@ -769,7 +770,7 @@ class ActivityStack extends Task { // warning toast about it. mAtmService.getTaskChangeNotificationController() .notifyActivityDismissingDockedStack(); - display.onSplitScreenModeDismissed(); + display.mTaskContainers.onSplitScreenModeDismissed(); } } @@ -861,7 +862,7 @@ class ActivityStack extends Task { // TODO (b/78247419): Fix the rotation animation from fullscreen to minimized mode final boolean isRecentsComponentHome = mAtmService.getRecentTasks().isRecentsComponentHomeActivity(mCurrentUser); - final ActivityStack recentStack = display.getOrCreateStack( + final ActivityStack recentStack = display.mTaskContainers.getOrCreateStack( WINDOWING_MODE_SPLIT_SCREEN_SECONDARY, isRecentsComponentHome ? ACTIVITY_TYPE_HOME : ACTIVITY_TYPE_RECENTS, true /* onTop */); @@ -1058,7 +1059,7 @@ class ActivityStack extends Task { // cutting between them. // TODO(b/70677280): This is a workaround until we can fix as part of b/70677280. final ActivityStack topFullScreenStack = - display.getTopStackInWindowingMode(WINDOWING_MODE_FULLSCREEN); + display.mTaskContainers.getTopStackInWindowingMode(WINDOWING_MODE_FULLSCREEN); if (topFullScreenStack != null) { final ActivityStack primarySplitScreenStack = display.getRootSplitScreenPrimaryTask(); if (primarySplitScreenStack != null && display.getIndexOf(topFullScreenStack) @@ -1071,11 +1072,11 @@ class ActivityStack extends Task { if (!isActivityTypeHome() && returnsToHomeStack()) { // Make sure the home stack is behind this stack since that is where we should return to // when this stack is no longer visible. - display.moveHomeStackToFront(reason + " returnToHome"); + display.mTaskContainers.moveHomeStackToFront(reason + " returnToHome"); } if (isRootTask()) { - display.positionStackAtTop(this, false /* includingParents */, reason); + display.mTaskContainers.positionStackAtTop(this, false /* includingParents */, reason); } if (task == null) { task = this; @@ -1092,7 +1093,7 @@ class ActivityStack extends Task { return; } - getDisplay().positionStackAtBottom(this, reason); + getDisplay().mTaskContainers.positionStackAtBottom(this, reason); if (task != null && task != this) { positionChildAtBottom(task); } @@ -1460,7 +1461,7 @@ class ActivityStack extends Task { boolean isTopStackOnDisplay() { final DisplayContent display = getDisplay(); - return display != null && display.isTopStack(this); + return display != null && display.mTaskContainers.isTopStack(this); } /** @@ -1667,7 +1668,8 @@ class ActivityStack extends Task { */ boolean isTopSplitScreenStack() { return inSplitScreenWindowingMode() - && this == getDisplay().getTopStackInWindowingMode(getWindowingMode()); + && this == getDisplay().mTaskContainers + .getTopStackInWindowingMode(getWindowingMode()); } /** @return True if the resizing of the primary-split-screen stack affects this stack size. */ @@ -1900,7 +1902,7 @@ class ActivityStack extends Task { // If the top activity is the resumed one, nothing to do. if (mResumedActivity == next && next.isState(RESUMED) - && display.allResumedActivitiesComplete()) { + && display.mTaskContainers.allResumedActivitiesComplete()) { // Make sure we have executed any pending transitions, since there // should be nothing left to do at this point. executeAppTransition(options); @@ -1979,7 +1981,7 @@ class ActivityStack extends Task { mStackSupervisor.setLaunchSource(next.info.applicationInfo.uid); ActivityRecord lastResumed = null; - final ActivityStack lastFocusedStack = display.getLastFocusedStack(); + final ActivityStack lastFocusedStack = display.mTaskContainers.getLastFocusedStack(); if (lastFocusedStack != null && lastFocusedStack != this) { // So, why aren't we using prev here??? See the param comment on the method. prev doesn't // represent the last resumed activity. However, the last focus stack does if it isn't null. @@ -1993,7 +1995,7 @@ class ActivityStack extends Task { } } - boolean pausing = display.pauseBackStacks(userLeaving, next); + boolean pausing = display.mTaskContainers.pauseBackStacks(userLeaving, next); if (mResumedActivity != null) { if (DEBUG_STATES) Slog.d(TAG_STATES, "resumeTopActivityLocked: Pausing " + mResumedActivity); @@ -2022,7 +2024,7 @@ class ActivityStack extends Task { } return true; } else if (mResumedActivity == next && next.isState(RESUMED) - && display.allResumedActivitiesComplete()) { + && display.mTaskContainers.allResumedActivitiesComplete()) { // It is possible for the activity to be resumed when we paused back stacks above if the // next activity doesn't have to wait for pause to complete. // So, nothing else to-do except: @@ -2342,8 +2344,7 @@ class ActivityStack extends Task { if (!newTask && isOrhasTask) { // Starting activity cannot be occluding activity, otherwise starting window could be // remove immediately without transferring to starting activity. - final ActivityRecord occludingActivity = getActivity( - (ar) -> !ar.finishing && ar.occludesParent(), true, r); + final ActivityRecord occludingActivity = getOccludingActivityAbove(r); if (occludingActivity != null) { // Here it is! Now, if this is not yet visible (occluded by another task) to the // user, then just add it without starting; it will get started when the user @@ -2543,7 +2544,7 @@ class ActivityStack extends Task { if (stack.isActivityTypeHome() && (top == null || !top.mVisibleRequested)) { // If we will be focusing on the home stack next and its current top activity isn't // visible, then use the move the home stack task to top to make the activity visible. - stack.getDisplay().moveHomeActivityToTop(reason); + stack.getDisplay().mTaskContainers.moveHomeActivityToTop(reason); return stack; } @@ -3069,6 +3070,14 @@ class ActivityStack extends Task { task.setOverrideDisplayedBounds(bounds == null || bounds.isEmpty() ? null : bounds); } + /** + * Returns the top-most activity that occludes the given one, or @{code null} if none. + */ + @Nullable + private ActivityRecord getOccludingActivityAbove(ActivityRecord activity) { + return getActivity((ar) -> ar.occludesParent(), true /* traverseTopToBottom */, activity); + } + boolean willActivityBeVisible(IBinder token) { final ActivityRecord r = ActivityRecord.forTokenLocked(token); if (r == null) { @@ -3076,9 +3085,7 @@ class ActivityStack extends Task { } // See if there is an occluding activity on-top of this one. - final ActivityRecord occludingActivity = getActivity((ar) -> - ar.occludesParent() && !ar.finishing, - r, false /*includeBoundary*/, true /*traverseTopToBottom*/); + final ActivityRecord occludingActivity = getOccludingActivityAbove(r); if (occludingActivity != null) return false; if (r.finishing) Slog.e(TAG, "willActivityBeVisible: Returning false," @@ -3299,7 +3306,7 @@ class ActivityStack extends Task { final boolean wasResumed = topRunningActivity == task.getStack().mResumedActivity; boolean toTop = position >= getChildCount(); - boolean includingParents = toTop || getDisplay().getNextFocusableStack(this, + boolean includingParents = toTop || getDisplay().mTaskContainers.getNextFocusableStack(this, true /* ignoreCurrent */) == null; if (WindowManagerDebugConfig.DEBUG_STACK) { Slog.i(TAG_WM, "positionChildAt: positioning task=" + task + " at " + position); @@ -3343,7 +3350,7 @@ class ActivityStack extends Task { // always on top windows. Since the position the stack should be inserted into is calculated // properly in {@link DisplayContent#getTopInsertPosition()} in both cases, we can just // request that the stack is put at top here. - display.positionStackAtTop(this, false /* includingParents */); + display.mTaskContainers.positionStackAtTop(this, false /* includingParents */); } /** NOTE: Should only be called from {@link Task#reparent}. */ @@ -3384,17 +3391,11 @@ class ActivityStack extends Task { "Can't exit pinned mode if it's not pinned already."); } - // give pinned stack a chance to save current bounds, this should happen before reparent. - final ActivityRecord top = topRunningNonOverlayTaskActivity(); - if (top != null && top.isVisible()) { - top.savePinnedStackBounds(); - } - mWmService.inSurfaceTransaction(() -> { final Task task = getBottomMostTask(); setWindowingMode(WINDOWING_MODE_UNDEFINED); - getDisplay().positionStackAtTop(this, false /* includingParents */); + getDisplay().mTaskContainers.positionStackAtTop(this, false /* includingParents */); mStackSupervisor.scheduleUpdatePictureInPictureModeIfNeeded(task, this); MetricsLoggerWrapper.logPictureInPictureFullScreen(mAtmService.mContext, @@ -3514,7 +3515,7 @@ class ActivityStack extends Task { // If there are other focusable stacks on the display, the z-order of the display should not // be changed just because a task was placed at the bottom. E.g. if it is moving the topmost // task to bottom, the next focusable stack on the same display should be focused. - final ActivityStack nextFocusableStack = getDisplay().getNextFocusableStack( + final ActivityStack nextFocusableStack = getDisplay().mTaskContainers.getNextFocusableStack( child.getStack(), true /* ignoreCurrent */); positionChildAtBottom(child, nextFocusableStack == null /* includingParents */); child.updateTaskMovement(true); diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java index 4652f49f116c..aed1d95e1ef0 100644 --- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java @@ -414,14 +414,15 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { if (mToDisplay.getDisplayId() != stack.getDisplayId()) { mToDisplay.moveStackToDisplay(stack, mOnTop); } else if (mOnTop) { - mToDisplay.positionStackAtTop(stack, false /* includingParents */); + mToDisplay.mTaskContainers.positionStackAtTop(stack, + false /* includingParents */); } else { - mToDisplay.positionStackAtBottom(stack); + mToDisplay.mTaskContainers.positionStackAtBottom(stack); } return; } - final ActivityStack toStack = mToDisplay.getOrCreateStack( + final ActivityStack toStack = mToDisplay.mTaskContainers.getOrCreateStack( null, mTmpOptions, task, task.getActivityType(), mOnTop); if (task == toStack) { // The task was reused as the root task. @@ -1458,7 +1459,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { || (focusedStack != null && focusedStack.isActivityTypeRecents())) { // We move home stack to front when we are on a fullscreen display and caller has // requested the home activity to move with it. Or the previous stack is recents. - display.moveHomeStackToFront(reason); + display.mTaskContainers.moveHomeStackToFront(reason); } } @@ -1877,7 +1878,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { mStoppingActivities.remove(r); final ActivityStack stack = r.getRootTask(); - if (stack.getDisplay().allResumedActivitiesComplete()) { + if (stack.getDisplay().mTaskContainers.allResumedActivitiesComplete()) { mRootWindowContainer.ensureActivitiesVisible(null, 0, !PRESERVE_WINDOWS); // Make sure activity & window visibility should be identical // for all displays in this stage. @@ -2008,6 +2009,8 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { pw.println(); pw.println("ActivityStackSupervisor state:"); mRootWindowContainer.dump(pw, prefix); + getKeyguardController().dump(pw, prefix); + mService.getLockTaskController().dump(pw, prefix); pw.print(prefix); pw.println("mCurTaskIdForUser=" + mCurTaskIdForUser); pw.println(prefix + "mUserStackInFront=" + mRootWindowContainer.mUserStackInFront); @@ -2018,10 +2021,8 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { } } pw.print(prefix); pw.print("isHomeRecentsComponent="); - pw.print(mRecentTasks.isRecentsComponentHomeActivity(mRootWindowContainer.mCurrentUser)); - - getKeyguardController().dump(pw, prefix); - mService.getLockTaskController().dump(pw, prefix); + pw.println(mRecentTasks.isRecentsComponentHomeActivity(mRootWindowContainer.mCurrentUser)); + pw.println(); } static boolean printThisActivity(PrintWriter pw, ActivityRecord activity, String dumpPackage, @@ -2241,7 +2242,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { final boolean isSecondaryDisplayPreferred = (preferredDisplayId != DEFAULT_DISPLAY && preferredDisplayId != INVALID_DISPLAY); final boolean inSplitScreenMode = actualStack != null - && actualStack.getDisplay().isSplitScreenModeActivated(); + && actualStack.getDisplay().mTaskContainers.isSplitScreenModeActivated(); if (((!inSplitScreenMode && preferredWindowingMode != WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) && !isSecondaryDisplayPreferred) || !task.isActivityTypeStandardOrUndefined()) { return; @@ -2289,12 +2290,12 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { // Dismiss docked stack. If task appeared to be in docked stack but is not resizable - // we need to move it to top of fullscreen stack, otherwise it will be covered. final DisplayContent display = task.getStack().getDisplay(); - if (display.isSplitScreenModeActivated()) { + if (display.mTaskContainers.isSplitScreenModeActivated()) { // Display a warning toast that we tried to put an app that doesn't support // split-screen in split-screen. mService.getTaskChangeNotificationController() .notifyActivityDismissingDockedStack(); - display.onSplitScreenModeDismissed(); + display.mTaskContainers.onSplitScreenModeDismissed(); display.ensureActivitiesVisible(null, 0, PRESERVE_WINDOWS, true /* notifyClients */); } @@ -2612,7 +2613,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { // from whatever is started from the recents activity, so move the home stack // forward. // TODO (b/115289124): Multi-display supports for recents. - mRootWindowContainer.getDefaultDisplay().moveHomeStackToFront( + mRootWindowContainer.getDefaultDisplay().mTaskContainers.moveHomeStackToFront( "startActivityFromRecents"); } diff --git a/services/core/java/com/android/server/wm/ActivityStartController.java b/services/core/java/com/android/server/wm/ActivityStartController.java index 881dc81807f5..0a0049d1550d 100644 --- a/services/core/java/com/android/server/wm/ActivityStartController.java +++ b/services/core/java/com/android/server/wm/ActivityStartController.java @@ -190,8 +190,8 @@ public class ActivityStartController { final ActivityStack homeStack; try { // Make sure home stack exist on display. - homeStack = display.getOrCreateStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, - ON_TOP); + homeStack = display.mTaskContainers.getOrCreateStack(WINDOWING_MODE_FULLSCREEN, + ACTIVITY_TYPE_HOME, ON_TOP); } finally { mSupervisor.endDeferResume(); } diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index a5b0026398b6..7e999c65c010 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -32,7 +32,6 @@ import static android.app.ActivityManagerInternal.ALLOW_NON_FULL; import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.ActivityTaskManager.RESIZE_MODE_PRESERVE_WINDOW; import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; @@ -2358,7 +2357,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } // Convert some windowing-mode changes into root-task reparents for split-screen. if (stack.inSplitScreenWindowingMode()) { - stack.getDisplay().onSplitScreenModeDismissed(); + stack.getDisplay().mTaskContainers.onSplitScreenModeDismissed(); } else { stack.setWindowingMode(windowingMode); @@ -2615,13 +2614,16 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { @Override public List<ActivityManager.RunningTaskInfo> getTasks(int maxNum) { - return getFilteredTasks(maxNum, ACTIVITY_TYPE_UNDEFINED, WINDOWING_MODE_UNDEFINED); + return getFilteredTasks(maxNum, false /* filterForVisibleRecents */); } + /** + * @param filterOnlyVisibleRecents whether to filter the tasks based on whether they would ever + * be visible in the recent task list in systemui + */ @Override public List<ActivityManager.RunningTaskInfo> getFilteredTasks(int maxNum, - @WindowConfiguration.ActivityType int ignoreActivityType, - @WindowConfiguration.WindowingMode int ignoreWindowingMode) { + boolean filterOnlyVisibleRecents) { final int callingUid = Binder.getCallingUid(); final int callingPid = Binder.getCallingPid(); final boolean crossUser = isCrossUserAllowed(callingPid, callingUid); @@ -2637,8 +2639,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { if (DEBUG_ALL) Slog.v(TAG, "getTasks: max=" + maxNum); final boolean allowed = isGetTasksAllowed("getTasks", callingPid, callingUid); - mRootWindowContainer.getRunningTasks(maxNum, list, ignoreActivityType, - ignoreWindowingMode, callingUid, allowed, crossUser, callingProfileIds); + mRootWindowContainer.getRunningTasks(maxNum, list, filterOnlyVisibleRecents, callingUid, + allowed, crossUser, callingProfileIds); } return list; @@ -2773,7 +2775,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } if (toTop) { - display.positionStackAt(POSITION_TOP, primarySplitTask, false /* includingParents */); + display.mTaskContainers.positionStackAt(POSITION_TOP, primarySplitTask, + false /* includingParents */); } WindowContainerTransaction wct = new WindowContainerTransaction(); wct.reparent(task.getStack().mRemoteToken, primarySplitTask.mRemoteToken, toTop); @@ -3242,8 +3245,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } final ActivityStack stack = r.getRootTask(); - final Task task = stack.getDisplay().createStack(stack.getWindowingMode(), - stack.getActivityType(), !ON_TOP, ainfo, intent, + final Task task = stack.getDisplay().mTaskContainers.createStack( + stack.getWindowingMode(), stack.getActivityType(), !ON_TOP, ainfo, intent, false /* createdByOrganizer */); if (!mRecentTasks.addToBottom(task)) { @@ -3306,10 +3309,10 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { throw new IllegalArgumentException("resizeTask not allowed on task=" + task); } if (bounds == null && stack.getWindowingMode() == WINDOWING_MODE_FREEFORM) { - stack = stack.getDisplay().getOrCreateStack( + stack = stack.getDisplay().mTaskContainers.getOrCreateStack( WINDOWING_MODE_FULLSCREEN, stack.getActivityType(), ON_TOP); } else if (bounds != null && stack.getWindowingMode() != WINDOWING_MODE_FREEFORM) { - stack = stack.getDisplay().getOrCreateStack( + stack = stack.getDisplay().mTaskContainers.getOrCreateStack( WINDOWING_MODE_FREEFORM, stack.getActivityType(), ON_TOP); } @@ -3984,35 +3987,6 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } - /** - * Dismisses Pip - * @param animate True if the dismissal should be animated. - * @param animationDuration The duration of the resize animation in milliseconds or -1 if the - * default animation duration should be used. - */ - @Override - public void dismissPip(boolean animate, int animationDuration) { - enforceCallerIsRecentsOrHasPermission(MANAGE_ACTIVITY_STACKS, "dismissPip()"); - final long ident = Binder.clearCallingIdentity(); - try { - synchronized (mGlobalLock) { - final ActivityStack stack = - mRootWindowContainer.getDefaultDisplay().getRootPinnedTask(); - if (stack == null) { - Slog.w(TAG, "dismissPip: pinned stack not found."); - return; - } - if (stack.getWindowingMode() != WINDOWING_MODE_PINNED) { - throw new IllegalArgumentException("Stack: " + stack - + " doesn't support animated resize."); - } - stack.dismissPip(); - } - } finally { - Binder.restoreCallingIdentity(ident); - } - } - @Override public void suppressResizeConfigChanges(boolean suppress) throws RemoteException { mAmInternal.enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "suppressResizeConfigChanges()"); @@ -5004,6 +4978,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } printedAnything = true; mStackSupervisor.dump(pw, " "); + mTaskOrganizerController.dump(pw, " "); } if (!printedAnything) { diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java index 6a47c9e217f8..654ccc80f8a8 100644 --- a/services/core/java/com/android/server/wm/AppTransitionController.java +++ b/services/core/java/com/android/server/wm/AppTransitionController.java @@ -618,6 +618,7 @@ public class AppTransitionController { Animation anim = mService.mPolicy.createKeyguardWallpaperExit( (flags & TRANSIT_FLAG_KEYGUARD_GOING_AWAY_TO_SHADE) != 0); if (anim != null) { + anim.scaleCurrentDuration(mService.getTransitionAnimationScaleLocked()); mDisplayContent.mWallpaperController.startWallpaperAnimation(anim); } } diff --git a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java index 0ec0c7b53875..3c083e17931d 100644 --- a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java @@ -19,8 +19,6 @@ package com.android.server.wm; import android.content.res.Resources; import android.text.TextUtils; -import com.android.server.wm.DisplayContent.TaskContainers; - /** * Policy that manages DisplayAreas. */ diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 068a434eae77..4a7edee7beac 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -17,23 +17,17 @@ package com.android.server.wm; import static android.app.ActivityTaskManager.INVALID_TASK_ID; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.ROTATION_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; -import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; -import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; -import static android.app.WindowConfiguration.isSplitScreenWindowingMode; -import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; -import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_USER; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.content.res.Configuration.ORIENTATION_PORTRAIT; @@ -67,7 +61,6 @@ import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFI import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_BOOT_PROGRESS; -import static android.view.WindowManager.LayoutParams.TYPE_DREAM; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; @@ -79,17 +72,12 @@ import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER; import static android.view.WindowManager.TRANSIT_ACTIVITY_OPEN; import static android.view.WindowManager.TRANSIT_TASK_OPEN; import static android.view.WindowManager.TRANSIT_TASK_TO_FRONT; -import static android.window.WindowOrganizer.DisplayAreaOrganizer.FEATURE_TASK_CONTAINER; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_CONFIG; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; import static com.android.server.wm.ActivityStack.ActivityState.RESUMED; -import static com.android.server.wm.ActivityStack.STACK_VISIBILITY_VISIBLE; -import static com.android.server.wm.ActivityStackSupervisor.TAG_TASKS; -import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_STATES; -import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_TASKS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_STACK; import static com.android.server.wm.DisplayContentProto.APP_TRANSITION; import static com.android.server.wm.DisplayContentProto.CLOSING_APPS; @@ -108,14 +96,12 @@ import static com.android.server.wm.DisplayContentProto.ROTATION; import static com.android.server.wm.DisplayContentProto.SCREEN_ROTATION_ANIMATION; import static com.android.server.wm.DisplayContentProto.SINGLE_TASK_INSTANCE; import static com.android.server.wm.DisplayContentProto.WINDOW_CONTAINER; -import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ADD_REMOVE; import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS; import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_FOCUS; import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_FOCUS_LIGHT; import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ORIENTATION; import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_SCREEN_ON; import static com.android.server.wm.ProtoLogGroup.WM_SHOW_TRANSACTIONS; -import static com.android.server.wm.RootWindowContainer.TAG_STATES; import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS; import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION; import static com.android.server.wm.WindowContainerChildProto.DISPLAY_CONTENT; @@ -155,13 +141,9 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; import android.app.ActivityManagerInternal; -import android.app.ActivityOptions; -import android.app.WindowConfiguration; import android.content.Context; -import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo.ScreenOrientation; -import android.content.pm.ApplicationInfo; import android.content.res.CompatibilityInfo; import android.content.res.Configuration; import android.graphics.Bitmap; @@ -216,7 +198,6 @@ import android.view.ViewRootImpl; import android.view.WindowInsets; import android.view.WindowManager; import android.view.WindowManagerPolicyConstants.PointerEventListener; -import android.window.WindowContainerTransaction; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; @@ -289,7 +270,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo /** The containers below are the only child containers {@link #mWindowContainers} can have. */ // Contains all window containers that are related to apps (Activities) - private final TaskContainers mTaskContainers = new TaskContainers(mWmService); + final TaskContainers mTaskContainers = new TaskContainers(this, mWmService); // Contains all IME window containers. Note that the z-ordering of the IME windows will depend // on the IME target. We mainly have this container grouping so we can keep track of all the IME @@ -456,8 +437,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo private final Configuration mTmpConfiguration = new Configuration(); - private ArrayList<Task> mTmpTasks = new ArrayList<>(); - /** Remove this display when animation on it has completed. */ private boolean mDeferredRemoval; @@ -579,10 +558,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo // Last systemUiVisibility we dispatched to windows. private int mLastDispatchedSystemUiVisibility = 0; - private final ArrayList<ActivityStack> mTmpAlwaysOnTopStacks = new ArrayList<>(); - private final ArrayList<ActivityStack> mTmpNormalStacks = new ArrayList<>(); - private final ArrayList<ActivityStack> mTmpHomeStacks = new ArrayList<>(); - /** Corner radius that windows should have in order to match the display. */ private final float mWindowCornerRadius; @@ -624,7 +599,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo private boolean mRemoved; /** The display can only contain one task. */ - private boolean mSingleTaskInstance; + boolean mSingleTaskInstance; /** * Non-null if the last size compatibility mode activity is using non-native screen @@ -640,13 +615,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo */ private ActivityStack mPreferredTopFocusableStack; - /** - * If this is the same as {@link #getFocusedStack} then the activity on the top of the focused - * stack has been resumed. If stacks are changing position this will hold the old stack until - * the new stack becomes resumed after which it will be set to current focused stack. - */ - private ActivityStack mLastFocusedStack; - // Used in updating the display size private Point mTmpDisplaySize = new Point(); @@ -766,11 +734,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo if (mTmpInitial) { w.resetContentChanged(); } - if (w.mAttrs.type == TYPE_DREAM) { - // Don't layout windows behind a dream, so that if it does stuff like hide - // the status bar we won't get a bad transition when it goes away. - mTmpWindow = w; - } w.mLayoutNeeded = false; w.prelayout(); final boolean firstLayout = !w.isLaidOut(); @@ -824,10 +787,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo + " mContainingFrame=" + w.getContainingFrame() + " mDisplayFrame=" + w.getDisplayFrameLw()); } - } else if (w.mAttrs.type == TYPE_DREAM) { - // Don't layout windows behind a dream, so that if it does stuff like hide the - // status bar we won't get a bad transition when it goes away. - mTmpWindow = mTmpWindow2; } }; @@ -911,17 +870,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo // Take care of the window being ready to display. final boolean committed = winAnimator.commitFinishDrawingLocked(); if (isDefaultDisplay && committed) { - if (w.mAttrs.type == TYPE_DREAM) { - // HACK: When a dream is shown, it may at that point hide the lock screen. - // So we need to redo the layout to let the phone window manager make this - // happen. - pendingLayoutChanges |= FINISH_LAYOUT_REDO_LAYOUT; - if (DEBUG_LAYOUT_REPEATS) { - surfacePlacer.debugLayoutRepeats( - "dream and commitFinishDrawingLocked true", - pendingLayoutChanges); - } - } if ((w.mAttrs.flags & FLAG_SHOW_WALLPAPER) != 0) { if (DEBUG_WALLPAPER_LIGHT) Slog.v(TAG, "First draw done in potential wallpaper target " + w); @@ -1317,8 +1265,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo if (mDisplayRotation.isWaitingForRemoteRotation()) { return; } - // Clear the record because the display will sync to current rotation. - mFixedRotationLaunchingApp = null; final boolean configUpdated = updateDisplayOverrideConfigurationLocked(); if (configUpdated) { @@ -1509,7 +1455,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo startFixedRotationTransform(r, rotation); mAppTransition.registerListenerLocked(new WindowManagerInternal.AppTransitionListener() { void done() { - r.clearFixedRotationTransform(); + r.finishFixedRotationTransform(); mAppTransition.unregisterListener(this); } @@ -1538,7 +1484,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo if (token != mFixedRotationLaunchingApp) { return false; } - if (updateOrientation()) { + // Update directly because the app which will change the orientation of display is ready. + if (mDisplayRotation.updateOrientation(getOrientation(), false /* forceUpdate */)) { sendNewConfiguration(); return true; } @@ -1584,7 +1531,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo * @param oldRotation the rotation we are coming from. * @param rotation the rotation to apply. */ - void applyRotationLocked(final int oldRotation, final int rotation) { + private void applyRotation(final int oldRotation, final int rotation) { mDisplayRotation.applyCurrentRotation(rotation); final boolean rotateSeamlessly = mDisplayRotation.isRotatingSeamlessly(); final Transaction transaction = getPendingTransaction(); @@ -2124,30 +2071,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo return mTaskContainers.getRootHomeTask(); } - /** - * Returns the existing home stack or creates and returns a new one if it should exist for the - * display. - */ - @Nullable - ActivityStack getOrCreateRootHomeTask() { - ActivityStack homeTask = getRootHomeTask(); - if (homeTask == null && supportsSystemDecorations() && !isUntrustedVirtualDisplay()) { - homeTask = createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, - false /* onTop */); - } - return homeTask; - } - /** @return The primary split-screen task, and {@code null} otherwise. */ @Nullable ActivityStack getRootSplitScreenPrimaryTask() { return mTaskContainers.getRootSplitScreenPrimaryTask(); } - boolean isSplitScreenModeActivated() { - Task task = getRootSplitScreenPrimaryTask(); - return task != null && task.hasChild(); - } - ActivityStack getRootPinnedTask() { return mTaskContainers.getRootPinnedTask(); } @@ -2157,14 +2085,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } /** - * Returns the topmost stack on the display that is compatible with the input windowing mode. - * Null is no compatible stack on the display. - */ - ActivityStack getTopStackInWindowingMode(int windowingMode) { - return getStack(windowingMode, ACTIVITY_TYPE_UNDEFINED); - } - - /** * Returns the topmost stack on the display that is compatible with the input windowing mode and * activity type. Null is no compatible stack on the display. */ @@ -2540,11 +2460,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo positionDisplayAt(position, includingParents); } - void positionStackAt(int position, ActivityStack child, boolean includingParents) { - mTaskContainers.positionChildAt(position, child, includingParents); - layoutAndAssignWindowLayersIfNeeded(); - } - /** * Returns true if the input point is within an app window. */ @@ -2612,7 +2527,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } amendWindowTapExcludeRegion(mTouchExcludeRegion); // TODO(multi-display): Support docked stacks on secondary displays. - if (mDisplayId == DEFAULT_DISPLAY && isSplitScreenModeActivated()) { + if (mDisplayId == DEFAULT_DISPLAY && mTaskContainers.isSplitScreenModeActivated()) { mDividerControllerLocked.getTouchRegion(mTmpRect); mTmpRegion.set(mTmpRect); mTouchExcludeRegion.op(mTmpRegion, Op.UNION); @@ -2876,7 +2791,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo final ActivityStack focusedStack = getFocusedStack(); if (focusedStack != null) { proto.write(FOCUSED_ROOT_TASK_ID, focusedStack.getRootTaskId()); - final ActivityRecord focusedActivity = focusedStack.getDisplay().getResumedActivity(); + final ActivityRecord focusedActivity = focusedStack.getDisplay().mTaskContainers + .getResumedActivity(); if (focusedActivity != null) { focusedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY); } @@ -2937,8 +2853,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo if (mPreferredTopFocusableStack != null) { pw.println(prefix + "mPreferredTopFocusableStack=" + mPreferredTopFocusableStack); } - if (mLastFocusedStack != null) { - pw.println(prefix + "mLastFocusedStack=" + mLastFocusedStack); + if (mTaskContainers.mLastFocusedStack != null) { + pw.println(prefix + "mLastFocusedStack=" + mTaskContainers.mLastFocusedStack); } if (mLosingFocus.size() > 0) { pw.println(); @@ -3022,6 +2938,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo if (recentsStack != null) { pw.println(prefix + "recentsStack=" + recentsStack.getName()); } + final ActivityStack dreamStack = + getStack(WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_DREAM); + if (dreamStack != null) { + pw.println(prefix + "dreamStack=" + dreamStack.getName()); + } pw.println(); mPinnedStackControllerLocked.dump(prefix, pw); @@ -3049,7 +2970,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo /** Returns true if the stack in the windowing mode is visible. */ boolean isStackVisible(int windowingMode) { - final ActivityStack stack = getTopStackInWindowingMode(windowingMode); + final ActivityStack stack = mTaskContainers.getTopStackInWindowingMode(windowingMode); return stack != null && stack.isVisible(); } @@ -3210,7 +3131,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo if (mode == UPDATE_FOCUS_PLACING_SURFACES) { performLayout(true /*initial*/, updateInputWindows); } else if (mode == UPDATE_FOCUS_REMOVING_FOCUS) { - mWmService.mRoot.performSurfacePlacement(false); + mWmService.mRoot.performSurfacePlacement(); } } @@ -3847,7 +3768,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } // TODO: Super crazy long method that should be broken down... - void applySurfaceChangesTransaction(boolean recoveringMemory) { + void applySurfaceChangesTransaction() { final WindowSurfacePlacer surfacePlacer = mWmService.mWindowPlacerLocked; mTmpUpdateAllDrawn.clear(); @@ -4276,531 +4197,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } } - /** - * Window container class that contains all containers on this display relating to Apps. - * I.e Activities. - */ - final class TaskContainers extends DisplayArea<ActivityStack> { - /** - * A control placed at the appropriate level for transitions to occur. - */ - SurfaceControl mAppAnimationLayer = null; - SurfaceControl mBoostedAppAnimationLayer = null; - SurfaceControl mHomeAppAnimationLayer = null; - - /** - * Given that the split-screen divider does not have an AppWindowToken, it - * will have to live inside of a "NonAppWindowContainer". However, in visual Z order - * it will need to be interleaved with some of our children, appearing on top of - * both docked stacks but underneath any assistant stacks. - * - * To solve this problem we have this anchor control, which will always exist so - * we can always assign it the correct value in our {@link #assignChildLayers}. - * Likewise since it always exists, we can always - * assign the divider a layer relative to it. This way we prevent linking lifecycle - * events between tasks and the divider window. - */ - SurfaceControl mSplitScreenDividerAnchor = null; - - // Cached reference to some special tasks we tend to get a lot so we don't need to loop - // through the list to find them. - private ActivityStack mRootHomeTask = null; - private ActivityStack mRootPinnedTask = null; - private ActivityStack mRootSplitScreenPrimaryTask = null; - - TaskContainers(WindowManagerService service) { - super(service, Type.ANY, "TaskContainers", FEATURE_TASK_CONTAINER); - } - - /** - * Returns the topmost stack on the display that is compatible with the input windowing mode - * and activity type. Null is no compatible stack on the display. - */ - ActivityStack getStack(int windowingMode, int activityType) { - if (activityType == ACTIVITY_TYPE_HOME) { - return mRootHomeTask; - } - if (windowingMode == WINDOWING_MODE_PINNED) { - return mRootPinnedTask; - } else if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) { - return mRootSplitScreenPrimaryTask; - } - for (int i = mTaskContainers.getChildCount() - 1; i >= 0; --i) { - final ActivityStack stack = mTaskContainers.getChildAt(i); - if (activityType == ACTIVITY_TYPE_UNDEFINED - && windowingMode == stack.getWindowingMode()) { - // Passing in undefined type means we want to match the topmost stack with the - // windowing mode. - return stack; - } - if (stack.isCompatible(windowingMode, activityType)) { - return stack; - } - } - return null; - } - - @VisibleForTesting - ActivityStack getTopStack() { - final int count = mTaskContainers.getChildCount(); - return count > 0 ? mTaskContainers.getChildAt(count - 1) : null; - } - - int getIndexOf(ActivityStack stack) { - return mTaskContainers.mChildren.indexOf(stack); - } - - ActivityStack getRootHomeTask() { - return mRootHomeTask; - } - - ActivityStack getRootPinnedTask() { - return mRootPinnedTask; - } - - ActivityStack getRootSplitScreenPrimaryTask() { - return mRootSplitScreenPrimaryTask; - } - - ArrayList<Task> getVisibleTasks() { - final ArrayList<Task> visibleTasks = new ArrayList<>(); - forAllTasks(task -> { - if (task.isLeafTask() && task.isVisible()) { - visibleTasks.add(task); - } - }); - return visibleTasks; - } - - void onStackWindowingModeChanged(ActivityStack stack) { - removeStackReferenceIfNeeded(stack); - addStackReferenceIfNeeded(stack); - if (stack == mRootPinnedTask && getTopStack() != stack) { - // Looks like this stack changed windowing mode to pinned. Move it to the top. - positionChildAt(POSITION_TOP, stack, false /* includingParents */); - } - } - - private void addStackReferenceIfNeeded(ActivityStack stack) { - if (stack.isActivityTypeHome()) { - if (mRootHomeTask != null) { - if (!stack.isDescendantOf(mRootHomeTask)) { - throw new IllegalArgumentException("addStackReferenceIfNeeded: home stack=" - + mRootHomeTask + " already exist on display=" + this - + " stack=" + stack); - } - } else { - mRootHomeTask = stack; - } - } - - if (!stack.isRootTask()) { - return; - } - final int windowingMode = stack.getWindowingMode(); - if (windowingMode == WINDOWING_MODE_PINNED) { - if (mRootPinnedTask != null) { - throw new IllegalArgumentException( - "addStackReferenceIfNeeded: pinned stack=" + mRootPinnedTask - + " already exist on display=" + this + " stack=" + stack); - } - mRootPinnedTask = stack; - } else if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) { - if (mRootSplitScreenPrimaryTask != null) { - throw new IllegalArgumentException( - "addStackReferenceIfNeeded: split screen primary stack=" - + mRootSplitScreenPrimaryTask - + " already exist on display=" + this + " stack=" + stack); - } - mRootSplitScreenPrimaryTask = stack; - } - } - - void removeStackReferenceIfNeeded(ActivityStack stack) { - if (stack == mRootHomeTask) { - mRootHomeTask = null; - } else if (stack == mRootPinnedTask) { - mRootPinnedTask = null; - } else if (stack == mRootSplitScreenPrimaryTask) { - mRootSplitScreenPrimaryTask = null; - } - } - - @Override - void addChild(ActivityStack stack, int position) { - addStackReferenceIfNeeded(stack); - position = findPositionForStack(position, stack, true /* adding */); - - super.addChild(stack, position); - mAtmService.updateSleepIfNeededLocked(); - - // The reparenting case is handled in WindowContainer. - if (!stack.mReparenting) { - setLayoutNeeded(); - } - } - - @Override - protected void removeChild(ActivityStack stack) { - super.removeChild(stack); - mDisplayContent.onStackRemoved(stack); - mAtmService.updateSleepIfNeededLocked(); - removeStackReferenceIfNeeded(stack); - } - - @Override - boolean isOnTop() { - // Considered always on top - return true; - } - - @Override - void positionChildAt(int position, ActivityStack child, boolean includingParents) { - final boolean moveToTop = (position == POSITION_TOP || position == getChildCount()); - final boolean moveToBottom = (position == POSITION_BOTTOM || position == 0); - if (child.getWindowConfiguration().isAlwaysOnTop() && !moveToTop) { - // This stack is always-on-top, override the default behavior. - Slog.w(TAG_WM, "Ignoring move of always-on-top stack=" + this + " to bottom"); - - // Moving to its current position, as we must call super but we don't want to - // perform any meaningful action. - final int currentPosition = mChildren.indexOf(child); - super.positionChildAt(currentPosition, child, false /* includingParents */); - return; - } - // We don't allow untrusted display to top when task stack moves to top, - // until user tapping this display to change display position as top intentionally. - if (isUntrustedVirtualDisplay() && !getParent().isOnTop()) { - includingParents = false; - } - final int targetPosition = findPositionForStack(position, child, false /* adding */); - super.positionChildAt(targetPosition, child, false /* includingParents */); - - if (includingParents && (moveToTop || moveToBottom)) { - // The DisplayContent children do not re-order, but we still want to move the - // display of this stack container because the intention of positioning is to have - // higher z-order to gain focus. - positionDisplayAt(moveToTop ? POSITION_TOP : POSITION_BOTTOM, - true /* includingParents */); - } - - child.updateTaskMovement(moveToTop); - - setLayoutNeeded(); - } - - /** - * When stack is added or repositioned, find a proper position for it. - * This will make sure that pinned stack always stays on top. - * @param requestedPosition Position requested by caller. - * @param stack Stack to be added or positioned. - * @param adding Flag indicates whether we're adding a new stack or positioning an existing. - * @return The proper position for the stack. - */ - private int findPositionForStack(int requestedPosition, ActivityStack stack, - boolean adding) { - if (stack.isActivityTypeDream()) { - return POSITION_TOP; - } - - if (stack.inPinnedWindowingMode()) { - return POSITION_TOP; - } - - final int topChildPosition = mChildren.size() - 1; - int belowAlwaysOnTopPosition = POSITION_BOTTOM; - for (int i = topChildPosition; i >= 0; --i) { - // Since a stack could be repositioned while being one of the child, return - // current index if that's the same stack we are positioning and it is always on - // top. - final boolean sameStack = getStacks().get(i) == stack; - if ((sameStack && stack.isAlwaysOnTop()) - || (!sameStack && !getStacks().get(i).isAlwaysOnTop())) { - belowAlwaysOnTopPosition = i; - break; - } - } - - // The max possible position we can insert the stack at. - int maxPosition = POSITION_TOP; - // The min possible position we can insert the stack at. - int minPosition = POSITION_BOTTOM; - - if (stack.isAlwaysOnTop()) { - if (hasPinnedTask()) { - // Always-on-top stacks go below the pinned stack. - maxPosition = getStacks().indexOf(mRootPinnedTask) - 1; - } - // Always-on-top stacks need to be above all other stacks. - minPosition = belowAlwaysOnTopPosition != - POSITION_BOTTOM ? belowAlwaysOnTopPosition : topChildPosition; - } else { - // Other stacks need to be below the always-on-top stacks. - maxPosition = belowAlwaysOnTopPosition != - POSITION_BOTTOM ? belowAlwaysOnTopPosition : 0; - } - - // Cap the requested position to something reasonable for the previous position check - // below. - if (requestedPosition == POSITION_TOP) { - requestedPosition = mChildren.size(); - } else if (requestedPosition == POSITION_BOTTOM) { - requestedPosition = 0; - } - - int targetPosition = requestedPosition; - targetPosition = Math.min(targetPosition, maxPosition); - targetPosition = Math.max(targetPosition, minPosition); - - int prevPosition = getStacks().indexOf(stack); - // The positions we calculated above (maxPosition, minPosition) do not take into - // consideration the following edge cases. - // 1) We need to adjust the position depending on the value "adding". - // 2) When we are moving a stack to another position, we also need to adjust the - // position depending on whether the stack is moving to a higher or lower position. - if ((targetPosition != requestedPosition) && - (adding || targetPosition < prevPosition)) { - targetPosition++; - } - - return targetPosition; - } - - @Override - boolean forAllWindows(ToBooleanFunction<WindowState> callback, - boolean traverseTopToBottom) { - if (traverseTopToBottom) { - if (super.forAllWindows(callback, traverseTopToBottom)) { - return true; - } - if (forAllExitingAppTokenWindows(callback, traverseTopToBottom)) { - return true; - } - } else { - if (forAllExitingAppTokenWindows(callback, traverseTopToBottom)) { - return true; - } - if (super.forAllWindows(callback, traverseTopToBottom)) { - return true; - } - } - return false; - } - - private boolean forAllExitingAppTokenWindows(ToBooleanFunction<WindowState> callback, - boolean traverseTopToBottom) { - // For legacy reasons we process the TaskStack.mExitingActivities first here before the - // app tokens. - // TODO: Investigate if we need to continue to do this or if we can just process them - // in-order. - if (traverseTopToBottom) { - for (int i = mChildren.size() - 1; i >= 0; --i) { - final List<ActivityRecord> activities = mChildren.get(i).mExitingActivities; - for (int j = activities.size() - 1; j >= 0; --j) { - if (activities.get(j).forAllWindowsUnchecked(callback, - traverseTopToBottom)) { - return true; - } - } - } - } else { - final int count = mChildren.size(); - for (int i = 0; i < count; ++i) { - final List<ActivityRecord> activities = mChildren.get(i).mExitingActivities; - final int appTokensCount = activities.size(); - for (int j = 0; j < appTokensCount; j++) { - if (activities.get(j).forAllWindowsUnchecked(callback, - traverseTopToBottom)) { - return true; - } - } - } - } - return false; - } - - void setExitingTokensHasVisible(boolean hasVisible) { - for (int i = mChildren.size() - 1; i >= 0; --i) { - final ArrayList<ActivityRecord> activities = mChildren.get(i).mExitingActivities; - for (int j = activities.size() - 1; j >= 0; --j) { - activities.get(j).hasVisible = hasVisible; - } - } - } - - void removeExistingAppTokensIfPossible() { - for (int i = mChildren.size() - 1; i >= 0; --i) { - final ArrayList<ActivityRecord> activities = mChildren.get(i).mExitingActivities; - for (int j = activities.size() - 1; j >= 0; --j) { - final ActivityRecord activity = activities.get(j); - if (!activity.hasVisible && !mClosingApps.contains(activity) - && (!activity.mIsExiting || activity.isEmpty())) { - // Make sure there is no animation running on this activity, so any windows - // associated with it will be removed as soon as their animations are - // complete. - cancelAnimation(); - ProtoLog.v(WM_DEBUG_ADD_REMOVE, - "performLayout: Activity exiting now removed %s", activity); - activity.removeIfPossible(); - } - } - } - } - - @Override - int getOrientation(int candidate) { - if (isStackVisible(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY)) { - // Apps and their containers are not allowed to specify an orientation while using - // root tasks...except for the home stack if it is not resizable and currently - // visible (top of) its root task. - if (mRootHomeTask != null && mRootHomeTask.isVisible()) { - final Task topMost = mRootHomeTask.getTopMostTask(); - final boolean resizable = topMost != null && topMost.isResizeable(); - if (!(resizable && mRootHomeTask.matchParentBounds())) { - final int orientation = mRootHomeTask.getOrientation(); - if (orientation != SCREEN_ORIENTATION_UNSET) { - return orientation; - } - } - } - return SCREEN_ORIENTATION_UNSPECIFIED; - } - - final int orientation = super.getOrientation(candidate); - if (orientation != SCREEN_ORIENTATION_UNSET - && orientation != SCREEN_ORIENTATION_BEHIND) { - ProtoLog.v(WM_DEBUG_ORIENTATION, - "App is requesting an orientation, return %d for display id=%d", - orientation, mDisplayId); - return orientation; - } - - ProtoLog.v(WM_DEBUG_ORIENTATION, - "No app is requesting an orientation, return %d for display id=%d", - getLastOrientation(), mDisplayId); - // The next app has not been requested to be visible, so we keep the current orientation - // to prevent freezing/unfreezing the display too early. - return getLastOrientation(); - } - - @Override - void assignChildLayers(SurfaceControl.Transaction t) { - assignStackOrdering(t); - - for (int i = 0; i < mChildren.size(); i++) { - final ActivityStack s = mChildren.get(i); - s.assignChildLayers(t); - } - } - - void assignStackOrdering(SurfaceControl.Transaction t) { - if (getParent() == null) { - return; - } - mTmpAlwaysOnTopStacks.clear(); - mTmpHomeStacks.clear(); - mTmpNormalStacks.clear(); - for (int i = 0; i < mChildren.size(); ++i) { - final ActivityStack s = mChildren.get(i); - if (s.isAlwaysOnTop()) { - mTmpAlwaysOnTopStacks.add(s); - } else if (s.isActivityTypeHome()) { - mTmpHomeStacks.add(s); - } else { - mTmpNormalStacks.add(s); - } - } - - int layer = 0; - // Place home stacks to the bottom. - for (int i = 0; i < mTmpHomeStacks.size(); i++) { - mTmpHomeStacks.get(i).assignLayer(t, layer++); - } - // The home animation layer is between the home stacks and the normal stacks. - final int layerForHomeAnimationLayer = layer++; - int layerForSplitScreenDividerAnchor = layer++; - int layerForAnimationLayer = layer++; - for (int i = 0; i < mTmpNormalStacks.size(); i++) { - final ActivityStack s = mTmpNormalStacks.get(i); - s.assignLayer(t, layer++); - if (s.inSplitScreenWindowingMode()) { - // The split screen divider anchor is located above the split screen window. - layerForSplitScreenDividerAnchor = layer++; - } - if (s.isTaskAnimating() || s.isAppTransitioning()) { - // The animation layer is located above the highest animating stack and no - // higher. - layerForAnimationLayer = layer++; - } - } - // The boosted animation layer is between the normal stacks and the always on top - // stacks. - final int layerForBoostedAnimationLayer = layer++; - for (int i = 0; i < mTmpAlwaysOnTopStacks.size(); i++) { - mTmpAlwaysOnTopStacks.get(i).assignLayer(t, layer++); - } - - t.setLayer(mHomeAppAnimationLayer, layerForHomeAnimationLayer); - t.setLayer(mAppAnimationLayer, layerForAnimationLayer); - t.setLayer(mSplitScreenDividerAnchor, layerForSplitScreenDividerAnchor); - t.setLayer(mBoostedAppAnimationLayer, layerForBoostedAnimationLayer); - } - - @Override - SurfaceControl getAppAnimationLayer(@AnimationLayer int animationLayer) { - switch (animationLayer) { - case ANIMATION_LAYER_BOOSTED: - return mBoostedAppAnimationLayer; - case ANIMATION_LAYER_HOME: - return mHomeAppAnimationLayer; - case ANIMATION_LAYER_STANDARD: - default: - return mAppAnimationLayer; - } - } - - SurfaceControl getSplitScreenDividerAnchor() { - return mSplitScreenDividerAnchor; - } - - @Override - void onParentChanged(ConfigurationContainer newParent, ConfigurationContainer oldParent) { - if (getParent() != null) { - super.onParentChanged(newParent, oldParent, () -> { - mAppAnimationLayer = makeChildSurface(null) - .setName("animationLayer") - .build(); - mBoostedAppAnimationLayer = makeChildSurface(null) - .setName("boostedAnimationLayer") - .build(); - mHomeAppAnimationLayer = makeChildSurface(null) - .setName("homeAnimationLayer") - .build(); - mSplitScreenDividerAnchor = makeChildSurface(null) - .setName("splitScreenDividerAnchor") - .build(); - getPendingTransaction() - .show(mAppAnimationLayer) - .show(mBoostedAppAnimationLayer) - .show(mHomeAppAnimationLayer) - .show(mSplitScreenDividerAnchor); - }); - } else { - super.onParentChanged(newParent, oldParent); - mWmService.mTransactionFactory.get() - .remove(mAppAnimationLayer) - .remove(mBoostedAppAnimationLayer) - .remove(mHomeAppAnimationLayer) - .remove(mSplitScreenDividerAnchor) - .apply(); - mAppAnimationLayer = null; - mBoostedAppAnimationLayer = null; - mHomeAppAnimationLayer = null; - mSplitScreenDividerAnchor = null; - } - } - } - private class WindowContainers extends DisplayChildWindowContainer<WindowContainer> { private final String mName; @@ -4979,7 +4375,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo private boolean skipImeWindowsDuringTraversal(DisplayContent dc) { // We skip IME windows so they're processed just above their target, except // in split-screen mode where we process the IME containers above the docked divider. - return dc.mInputMethodTarget != null && !dc.isSplitScreenModeActivated(); + return dc.mInputMethodTarget != null + && !dc.mTaskContainers.isSplitScreenModeActivated(); } /** Like {@link #forAllWindows}, but ignores {@link #skipImeWindowsDuringTraversal} */ @@ -5629,6 +5026,10 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } void onDisplayChanged() { + mDisplay.getRealSize(mTmpDisplaySize); + setBounds(0, 0, mTmpDisplaySize.x, mTmpDisplaySize.y); + updateDisplayInfo(); + // The window policy is responsible for stopping activities on the default display. final int displayId = mDisplay.getDisplayId(); if (displayId != DEFAULT_DISPLAY) { @@ -5640,118 +5041,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo mOffToken = null; } } - - mDisplay.getRealSize(mTmpDisplaySize); - setBounds(0, 0, mTmpDisplaySize.x, mTmpDisplaySize.y); - updateDisplayInfo(); mWmService.requestTraversal(); } - void addStack(ActivityStack stack, int position) { - setStackOnDisplay(stack, position); - positionStackAt(stack, position); - } - - void addStackReferenceIfNeeded(ActivityStack stack) { - mTaskContainers.addStackReferenceIfNeeded(stack); - } - - void removeStackReferenceIfNeeded(ActivityStack stack) { - mTaskContainers.removeStackReferenceIfNeeded(stack); - } - - void onStackRemoved(ActivityStack stack) { - if (ActivityTaskManagerDebugConfig.DEBUG_STACK) { - Slog.v(TAG_STACK, "removeStack: detaching " + stack + " from displayId=" + mDisplayId); - } - if (mPreferredTopFocusableStack == stack) { - mPreferredTopFocusableStack = null; - } - releaseSelfIfNeeded(); - onStackOrderChanged(stack); - } - - void positionStackAtTop(ActivityStack stack, boolean includingParents) { - positionStackAtTop(stack, includingParents, null /* updateLastFocusedStackReason */); - } - - void positionStackAtTop(ActivityStack stack, boolean includingParents, - String updateLastFocusedStackReason) { - positionStackAt(stack, getStackCount(), includingParents, updateLastFocusedStackReason); - } - - void positionStackAtBottom(ActivityStack stack) { - positionStackAtBottom(stack, null /* updateLastFocusedStackReason */); - } - - void positionStackAtBottom(ActivityStack stack, String updateLastFocusedStackReason) { - positionStackAt(stack, 0, false /* includingParents */, updateLastFocusedStackReason); - } - - private void positionStackAt(ActivityStack stack, int position) { - positionStackAt(stack, position, false /* includingParents */, - null /* updateLastFocusedStackReason */); - } - - private void positionStackAt(ActivityStack stack, int position, boolean includingParents, - String updateLastFocusedStackReason) { - // TODO: Keep in sync with WindowContainer.positionChildAt(), once we change that to adjust - // the position internally, also update the logic here - final ActivityStack prevFocusedStack = updateLastFocusedStackReason != null - ? getFocusedStack() : null; - final boolean wasContained = getIndexOf(stack) >= 0; - if (mSingleTaskInstance && getStackCount() == 1 && !wasContained) { - throw new IllegalStateException( - "positionStackAt: Can only have one task on display=" + this); - } - - final boolean movingToTop = wasContained && position >= getStackCount() - 1; - // Reset mPreferredTopFocusableStack before positioning to top or {@link - // ActivityStackSupervisor#updateTopResumedActivityIfNeeded()} won't update the top - // resumed activity. - if (movingToTop && stack.isFocusable()) { - mPreferredTopFocusableStack = null; - } - - // Since positionChildAt() is called during the creation process of pinned stacks, - // ActivityStack#getStack() can be null. - positionStackAt(position, stack, includingParents); - - // The insert position may be adjusted to non-top when there is always-on-top stack. Since - // the original position is preferred to be top, the stack should have higher priority when - // we are looking for top focusable stack. The condition {@code wasContained} restricts the - // preferred stack is set only when moving an existing stack to top instead of adding a new - // stack that may be too early (e.g. in the middle of launching or reparenting). - if (movingToTop && stack.isFocusableAndVisible()) { - mPreferredTopFocusableStack = stack; - } else if (mPreferredTopFocusableStack == stack) { - mPreferredTopFocusableStack = null; - } - - if (updateLastFocusedStackReason != null) { - final ActivityStack currentFocusedStack = getFocusedStack(); - if (currentFocusedStack != prevFocusedStack) { - mLastFocusedStack = prevFocusedStack; - EventLogTags.writeWmFocusedStack(mRootWindowContainer.mCurrentUser, mDisplayId, - currentFocusedStack == null ? -1 : currentFocusedStack.getRootTaskId(), - mLastFocusedStack == null ? -1 : mLastFocusedStack.getRootTaskId(), - updateLastFocusedStackReason); - } - } - - onStackOrderChanged(stack); - } - - ActivityStack getStack(int rootTaskId) { - for (int i = getStackCount() - 1; i >= 0; --i) { - final ActivityStack stack = getStackAt(i); - if (stack.getRootTaskId() == rootTaskId) { - return stack; - } - } - return null; - } - static boolean alwaysCreateStack(int windowingMode, int activityType) { // Always create a stack for fullscreen, freeform, and split-screen-secondary windowing // modes so that we can manage visual ordering and return types correctly. @@ -5762,358 +5054,13 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo || windowingMode == WINDOWING_MODE_MULTI_WINDOW); } - /** - * Returns an existing stack compatible with the windowing mode and activity type or creates one - * if a compatible stack doesn't exist. - * @see #getOrCreateStack(int, int, boolean, Intent, Task, boolean) - */ - ActivityStack getOrCreateStack(int windowingMode, int activityType, boolean onTop) { - return getOrCreateStack(windowingMode, activityType, onTop, null /* intent */, - null /* candidateTask */, false /* createdByOrganizer */); - } - - /** - * When two level tasks are required for given windowing mode and activity type, returns an - * existing compatible root task or creates a new one. - * For one level task, the candidate task would be reused to also be the root task or create - * a new root task if no candidate task. - * @see #getStack(int, int) - * @see #createStack(int, int, boolean) - */ - ActivityStack getOrCreateStack(int windowingMode, int activityType, boolean onTop, - Intent intent, Task candidateTask, boolean createdByOrganizer) { - if (!alwaysCreateStack(windowingMode, activityType)) { - ActivityStack stack = getStack(windowingMode, activityType); - if (stack != null) { - return stack; - } - } else if (candidateTask != null) { - final ActivityStack stack = (ActivityStack) candidateTask; - final int position = onTop ? POSITION_TOP : POSITION_BOTTOM; - if (isSplitScreenModeActivated()) { - final Task splitRootSecondary = getTask(t -> t.mCreatedByOrganizer && t.isRootTask() - && t.inSplitScreenSecondaryWindowingMode()); - if (stack.getParent() == null) { - splitRootSecondary.addChild(stack, position); - } else if (stack.getParent() != splitRootSecondary) { - stack.reparent(splitRootSecondary, position); - } - } else if (stack.getDisplay() != this || !stack.isRootTask()) { - if (stack.getParent() == null) { - addStack(stack, position); - } else { - stack.reparent(this, onTop); - } - } - // Update windowing mode if necessary, e.g. moving a pinned task to fullscreen. - if (candidateTask.getWindowingMode() != windowingMode) { - candidateTask.setWindowingMode(windowingMode); - } - return stack; - } - return createStack(windowingMode, activityType, onTop, null /*info*/, intent, - createdByOrganizer); - } - - /** - * Returns an existing stack compatible with the input params or creates one - * if a compatible stack doesn't exist. - * @see #getOrCreateStack(int, int, boolean) - */ - ActivityStack getOrCreateStack(@Nullable ActivityRecord r, - @Nullable ActivityOptions options, @Nullable Task candidateTask, int activityType, - boolean onTop) { - // First preference is the windowing mode in the activity options if set. - int windowingMode = (options != null) - ? options.getLaunchWindowingMode() : WINDOWING_MODE_UNDEFINED; - // Validate that our desired windowingMode will work under the current conditions. - // UNDEFINED windowing mode is a valid result and means that the new stack will inherit - // it's display's windowing mode. - windowingMode = validateWindowingMode(windowingMode, r, candidateTask, activityType); - return getOrCreateStack(windowingMode, activityType, onTop, null /* intent */, - candidateTask, false /* createdByOrganizer */); - } - - @VisibleForTesting - int getNextStackId() { - return mAtmService.mStackSupervisor.getNextTaskIdForUser(); - } - ActivityStack createStack(int windowingMode, int activityType, boolean onTop) { - return createStack(windowingMode, activityType, onTop, null /* info */, null /* intent */, - false /* createdByOrganizer */); - } - - /** - * Creates a stack matching the input windowing mode and activity type on this display. - * @param windowingMode The windowing mode the stack should be created in. If - * {@link WindowConfiguration#WINDOWING_MODE_UNDEFINED} then the stack will - * inherit its parent's windowing mode. - * @param activityType The activityType the stack should be created in. If - * {@link WindowConfiguration#ACTIVITY_TYPE_UNDEFINED} then the stack will - * be created in {@link WindowConfiguration#ACTIVITY_TYPE_STANDARD}. - * @param onTop If true the stack will be created at the top of the display, else at the bottom. - * @param info The started activity info. - * @param intent The intent that started this task. - * @param createdByOrganizer @{code true} if this is created by task organizer, @{code false} - * otherwise. - * @return The newly created stack. - */ - ActivityStack createStack(int windowingMode, int activityType, boolean onTop, ActivityInfo info, - Intent intent, boolean createdByOrganizer) { - if (mSingleTaskInstance && getStackCount() > 0) { - // Create stack on default display instead since this display can only contain 1 stack. - // TODO: Kinda a hack, but better that having the decision at each call point. Hoping - // this goes away once ActivityView is no longer using virtual displays. - return mRootWindowContainer.getDefaultDisplay().createStack( - windowingMode, activityType, onTop, info, intent, createdByOrganizer); - } - - if (activityType == ACTIVITY_TYPE_UNDEFINED && !createdByOrganizer) { - // Can't have an undefined stack type yet...so re-map to standard. Anyone that wants - // anything else should be passing it in anyways...except for the task organizer. - activityType = ACTIVITY_TYPE_STANDARD; - } - - if (activityType != ACTIVITY_TYPE_STANDARD && activityType != ACTIVITY_TYPE_UNDEFINED) { - // For now there can be only one stack of a particular non-standard activity type on a - // display. So, get that ignoring whatever windowing mode it is currently in. - ActivityStack stack = getStack(WINDOWING_MODE_UNDEFINED, activityType); - if (stack != null) { - throw new IllegalArgumentException("Stack=" + stack + " of activityType=" - + activityType + " already on display=" + this + ". Can't have multiple."); - } - } - - if (!isWindowingModeSupported(windowingMode, mAtmService.mSupportsMultiWindow, - mAtmService.mSupportsSplitScreenMultiWindow, - mAtmService.mSupportsFreeformWindowManagement, - mAtmService.mSupportsPictureInPicture, activityType)) { - throw new IllegalArgumentException("Can't create stack for unsupported windowingMode=" - + windowingMode); - } - - final int stackId = getNextStackId(); - return createStackUnchecked(windowingMode, activityType, stackId, onTop, info, intent, - createdByOrganizer); - } - - /** @return the root task to create the next task in. */ - private Task updateLaunchRootTask(int windowingMode) { - if (!isSplitScreenWindowingMode(windowingMode)) { - // Only split-screen windowing modes can do this currently... - return null; - } - for (int i = getStackCount() - 1; i >= 0; --i) { - final Task t = getStackAt(i); - if (!t.mCreatedByOrganizer || t.getRequestedOverrideWindowingMode() != windowingMode) { - continue; - } - // If not already set, pick a launch root which is not the one we are launching into. - if (mLaunchRootTask == null) { - for (int j = 0, n = getStackCount(); j < n; ++j) { - final Task tt = getStackAt(j); - if (tt.mCreatedByOrganizer && tt != t) { - mLaunchRootTask = tt; - break; - } - } - } - return t; - } - return mLaunchRootTask; - } - - @VisibleForTesting - ActivityStack createStackUnchecked(int windowingMode, int activityType, int stackId, - boolean onTop, ActivityInfo info, Intent intent, boolean createdByOrganizer) { - if (windowingMode == WINDOWING_MODE_PINNED && activityType != ACTIVITY_TYPE_STANDARD) { - throw new IllegalArgumentException("Stack with windowing mode cannot with non standard " - + "activity type."); - } - if (info == null) { - info = new ActivityInfo(); - info.applicationInfo = new ApplicationInfo(); - } - - // Task created by organizer are added as root. - Task launchRootTask = createdByOrganizer ? null : updateLaunchRootTask(windowingMode); - if (launchRootTask != null) { - // Since this stack will be put into a root task, its windowingMode will be inherited. - windowingMode = WINDOWING_MODE_UNDEFINED; - } - - final ActivityStack stack = (ActivityStack) Task.create(mAtmService, stackId, activityType, - info, intent, createdByOrganizer); - if (launchRootTask != null) { - launchRootTask.addChild(stack, onTop ? POSITION_TOP : POSITION_BOTTOM); - if (onTop) { - positionStackAtTop((ActivityStack) launchRootTask, false /* includingParents */); - } - } else { - addStack(stack, onTop ? POSITION_TOP : POSITION_BOTTOM); - stack.setWindowingMode(windowingMode, false /* animate */, false /* showRecents */, - false /* enteringSplitScreenMode */, false /* deferEnsuringVisibility */, - true /* creating */); - } - return stack; + return mTaskContainers.createStack(windowingMode, activityType, onTop, null /* info */, + null /* intent */, false /* createdByOrganizer */); } - /** - * Get the preferred focusable stack in priority. If the preferred stack does not exist, find a - * focusable and visible stack from the top of stacks in this display. - */ ActivityStack getFocusedStack() { - if (mPreferredTopFocusableStack != null) { - return mPreferredTopFocusableStack; - } - - for (int i = getStackCount() - 1; i >= 0; --i) { - final ActivityStack stack = getStackAt(i); - if (stack.isFocusableAndVisible()) { - return stack; - } - } - - return null; - } - - ActivityStack getNextFocusableStack(ActivityStack currentFocus, boolean ignoreCurrent) { - final int currentWindowingMode = currentFocus != null - ? currentFocus.getWindowingMode() : WINDOWING_MODE_UNDEFINED; - - ActivityStack candidate = null; - for (int i = getStackCount() - 1; i >= 0; --i) { - final ActivityStack stack = getStackAt(i); - if (ignoreCurrent && stack == currentFocus) { - continue; - } - if (!stack.isFocusableAndVisible()) { - continue; - } - - if (currentWindowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY - && candidate == null && stack.inSplitScreenPrimaryWindowingMode()) { - // If the currently focused stack is in split-screen secondary we save off the - // top primary split-screen stack as a candidate for focus because we might - // prefer focus to move to an other stack to avoid primary split-screen stack - // overlapping with a fullscreen stack when a fullscreen stack is higher in z - // than the next split-screen stack. Assistant stack, I am looking at you... - // We only move the focus to the primary-split screen stack if there isn't a - // better alternative. - candidate = stack; - continue; - } - if (candidate != null && stack.inSplitScreenSecondaryWindowingMode()) { - // Use the candidate stack since we are now at the secondary split-screen. - return candidate; - } - return stack; - } - return candidate; - } - - ActivityRecord getResumedActivity() { - final ActivityStack focusedStack = getFocusedStack(); - if (focusedStack == null) { - return null; - } - // TODO(b/111541062): Move this into ActivityStack#getResumedActivity() - // Check if the focused stack has the resumed activity - ActivityRecord resumedActivity = focusedStack.getResumedActivity(); - if (resumedActivity == null || resumedActivity.app == null) { - // If there is no registered resumed activity in the stack or it is not running - - // try to use previously resumed one. - resumedActivity = focusedStack.mPausingActivity; - if (resumedActivity == null || resumedActivity.app == null) { - // If previously resumed activity doesn't work either - find the topmost running - // activity that can be focused. - resumedActivity = focusedStack.topRunningActivity(true /* focusableOnly */); - } - } - return resumedActivity; - } - - ActivityStack getLastFocusedStack() { - return mLastFocusedStack; - } - - boolean allResumedActivitiesComplete() { - for (int stackNdx = getStackCount() - 1; stackNdx >= 0; --stackNdx) { - final ActivityRecord r = getStackAt(stackNdx).getResumedActivity(); - if (r != null && !r.isState(RESUMED)) { - return false; - } - } - final ActivityStack currentFocusedStack = getFocusedStack(); - if (ActivityTaskManagerDebugConfig.DEBUG_STACK) { - Slog.d(TAG_STACK, "allResumedActivitiesComplete: mLastFocusedStack changing from=" - + mLastFocusedStack + " to=" + currentFocusedStack); - } - mLastFocusedStack = currentFocusedStack; - return true; - } - - /** - * Pause all activities in either all of the stacks or just the back stacks. This is done before - * resuming a new activity and to make sure that previously active activities are - * paused in stacks that are no longer visible or in pinned windowing mode. This does not - * pause activities in visible stacks, so if an activity is launched within the same stack/task, - * then we should explicitly pause that stack's top activity. - * @param userLeaving Passed to pauseActivity() to indicate whether to call onUserLeaving(). - * @param resuming The resuming activity. - * @return {@code true} if any activity was paused as a result of this call. - */ - boolean pauseBackStacks(boolean userLeaving, ActivityRecord resuming) { - boolean someActivityPaused = false; - for (int stackNdx = getStackCount() - 1; stackNdx >= 0; --stackNdx) { - final ActivityStack stack = getStackAt(stackNdx); - final ActivityRecord resumedActivity = stack.getResumedActivity(); - if (resumedActivity != null - && (stack.getVisibility(resuming) != STACK_VISIBILITY_VISIBLE - || !stack.isTopActivityFocusable())) { - if (DEBUG_STATES) Slog.d(TAG_STATES, "pauseBackStacks: stack=" + stack - + " mResumedActivity=" + resumedActivity); - someActivityPaused |= stack.startPausingLocked(userLeaving, false /* uiSleeping*/, - resuming); - } - } - return someActivityPaused; - } - - /** - * Find task for putting the Activity in. - */ - void findTaskLocked(final ActivityRecord r, final boolean isPreferredDisplay, - RootWindowContainer.FindTaskResult result) { - mTmpFindTaskResult.clear(); - for (int stackNdx = getStackCount() - 1; stackNdx >= 0; --stackNdx) { - final ActivityStack stack = getStackAt(stackNdx); - if (!r.hasCompatibleActivityType(stack) && stack.isLeafTask()) { - if (DEBUG_TASKS) { - Slog.d(TAG_TASKS, "Skipping stack: (mismatch activity/stack) " + stack); - } - continue; - } - - mTmpFindTaskResult.process(r, stack); - // It is possible to have tasks in multiple stacks with the same root affinity, so - // we should keep looking after finding an affinity match to see if there is a - // better match in another stack. Also, task affinity isn't a good enough reason - // to target a display which isn't the source of the intent, so skip any affinity - // matches not on the specified display. - if (mTmpFindTaskResult.mRecord != null) { - if (mTmpFindTaskResult.mIdealMatch) { - result.setTo(mTmpFindTaskResult); - return; - } else if (isPreferredDisplay) { - // Note: since the traversing through the stacks is top down, the floating - // tasks should always have lower priority than any affinity-matching tasks - // in the fullscreen stacks - result.setTo(mTmpFindTaskResult); - } - } - } + return mTaskContainers.getFocusedStack(); } /** @@ -6121,249 +5068,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo * ACTIVITY_TYPE_STANDARD or ACTIVITY_TYPE_UNDEFINED */ void removeStacksInWindowingModes(int... windowingModes) { - if (windowingModes == null || windowingModes.length == 0) { - return; - } - - // Collect the stacks that are necessary to be removed instead of performing the removal - // by looping mStacks, so that we don't miss any stacks after the stack size changed or - // stacks reordered. - final ArrayList<ActivityStack> stacks = new ArrayList<>(); - for (int j = windowingModes.length - 1; j >= 0; --j) { - final int windowingMode = windowingModes[j]; - for (int i = getStackCount() - 1; i >= 0; --i) { - final ActivityStack stack = getStackAt(i); - if (!stack.isActivityTypeStandardOrUndefined()) { - continue; - } - if (stack.getWindowingMode() != windowingMode) { - continue; - } - stacks.add(stack); - } - } - - for (int i = stacks.size() - 1; i >= 0; --i) { - mRootWindowContainer.mStackSupervisor.removeStack(stacks.get(i)); - } + mTaskContainers.removeStacksInWindowingModes(windowingModes); } void removeStacksWithActivityTypes(int... activityTypes) { - if (activityTypes == null || activityTypes.length == 0) { - return; - } - - // Collect the stacks that are necessary to be removed instead of performing the removal - // by looping mStacks, so that we don't miss any stacks after the stack size changed or - // stacks reordered. - final ArrayList<ActivityStack> stacks = new ArrayList<>(); - for (int j = activityTypes.length - 1; j >= 0; --j) { - final int activityType = activityTypes[j]; - for (int i = getStackCount() - 1; i >= 0; --i) { - final ActivityStack stack = getStackAt(i); - // Collect the root tasks that are currently being organized. - if (stack.isOrganized()) { - for (int k = stack.getChildCount() - 1; k >= 0; --k) { - final ActivityStack childStack = (ActivityStack) stack.getChildAt(k); - if (childStack.getActivityType() == activityType) { - stacks.add(childStack); - } - } - } else if (stack.getActivityType() == activityType) { - stacks.add(stack); - } - } - } - - for (int i = stacks.size() - 1; i >= 0; --i) { - mRootWindowContainer.mStackSupervisor.removeStack(stacks.get(i)); - } - } - - void onSplitScreenModeDismissed() { - mAtmService.deferWindowLayout(); - try { - mLaunchRootTask = null; - moveSplitScreenTasksToFullScreen(); - } finally { - final ActivityStack topFullscreenStack = - getTopStackInWindowingMode(WINDOWING_MODE_FULLSCREEN); - final ActivityStack homeStack = getOrCreateRootHomeTask(); - if (topFullscreenStack != null && homeStack != null && !isTopStack(homeStack)) { - // Whenever split-screen is dismissed we want the home stack directly behind the - // current top fullscreen stack so it shows up when the top stack is finished. - // TODO: Would be better to use ActivityDisplay.positionChildAt() for this, however - // ActivityDisplay doesn't have a direct controller to WM side yet. We can switch - // once we have that. - homeStack.moveToFront("onSplitScreenModeDismissed"); - topFullscreenStack.moveToFront("onSplitScreenModeDismissed"); - } - mAtmService.continueWindowLayout(); - } - } - - private void moveSplitScreenTasksToFullScreen() { - final WindowContainerTransaction wct = new WindowContainerTransaction(); - mTmpTasks.clear(); - forAllTasks(task -> { - if (task.mCreatedByOrganizer && task.inSplitScreenWindowingMode() && task.hasChild()) { - mTmpTasks.add(task); - } - }); - - for (int i = mTmpTasks.size() - 1; i >= 0; i--) { - final Task root = mTmpTasks.get(i); - for (int j = 0; j < root.getChildCount(); j++) { - wct.reparent(root.getChildAt(j).mRemoteToken, null, true /* toTop */); - } - } - mAtmService.mWindowOrganizerController.applyTransaction(wct); - } - - /** - * Returns true if the {@param windowingMode} is supported based on other parameters passed in. - * @param windowingMode The windowing mode we are checking support for. - * @param supportsMultiWindow If we should consider support for multi-window mode in general. - * @param supportsSplitScreen If we should consider support for split-screen multi-window. - * @param supportsFreeform If we should consider support for freeform multi-window. - * @param supportsPip If we should consider support for picture-in-picture mutli-window. - * @param activityType The activity type under consideration. - * @return true if the windowing mode is supported. - */ - private boolean isWindowingModeSupported(int windowingMode, boolean supportsMultiWindow, - boolean supportsSplitScreen, boolean supportsFreeform, boolean supportsPip, - int activityType) { - - if (windowingMode == WINDOWING_MODE_UNDEFINED - || windowingMode == WINDOWING_MODE_FULLSCREEN) { - return true; - } - if (!supportsMultiWindow) { - return false; - } - - if (windowingMode == WINDOWING_MODE_MULTI_WINDOW) { - return true; - } - - final int displayWindowingMode = getWindowingMode(); - if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY - || windowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY) { - return supportsSplitScreen - && WindowConfiguration.supportSplitScreenWindowingMode(activityType) - // Freeform windows and split-screen windows don't mix well, so prevent - // split windowing modes on freeform displays. - && displayWindowingMode != WINDOWING_MODE_FREEFORM; - } - - if (!supportsFreeform && windowingMode == WINDOWING_MODE_FREEFORM) { - return false; - } - - if (!supportsPip && windowingMode == WINDOWING_MODE_PINNED) { - return false; - } - return true; - } - - /** - * Resolves the windowing mode that an {@link ActivityRecord} would be in if started on this - * display with the provided parameters. - * - * @param r The ActivityRecord in question. - * @param options Options to start with. - * @param task The task within-which the activity would start. - * @param activityType The type of activity to start. - * @return The resolved (not UNDEFINED) windowing-mode that the activity would be in. - */ - int resolveWindowingMode(@Nullable ActivityRecord r, @Nullable ActivityOptions options, - @Nullable Task task, int activityType) { - - // First preference if the windowing mode in the activity options if set. - int windowingMode = (options != null) - ? options.getLaunchWindowingMode() : WINDOWING_MODE_UNDEFINED; - - // If windowing mode is unset, then next preference is the candidate task, then the - // activity record. - if (windowingMode == WINDOWING_MODE_UNDEFINED) { - if (task != null) { - windowingMode = task.getWindowingMode(); - } - if (windowingMode == WINDOWING_MODE_UNDEFINED && r != null) { - windowingMode = r.getWindowingMode(); - } - if (windowingMode == WINDOWING_MODE_UNDEFINED) { - // Use the display's windowing mode. - windowingMode = getWindowingMode(); - } - } - windowingMode = validateWindowingMode(windowingMode, r, task, activityType); - return windowingMode != WINDOWING_MODE_UNDEFINED - ? windowingMode : WINDOWING_MODE_FULLSCREEN; - } - - /** - * Check that the requested windowing-mode is appropriate for the specified task and/or activity - * on this display. - * - * @param windowingMode The windowing-mode to validate. - * @param r The {@link ActivityRecord} to check against. - * @param task The {@link Task} to check against. - * @param activityType An activity type. - * @return The provided windowingMode or the closest valid mode which is appropriate. - */ - int validateWindowingMode(int windowingMode, @Nullable ActivityRecord r, @Nullable Task task, - int activityType) { - // Make sure the windowing mode we are trying to use makes sense for what is supported. - boolean supportsMultiWindow = mAtmService.mSupportsMultiWindow; - boolean supportsSplitScreen = mAtmService.mSupportsSplitScreenMultiWindow; - boolean supportsFreeform = mAtmService.mSupportsFreeformWindowManagement; - boolean supportsPip = mAtmService.mSupportsPictureInPicture; - if (supportsMultiWindow) { - if (task != null) { - supportsMultiWindow = task.isResizeable(); - supportsSplitScreen = task.supportsSplitScreenWindowingMode(); - // TODO: Do we need to check for freeform and Pip support here? - } else if (r != null) { - supportsMultiWindow = r.isResizeable(); - supportsSplitScreen = r.supportsSplitScreenWindowingMode(); - supportsFreeform = r.supportsFreeform(); - supportsPip = r.supportsPictureInPicture(); - } - } - - final boolean inSplitScreenMode = isSplitScreenModeActivated(); - if (!inSplitScreenMode - && windowingMode == WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY) { - // Switch to the display's windowing mode if we are not in split-screen mode and we are - // trying to launch in split-screen secondary. - windowingMode = WINDOWING_MODE_UNDEFINED; - } else if (inSplitScreenMode && (windowingMode == WINDOWING_MODE_FULLSCREEN - || windowingMode == WINDOWING_MODE_UNDEFINED) - && supportsSplitScreen) { - windowingMode = WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; - } - - if (windowingMode != WINDOWING_MODE_UNDEFINED - && isWindowingModeSupported(windowingMode, supportsMultiWindow, supportsSplitScreen, - supportsFreeform, supportsPip, activityType)) { - return windowingMode; - } - return WINDOWING_MODE_UNDEFINED; - } - - boolean isTopStack(ActivityStack stack) { - return stack == getTopStack(); - } - - boolean isTopNotPinnedStack(ActivityStack stack) { - for (int i = getStackCount() - 1; i >= 0; --i) { - final ActivityStack current = getStackAt(i); - if (!current.inPinnedWindowingMode()) { - return current == stack; - } - } - return false; + mTaskContainers.removeStacksWithActivityTypes(activityTypes); } ActivityRecord topRunningActivity() { @@ -6380,37 +5089,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo * @return The top running activity. {@code null} if none is available. */ ActivityRecord topRunningActivity(boolean considerKeyguardState) { - ActivityRecord topRunning = null; - final ActivityStack focusedStack = getFocusedStack(); - if (focusedStack != null) { - topRunning = focusedStack.topRunningActivity(); - } - - // Look in other focusable stacks. - if (topRunning == null) { - for (int i = getStackCount() - 1; i >= 0; --i) { - final ActivityStack stack = getStackAt(i); - // Only consider focusable stacks other than the current focused one. - if (stack == focusedStack || !stack.isTopActivityFocusable()) { - continue; - } - topRunning = stack.topRunningActivity(); - if (topRunning != null) { - break; - } - } - } - - // This activity can be considered the top running activity if we are not considering - // the locked state, the keyguard isn't locked, or we can show when locked. - if (topRunning != null && considerKeyguardState - && mRootWindowContainer.mStackSupervisor.getKeyguardController() - .isKeyguardLocked() - && !topRunning.canShowWhenLocked()) { - return null; - } - - return topRunning; + return mTaskContainers.topRunningActivity(considerKeyguardState); } boolean updateDisplayOverrideConfigurationLocked() { @@ -6493,15 +5172,20 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo @Override public void onRequestedOverrideConfigurationChanged(Configuration overrideConfiguration) { - final int currRotation = - getRequestedOverrideConfiguration().windowConfiguration.getRotation(); - if (currRotation != ROTATION_UNDEFINED - && currRotation != overrideConfiguration.windowConfiguration.getRotation()) { - applyRotationLocked(currRotation, - overrideConfiguration.windowConfiguration.getRotation()); - } - mCurrentOverrideConfigurationChanges = - getRequestedOverrideConfiguration().diff(overrideConfiguration); + final Configuration currOverrideConfig = getRequestedOverrideConfiguration(); + final int currRotation = currOverrideConfig.windowConfiguration.getRotation(); + final int overrideRotation = overrideConfiguration.windowConfiguration.getRotation(); + if (currRotation != ROTATION_UNDEFINED && currRotation != overrideRotation) { + if (mFixedRotationLaunchingApp != null) { + mFixedRotationLaunchingApp.clearFixedRotationTransform( + () -> applyRotation(currRotation, overrideRotation)); + // Clear the record because the display will sync to current rotation. + mFixedRotationLaunchingApp = null; + } else { + applyRotation(currRotation, overrideRotation); + } + } + mCurrentOverrideConfigurationChanges = currOverrideConfig.diff(overrideConfiguration); super.onRequestedOverrideConfigurationChanged(overrideConfiguration); mCurrentOverrideConfigurationChanges = 0; mWmService.setNewDisplayOverrideConfiguration(overrideConfiguration, this); @@ -6578,7 +5262,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo // If default display is in split-window mode, set windowing mode of the stack // to split-screen secondary. Otherwise, set the windowing mode to undefined by // default to let stack inherited the windowing mode from the new display. - final int windowingMode = toDisplay.isSplitScreenModeActivated() + final int windowingMode = toDisplay.mTaskContainers.isSplitScreenModeActivated() ? WINDOWING_MODE_SPLIT_SCREEN_SECONDARY : WINDOWING_MODE_UNDEFINED; stack.reparent(toDisplay, true /* onTop */); @@ -6610,7 +5294,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } } - private void releaseSelfIfNeeded() { + void releaseSelfIfNeeded() { if (!mRemoved) { return; } @@ -6687,80 +5371,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo return (index < wc.mChildren.size()) ? (ActivityStack) wc.mChildren.get(index) : null; } - /** - * Adjusts the {@param stack} behind the last visible stack in the display if necessary. - * Generally used in conjunction with {@link #moveStackBehindStack}. - */ - // TODO(b/151575894): Remove special stack movement methods. - void moveStackBehindBottomMostVisibleStack(ActivityStack stack) { - if (stack.shouldBeVisible(null)) { - // Skip if the stack is already visible - return; - } - - final boolean isRootTask = stack.isRootTask(); - if (isRootTask) { - // Move the stack to the bottom to not affect the following visibility checks - positionStackAtBottom(stack); - } else { - stack.getParent().positionChildAt(POSITION_BOTTOM, stack, false /* includingParents */); - } - - // Find the next position where the stack should be placed - final int numStacks = isRootTask ? getStackCount() : stack.getParent().getChildCount(); - for (int stackNdx = 0; stackNdx < numStacks; stackNdx++) { - final ActivityStack s = isRootTask ? getStackAt(stackNdx) - : (ActivityStack) stack.getParent().getChildAt(stackNdx); - if (s == stack) { - continue; - } - final int winMode = s.getWindowingMode(); - final boolean isValidWindowingMode = winMode == WINDOWING_MODE_FULLSCREEN - || winMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; - if (s.shouldBeVisible(null) && isValidWindowingMode) { - // Move the provided stack to behind this stack - final int position = Math.max(0, stackNdx - 1); - if (isRootTask) { - positionStackAt(stack, position); - } else { - stack.getParent().positionChildAt(position, stack, false /*includingParents */); - } - break; - } - } - } - - /** - * Moves the {@param stack} behind the given {@param behindStack} if possible. If - * {@param behindStack} is not currently in the display, then then the stack is moved to the - * back. Generally used in conjunction with {@link #moveStackBehindBottomMostVisibleStack}. - */ - void moveStackBehindStack(ActivityStack stack, ActivityStack behindStack) { - if (behindStack == null || behindStack == stack) { - return; - } - - final WindowContainer parent = stack.getParent(); - if (parent == null || parent != behindStack.getParent()) { - return; - } - - // Note that positionChildAt will first remove the given stack before inserting into the - // list, so we need to adjust the insertion index to account for the removed index - // TODO: Remove this logic when WindowContainer.positionChildAt() is updated to adjust the - // position internally - final int stackIndex = parent.mChildren.indexOf(stack); - final int behindStackIndex = parent.mChildren.indexOf(behindStack); - final int insertIndex = stackIndex <= behindStackIndex - ? behindStackIndex - 1 : behindStackIndex; - final int position = Math.max(0, insertIndex); - if (stack.isRootTask()) { - positionStackAt(stack, position); - } else { - parent.positionChildAt(position, stack, false /* includingParents */); - } - } - void ensureActivitiesVisible(ActivityRecord starting, int configChanges, boolean preserveWindows, boolean notifyClients) { for (int stackNdx = getStackCount() - 1; stackNdx >= 0; --stackNdx) { @@ -6770,50 +5380,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } } - void moveHomeStackToFront(String reason) { - final ActivityStack homeStack = getOrCreateRootHomeTask(); - if (homeStack != null) { - homeStack.moveToFront(reason); - } - } - - /** - * Moves the focusable home activity to top. If there is no such activity, the home stack will - * still move to top. - */ - void moveHomeActivityToTop(String reason) { - final ActivityRecord top = getHomeActivity(); - if (top == null) { - moveHomeStackToFront(reason); - return; - } - top.moveFocusableActivityToTop(reason); - } - - @Nullable - ActivityRecord getHomeActivity() { - return getHomeActivityForUser(mRootWindowContainer.mCurrentUser); - } - - @Nullable - ActivityRecord getHomeActivityForUser(int userId) { - final ActivityStack homeStack = getRootHomeTask(); - if (homeStack == null) { - return null; - } - - final PooledPredicate p = PooledLambda.obtainPredicate( - DisplayContent::isHomeActivityForUser, PooledLambda.__(ActivityRecord.class), - userId); - final ActivityRecord r = homeStack.getActivity(p); - p.recycle(); - return r; - } - - private static boolean isHomeActivityForUser(ActivityRecord r, int userId) { - return r.isActivityTypeHome() && (userId == UserHandle.USER_ALL || r.mUserId == userId); - } - boolean isSleeping() { return mSleeping; } @@ -6844,7 +5410,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo * Notifies of a stack order change * @param stack The stack which triggered the order change */ - private void onStackOrderChanged(ActivityStack stack) { + void onStackOrderChanged(ActivityStack stack) { for (int i = mStackOrderChangedCallbacks.size() - 1; i >= 0; i--) { mStackOrderChangedCallbacks.get(i).onStackOrderChanged(stack); } diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index f593393eecfb..367151cf0f79 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -78,7 +78,6 @@ import static android.view.WindowManager.LayoutParams.SOFT_INPUT_MASK_ADJUST; import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_BOOT_PROGRESS; import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; -import static android.view.WindowManager.LayoutParams.TYPE_DREAM; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_CONSUMER; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG; @@ -850,7 +849,6 @@ public class DisplayPolicy { | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; attrs.flags &= ~WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH; break; - case TYPE_DREAM: case TYPE_WALLPAPER: // Dreams and wallpapers don't have an app window token and can thus not be // letterboxed. Hence always let them extend under the cutout. @@ -1225,13 +1223,6 @@ public class DisplayPolicy { if (DEBUG_ANIM) Slog.i(TAG, "**** STARTING EXIT"); return R.anim.app_starting_exit; } - } else if (win.getAttrs().type == TYPE_DREAM && mDreamingLockscreen - && transit == TRANSIT_ENTER) { - // Special case: we are animating in a dream, while the keyguard - // is shown. We don't want an animation on the dream, because - // we need it shown immediately with the keyguard animating away - // to reveal it. - return ANIMATION_NONE; } return ANIMATION_STYLEABLE; @@ -2528,7 +2519,7 @@ public class DisplayPolicy { if ((fl & FLAG_FORCE_NOT_FULLSCREEN) != 0) { mForceStatusBar = true; } - if (attrs.type == TYPE_DREAM) { + if (win.isDreamWindow()) { // If the lockscreen was showing when the dream started then wait // for the dream to draw before hiding the lockscreen. if (!mDreamingLockscreen diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java index 60b817c13236..af89a05bfa62 100644 --- a/services/core/java/com/android/server/wm/DisplayRotation.java +++ b/services/core/java/com/android/server/wm/DisplayRotation.java @@ -484,11 +484,8 @@ public class DisplayRotation { prepareNormalRotationAnimation(); } - // TODO(b/147469351): Remove the restriction. - if (mDisplayContent.mFixedRotationLaunchingApp == null) { - // Give a remote handler (system ui) some time to reposition things. - startRemoteRotation(oldRotation, mRotation); - } + // Give a remote handler (system ui) some time to reposition things. + startRemoteRotation(oldRotation, mRotation); return true; } diff --git a/services/core/java/com/android/server/wm/InputManagerCallback.java b/services/core/java/com/android/server/wm/InputManagerCallback.java index deaec0ac75ae..9c4ac890fed8 100644 --- a/services/core/java/com/android/server/wm/InputManagerCallback.java +++ b/services/core/java/com/android/server/wm/InputManagerCallback.java @@ -172,8 +172,20 @@ final class InputManagerCallback implements InputManagerService.WindowManagerCal * Called by the InputManager. */ @Override - public long notifyANR(InputApplicationHandle inputApplicationHandle, - IBinder token, String reason) { + public long notifyANR(InputApplicationHandle inputApplicationHandle, IBinder token, + String reason) { + final long startTime = SystemClock.uptimeMillis(); + try { + return notifyANRInner(inputApplicationHandle, token, reason); + } finally { + // Log the time because the method is called from InputDispatcher thread. It shouldn't + // take too long that may affect input response time. + Slog.d(TAG_WM, "notifyANR took " + (SystemClock.uptimeMillis() - startTime) + "ms"); + } + } + + private long notifyANRInner(InputApplicationHandle inputApplicationHandle, IBinder token, + String reason) { ActivityRecord activity = null; WindowState windowState = null; boolean aboveSystem = false; diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java index 18332b9484c0..88cdd1781aee 100644 --- a/services/core/java/com/android/server/wm/InputMonitor.java +++ b/services/core/java/com/android/server/wm/InputMonitor.java @@ -62,7 +62,7 @@ final class InputMonitor { // When true, need to call updateInputWindowsLw(). private boolean mUpdateInputWindowsNeeded = true; private boolean mUpdateInputWindowsPending; - private boolean mUpdateInputWindowsImmediately; + private boolean mApplyImmediately; // Currently focused input window handle. private InputWindowHandle mFocusedInputWindowHandle; @@ -347,20 +347,14 @@ final class InputMonitor { } } - /** - * Immediately update the input transaction and merge into the passing Transaction that could be - * collected and applied later. - */ - void updateInputWindowsImmediately(SurfaceControl.Transaction t) { + void updateInputWindowsImmediately() { mHandler.removeCallbacks(mUpdateInputWindows); - mUpdateInputWindowsImmediately = true; + mApplyImmediately = true; mUpdateInputWindows.run(); - mUpdateInputWindowsImmediately = false; - t.merge(mInputTransaction); + mApplyImmediately = false; } - /** - * Called when the current input focus changes. + /* Called when the current input focus changes. * Layer assignment is assumed to be complete by the time this is called. */ public void setInputFocusLw(WindowState newWindow, boolean updateInputWindows) { @@ -471,7 +465,10 @@ final class InputMonitor { if (mAddWallpaperInputConsumerHandle) { mWallpaperInputConsumer.show(mInputTransaction, 0); } - if (!mUpdateInputWindowsImmediately) { + + if (mApplyImmediately) { + mInputTransaction.apply(); + } else { mDisplayContent.getPendingTransaction().merge(mInputTransaction); mDisplayContent.scheduleAnimation(); } diff --git a/services/core/java/com/android/server/wm/InsetsPolicy.java b/services/core/java/com/android/server/wm/InsetsPolicy.java index fda70d14db2b..b2f5988719cf 100644 --- a/services/core/java/com/android/server/wm/InsetsPolicy.java +++ b/services/core/java/com/android/server/wm/InsetsPolicy.java @@ -77,6 +77,9 @@ class InsetsPolicy { /** Updates the target which can control system bars. */ void updateBarControlTarget(@Nullable WindowState focusedWin) { + if (mFocusedWin != focusedWin){ + abortTransient(); + } mFocusedWin = focusedWin; mStateController.onBarControlTargetChanged(getStatusControlTarget(focusedWin), getFakeStatusControlTarget(focusedWin), @@ -123,11 +126,13 @@ class InsetsPolicy { mPolicy.getStatusBarManagerInternal().showTransient(mDisplayContent.getDisplayId(), mShowingTransientTypes.toArray()); updateBarControlTarget(mFocusedWin); + InsetsState state = new InsetsState(mStateController.getRawInsetsState()); startAnimation(true /* show */, () -> { synchronized (mDisplayContent.mWmService.mGlobalLock) { mStateController.notifyInsetsChanged(); } - }); + }, state); + mStateController.onInsetsModified(mDummyControlTarget, state); } } @@ -135,13 +140,15 @@ class InsetsPolicy { if (mShowingTransientTypes.size() == 0) { return; } + InsetsState state = new InsetsState(mStateController.getRawInsetsState()); startAnimation(false /* show */, () -> { synchronized (mDisplayContent.mWmService.mGlobalLock) { mShowingTransientTypes.clear(); mStateController.notifyInsetsChanged(); updateBarControlTarget(mFocusedWin); } - }); + }, state); + mStateController.onInsetsModified(mDummyControlTarget, state); } boolean isTransient(@InternalInsetsType int type) { @@ -152,14 +159,22 @@ class InsetsPolicy { * @see InsetsStateController#getInsetsForDispatch */ InsetsState getInsetsForDispatch(WindowState target) { - InsetsState state = mStateController.getInsetsForDispatch(target); + InsetsState originalState = mStateController.getInsetsForDispatch(target); + InsetsState state = originalState; for (int i = mShowingTransientTypes.size() - 1; i >= 0; i--) { + state = new InsetsState(state); state.setSourceVisible(mShowingTransientTypes.get(i), false); } if (mFocusedWin != null && getStatusControlTarget(mFocusedWin) == mDummyControlTarget) { + if (state == originalState) { + state = new InsetsState(state); + } state.setSourceVisible(ITYPE_STATUS_BAR, mFocusedWin.getRequestedInsetsState()); } if (mFocusedWin != null && getNavControlTarget(mFocusedWin) == mDummyControlTarget) { + if (state == originalState) { + state = new InsetsState(state); + } state.setSourceVisible(ITYPE_NAVIGATION_BAR, mFocusedWin.getRequestedInsetsState()); } return state; @@ -206,6 +221,13 @@ class InsetsPolicy { } } + private void abortTransient() { + mPolicy.getStatusBarManagerInternal().abortTransient(mDisplayContent.getDisplayId(), + mShowingTransientTypes.toArray()); + mShowingTransientTypes.clear(); + updateBarControlTarget(mFocusedWin); + } + private @Nullable InsetsControlTarget getFakeStatusControlTarget( @Nullable WindowState focused) { return getStatusControlTarget(focused) == mDummyControlTarget ? focused : null; @@ -286,19 +308,20 @@ class InsetsPolicy { } @VisibleForTesting - void startAnimation(boolean show, Runnable callback) { + void startAnimation(boolean show, Runnable callback, InsetsState state) { int typesReady = 0; final SparseArray<InsetsSourceControl> controls = new SparseArray<>(); final IntArray showingTransientTypes = mShowingTransientTypes; for (int i = showingTransientTypes.size() - 1; i >= 0; i--) { - InsetsSourceProvider provider = - mStateController.getSourceProvider(showingTransientTypes.get(i)); + int type = showingTransientTypes.get(i); + InsetsSourceProvider provider = mStateController.getSourceProvider(type); InsetsSourceControl control = provider.getControl(mDummyControlTarget); if (control == null || control.getLeash() == null) { continue; } - typesReady |= InsetsState.toPublicType(showingTransientTypes.get(i)); + typesReady |= InsetsState.toPublicType(type); controls.put(control.getType(), new InsetsSourceControl(control)); + state.setSourceVisible(type, show); } controlAnimationUnchecked(typesReady, controls, show, callback); } diff --git a/services/core/java/com/android/server/wm/InsetsSourceProvider.java b/services/core/java/com/android/server/wm/InsetsSourceProvider.java index ada6d4710967..cb0d8536fe72 100644 --- a/services/core/java/com/android/server/wm/InsetsSourceProvider.java +++ b/services/core/java/com/android/server/wm/InsetsSourceProvider.java @@ -259,10 +259,13 @@ class InsetsSourceProvider { if (target == null) { // Cancelling the animation will invoke onAnimationCancelled, resetting all the fields. mWin.cancelAnimation(); + setClientVisible(InsetsState.getDefaultVisibility(mSource.getType())); return; } mAdapter = new ControlAdapter(); - setClientVisible(InsetsState.getDefaultVisibility(mSource.getType())); + if (getSource().getType() == ITYPE_IME) { + setClientVisible(InsetsState.getDefaultVisibility(mSource.getType())); + } final Transaction t = mDisplayContent.getPendingTransaction(); mWin.startAnimation(t, mAdapter, !mClientVisible /* hidden */, ANIMATION_TYPE_INSETS_CONTROL, null /* animationFinishedCallback */); diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java index 6b39fd2a70e3..a936e74bf694 100644 --- a/services/core/java/com/android/server/wm/KeyguardController.java +++ b/services/core/java/com/android/server/wm/KeyguardController.java @@ -407,10 +407,10 @@ class KeyguardController { // stack since it will be complicated/risky to try to put the activity on top // of the lock screen in the right fullscreen configuration. final DisplayContent display = mRootWindowContainer.getDefaultDisplay(); - if (!display.isSplitScreenModeActivated()) { + if (!display.mTaskContainers.isSplitScreenModeActivated()) { return; } - display.onSplitScreenModeDismissed(); + display.mTaskContainers.onSplitScreenModeDismissed(); } } @@ -565,6 +565,7 @@ class KeyguardController { dumpDisplayStates(pw, prefix); pw.println(prefix + " mDismissalRequested=" + mDismissalRequested); pw.println(prefix + " mVisibilityTransactionDepth=" + mVisibilityTransactionDepth); + pw.println(); } void dumpDebug(ProtoOutputStream proto, long fieldId) { diff --git a/services/core/java/com/android/server/wm/LockTaskController.java b/services/core/java/com/android/server/wm/LockTaskController.java index 3b25b742e327..337a68e62043 100644 --- a/services/core/java/com/android/server/wm/LockTaskController.java +++ b/services/core/java/com/android/server/wm/LockTaskController.java @@ -917,7 +917,7 @@ public class LockTaskController { } public void dump(PrintWriter pw, String prefix) { - pw.println(prefix + "LockTaskController"); + pw.println(prefix + "LockTaskController:"); prefix = prefix + " "; pw.println(prefix + "mLockTaskModeState=" + lockTaskModeToString()); pw.println(prefix + "mLockTaskModeTasks="); @@ -929,6 +929,7 @@ public class LockTaskController { pw.println(prefix + " u" + mLockTaskPackages.keyAt(i) + ":" + Arrays.toString(mLockTaskPackages.valueAt(i))); } + pw.println(); } private String lockTaskModeToString() { diff --git a/services/core/java/com/android/server/wm/OWNERS b/services/core/java/com/android/server/wm/OWNERS index 0ab1a3e916e3..4be4c896cbff 100644 --- a/services/core/java/com/android/server/wm/OWNERS +++ b/services/core/java/com/android/server/wm/OWNERS @@ -10,3 +10,4 @@ roosa@google.com erosky@google.com riddlehsu@google.com louischang@google.com +winsonc@google.com diff --git a/services/core/java/com/android/server/wm/PinnedStackController.java b/services/core/java/com/android/server/wm/PinnedStackController.java index e14b8ae13bbc..66dbfd5f2a84 100644 --- a/services/core/java/com/android/server/wm/PinnedStackController.java +++ b/services/core/java/com/android/server/wm/PinnedStackController.java @@ -163,24 +163,13 @@ class PinnedStackController { } /** - * Saves the current snap fraction for re-entry of the current activity into PiP. + * Activity is hidden (either stopped or removed), resets the last saved snap fraction + * so that the default bounds will be returned for the next session. */ - void saveReentryBounds(final ComponentName componentName, final Rect stackBounds) { + void onActivityHidden(ComponentName componentName) { if (mPinnedStackListener == null) return; try { - mPinnedStackListener.onSaveReentryBounds(componentName, stackBounds); - } catch (RemoteException e) { - Slog.e(TAG_WM, "Error delivering save reentry fraction event.", e); - } - } - - /** - * Resets the last saved snap fraction so that the default bounds will be returned. - */ - void resetReentryBounds(ComponentName componentName) { - if (mPinnedStackListener == null) return; - try { - mPinnedStackListener.onResetReentryBounds(componentName); + mPinnedStackListener.onActivityHidden(componentName); } catch (RemoteException e) { Slog.e(TAG_WM, "Error delivering reset reentry fraction event.", e); } diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java index 244ba82ce32c..12be9df55fad 100644 --- a/services/core/java/com/android/server/wm/RecentTasks.java +++ b/services/core/java/com/android/server/wm/RecentTasks.java @@ -25,6 +25,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; @@ -1309,6 +1310,7 @@ class RecentTasks { == FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) { return false; } + break; } // Ignore certain windowing modes @@ -1316,23 +1318,21 @@ class RecentTasks { case WINDOWING_MODE_PINNED: return false; case WINDOWING_MODE_SPLIT_SCREEN_PRIMARY: - if (DEBUG_RECENTS_TRIM_TASKS) Slog.d(TAG, "\ttop=" + task.getStack().getTopMostTask()); + if (DEBUG_RECENTS_TRIM_TASKS) { + Slog.d(TAG, "\ttop=" + task.getStack().getTopMostTask()); + } final ActivityStack stack = task.getStack(); if (stack != null && stack.getTopMostTask() == task) { // Only the non-top task of the primary split screen mode is visible return false; } - } - - // Tasks managed by/associated with an ActivityView should be excluded from recents. - // singleTaskInstance is set on the VirtualDisplay managed by ActivityView - // TODO(b/126185105): Find a different signal to use besides isSingleTaskInstance - final ActivityStack stack = task.getStack(); - if (stack != null) { - DisplayContent display = stack.getDisplay(); - if (display != null && display.isSingleTaskInstance()) { - return false; - } + break; + case WINDOWING_MODE_MULTI_WINDOW: + // Ignore tasks that are always on top + if (task.isAlwaysOnTop()) { + return false; + } + break; } // If we're in lock task mode, ignore the root task diff --git a/services/core/java/com/android/server/wm/RecentsAnimation.java b/services/core/java/com/android/server/wm/RecentsAnimation.java index 9089240fe9d1..26b263ed6674 100644 --- a/services/core/java/com/android/server/wm/RecentsAnimation.java +++ b/services/core/java/com/android/server/wm/RecentsAnimation.java @@ -208,7 +208,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks, try { if (hasExistingActivity) { // Move the recents activity into place for the animation if it is not top most - mDefaultDisplay.moveStackBehindBottomMostVisibleStack(targetStack); + mDefaultDisplay.mTaskContainers.moveStackBehindBottomMostVisibleStack(targetStack); ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS, "Moved stack=%s behind stack=%s", targetStack, mDefaultDisplay.getStackAbove(targetStack)); @@ -227,7 +227,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks, targetStack = mDefaultDisplay.getStack(WINDOWING_MODE_UNDEFINED, mTargetActivityType); targetActivity = getTargetActivity(targetStack); - mDefaultDisplay.moveStackBehindBottomMostVisibleStack(targetStack); + mDefaultDisplay.mTaskContainers.moveStackBehindBottomMostVisibleStack(targetStack); ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS, "Moved stack=%s behind stack=%s", targetStack, mDefaultDisplay.getStackAbove(targetStack)); @@ -352,7 +352,8 @@ class RecentsAnimation implements RecentsAnimationCallbacks, } else if (reorderMode == REORDER_MOVE_TO_ORIGINAL_POSITION){ // Restore the target stack to its previous position final DisplayContent display = targetActivity.getDisplay(); - display.moveStackBehindStack(targetStack, mRestoreTargetBehindStack); + display.mTaskContainers.moveStackBehindStack(targetStack, + mRestoreTargetBehindStack); if (WM_DEBUG_RECENTS_ANIMATIONS.isLogToAny()) { final ActivityStack aboveTargetStack = mDefaultDisplay.getStackAbove(targetStack); @@ -400,6 +401,12 @@ class RecentsAnimation implements RecentsAnimationCallbacks, throw e; } finally { mService.continueWindowLayout(); + // Make sure the surfaces are updated with the latest state. Sometimes the + // surface placement may be skipped if display configuration is changed (i.e. + // {@link DisplayContent#mWaitingForConfig} is true). + if (mWindowManager.mRoot.isLayoutNeeded()) { + mWindowManager.mRoot.performSurfacePlacement(); + } Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); } }); diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java index 3e5cb50d6101..a30b70de267d 100644 --- a/services/core/java/com/android/server/wm/RecentsAnimationController.java +++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java @@ -667,7 +667,7 @@ public class RecentsAnimationController implements DeathRecipient { mTargetActivityRecord.token); } if (mTargetActivityRecord.hasFixedRotationTransform()) { - mTargetActivityRecord.clearFixedRotationTransform(); + mTargetActivityRecord.finishFixedRotationTransform(); } } diff --git a/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java b/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java index 420997a5b82d..770c08889ab9 100644 --- a/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java +++ b/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java @@ -257,8 +257,8 @@ class ResetTargetTaskHelper { } if (targetTask == null) { if (alwaysCreateTask) { - targetTask = display.getOrCreateStack(windowingMode, activityType, - false /* onTop */); + targetTask = display.mTaskContainers.getOrCreateStack(windowingMode, + activityType, false /* onTop */); } else { targetTask = mTargetStack.reuseOrCreateTask(r.info, null /*intent*/, false /*toTop*/); diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index 6e56bf4dafd7..26eb36f1341d 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -36,7 +36,6 @@ import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.INVALID_DISPLAY; import static android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_SUSTAINED_PERFORMANCE_MODE; -import static android.view.WindowManager.LayoutParams.TYPE_DREAM; import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG; import static android.view.WindowManager.TRANSIT_CRASHING_ACTIVITY_CLOSE; import static android.view.WindowManager.TRANSIT_SHOW_SINGLE_TASK_DISPLAY; @@ -796,10 +795,10 @@ class RootWindowContainer extends WindowContainer<DisplayContent> return leakedSurface || killedApps; } - void performSurfacePlacement(boolean recoveringMemory) { + void performSurfacePlacement() { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "performSurfacePlacement"); try { - performSurfacePlacementNoTrace(recoveringMemory); + performSurfacePlacementNoTrace(); } finally { Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); } @@ -807,7 +806,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> // "Something has changed! Let's make it correct now." // TODO: Super crazy long method that should be broken down... - void performSurfacePlacementNoTrace(boolean recoveringMemory) { + void performSurfacePlacementNoTrace() { if (DEBUG_WINDOW_TRACE) Slog.v(TAG, "performSurfacePlacementInner: entry. Called by " + Debug.getCallers(3)); @@ -842,7 +841,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "applySurfaceChanges"); mWmService.openSurfaceTransaction(); try { - applySurfaceChangesTransaction(recoveringMemory); + applySurfaceChangesTransaction(); } catch (RuntimeException e) { Slog.wtf(TAG, "Unhandled exception in Window Manager", e); } finally { @@ -1042,7 +1041,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } } - private void applySurfaceChangesTransaction(boolean recoveringMemory) { + private void applySurfaceChangesTransaction() { mHoldScreenWindow = null; mObscuringWindow = null; @@ -1065,7 +1064,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> final int count = mChildren.size(); for (int j = 0; j < count; ++j) { final DisplayContent dc = mChildren.get(j); - dc.applySurfaceChangesTransaction(recoveringMemory); + dc.applySurfaceChangesTransaction(); } // Give the display manager a chance to adjust properties like display rotation if it needs @@ -1138,7 +1137,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> // While a dream or keyguard is showing, obscure ordinary application content on // secondary displays (by forcibly enabling mirroring unless there is other content // we want to show) but still allow opaque keyguard dialogs to be shown. - if (type == TYPE_DREAM || mWmService.mPolicy.isKeyguardShowing()) { + if (w.isDreamWindow() || mWmService.mPolicy.isKeyguardShowing()) { mObscureApplicationContentOnSecondaryDisplays = true; } displayHasContent = true; @@ -1372,7 +1371,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> final DisplayContent defaultDisplay = getDefaultDisplay(); - defaultDisplay.getOrCreateStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, ON_TOP); + defaultDisplay.mTaskContainers.getOrCreateStack(WINDOWING_MODE_FULLSCREEN, + ACTIVITY_TYPE_HOME, ON_TOP); positionChildAt(POSITION_TOP, defaultDisplay, false /* includingParents */); } @@ -1441,7 +1441,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } ActivityRecord getDefaultDisplayHomeActivityForUser(int userId) { - return getDisplayContent(DEFAULT_DISPLAY).getHomeActivityForUser(userId); + return getDisplayContent(DEFAULT_DISPLAY).mTaskContainers.getHomeActivityForUser(userId); } boolean startHomeOnAllDisplays(int userId, String reason) { @@ -1637,7 +1637,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> displayId = DEFAULT_DISPLAY; } - final ActivityRecord r = getDisplayContent(displayId).getHomeActivity(); + final ActivityRecord r = getDisplayContent(displayId).mTaskContainers.getHomeActivity(); final String myReason = reason + " resumeHomeActivity"; // Only resume home activity if isn't finishing. @@ -1838,7 +1838,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> // focus order. for (int i = getChildCount() - 1; i >= 0; --i) { final DisplayContent display = getChildAt(i); - final ActivityRecord resumedActivityOnDisplay = display.getResumedActivity(); + final ActivityRecord resumedActivityOnDisplay = display.mTaskContainers + .getResumedActivity(); if (resumedActivityOnDisplay != null) { return resumedActivityOnDisplay; } @@ -1971,8 +1972,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> final int focusStackId = topFocusedStack != null ? topFocusedStack.getRootTaskId() : INVALID_TASK_ID; // We dismiss the docked stack whenever we switch users. - if (getDefaultDisplay().isSplitScreenModeActivated()) { - getDefaultDisplay().onSplitScreenModeDismissed(); + if (getDefaultDisplay().mTaskContainers.isSplitScreenModeActivated()) { + getDefaultDisplay().mTaskContainers.onSplitScreenModeDismissed(); } // Also dismiss the pinned stack whenever we switch users. Removing the pinned stack will // also cause all tasks to be moved to the fullscreen stack at a position that is @@ -1994,7 +1995,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> final int restoreStackId = mUserStackInFront.get(userId); ActivityStack stack = getStack(restoreStackId); if (stack == null) { - stack = getDefaultDisplay().getOrCreateRootHomeTask(); + stack = getDefaultDisplay().mTaskContainers.getOrCreateRootHomeTask(); } final boolean homeInFront = stack.isActivityTypeHome(); if (stack.isOnHomeDisplay()) { @@ -2017,7 +2018,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> void updateUserStack(int userId, ActivityStack stack) { if (userId != mCurrentUser) { if (stack == null) { - stack = getDefaultDisplay().getOrCreateRootHomeTask(); + stack = getDefaultDisplay().mTaskContainers.getOrCreateRootHomeTask(); } mUserStackInFront.put(userId, stack.getRootTaskId()); @@ -2114,8 +2115,9 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } else { // In the case of multiple activities, we will create a new task for it and then // move the PIP activity into the task. - stack = display.createStack(WINDOWING_MODE_PINNED, r.getActivityType(), ON_TOP, - r.info, r.intent, false /* createdByOrganizer */); + stack = display.mTaskContainers.createStack(WINDOWING_MODE_PINNED, + r.getActivityType(), ON_TOP, r.info, r.intent, + false /* createdByOrganizer */); // There are multiple activities in the task and moving the top activity should // reveal/leave the other activities in their original task. @@ -2154,7 +2156,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> // Looking up task on preferred display first final DisplayContent preferredDisplay = getDisplayContent(preferredDisplayId); if (preferredDisplay != null) { - preferredDisplay.findTaskLocked(r, true /* isPreferredDisplay */, mTmpFindTaskResult); + preferredDisplay.mTaskContainers.findTaskLocked(r, true /* isPreferredDisplay */, + mTmpFindTaskResult); if (mTmpFindTaskResult.mIdealMatch) { return mTmpFindTaskResult.mRecord; } @@ -2166,7 +2169,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> continue; } - display.findTaskLocked(r, false /* isPreferredDisplay */, mTmpFindTaskResult); + display.mTaskContainers.findTaskLocked(r, false /* isPreferredDisplay */, + mTmpFindTaskResult); if (mTmpFindTaskResult.mIdealMatch) { return mTmpFindTaskResult.mRecord; } @@ -2233,7 +2237,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> resumedOnDisplay |= result; continue; } - if (display.isTopStack(stack) && topRunningActivity.isState(RESUMED)) { + if (display.mTaskContainers.isTopStack(stack) + && topRunningActivity.isState(RESUMED)) { // Kick off any lingering app transitions form the MoveTaskToFront operation, // but only consider the top task and stack on that display. stack.executeAppTransition(targetOptions); @@ -2289,6 +2294,9 @@ class RootWindowContainer extends WindowContainer<DisplayContent> TRANSIT_SHOW_SINGLE_TASK_DISPLAY, false); } stack.awakeFromSleepingLocked(); + if (display.isSingleTaskInstance()) { + display.executeAppTransition(); + } if (stack.isFocusedStackOnDisplay() && !mStackSupervisor.getKeyguardController() .isKeyguardOrAodShowing(display.mDisplayId)) { @@ -2305,7 +2313,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> protected ActivityStack getStack(int stackId) { for (int i = getChildCount() - 1; i >= 0; --i) { - final ActivityStack stack = getChildAt(i).getStack(stackId); + final ActivityStack stack = getChildAt(i).mTaskContainers.getStack(stackId); if (stack != null) { return stack; } @@ -2781,7 +2789,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } final DisplayContent display = getDisplayContentOrCreate(displayId); if (display != null) { - stack = display.getOrCreateStack(r, options, candidateTask, activityType, onTop); + stack = display.mTaskContainers.getOrCreateStack(r, options, candidateTask, + activityType, onTop); if (stack != null) { return stack; } @@ -2803,8 +2812,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> display = stack.getDisplay(); if (display != null && canLaunchOnDisplay(r, display.mDisplayId)) { if (windowingMode == WindowConfiguration.WINDOWING_MODE_UNDEFINED) { - windowingMode = display.resolveWindowingMode(r, options, candidateTask, - activityType); + windowingMode = display.mTaskContainers.resolveWindowingMode(r, options, + candidateTask, activityType); } // Always allow organized tasks that created by organizer since the activity type // of an organized task is decided by the activity type of its top child, which @@ -2828,12 +2837,13 @@ class RootWindowContainer extends WindowContainer<DisplayContent> if (display == null || !canLaunchOnDisplay(r, display.mDisplayId)) { display = getDefaultDisplay(); if (windowingMode == WindowConfiguration.WINDOWING_MODE_UNDEFINED) { - windowingMode = display.resolveWindowingMode(r, options, candidateTask, - activityType); + windowingMode = display.mTaskContainers.resolveWindowingMode(r, options, + candidateTask, activityType); } } - return display.getOrCreateStack(r, options, candidateTask, activityType, onTop); + return display.mTaskContainers.getOrCreateStack(r, options, candidateTask, activityType, + onTop); } /** @return true if activity record is null or can be launched on provided display. */ @@ -2893,8 +2903,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> windowingMode = options != null ? options.getLaunchWindowingMode() : r.getWindowingMode(); } - windowingMode = displayContent.validateWindowingMode(windowingMode, r, candidateTask, - r.getActivityType()); + windowingMode = displayContent.mTaskContainers.validateWindowingMode(windowingMode, r, + candidateTask, r.getActivityType()); // Return the topmost valid stack on the display. for (int i = displayContent.getStackCount() - 1; i >= 0; --i) { @@ -2982,8 +2992,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> // was on. preferredDisplay = getDisplayContent(currentFocus.mPrevDisplayId); } - final ActivityStack preferredFocusableStack = preferredDisplay.getNextFocusableStack( - currentFocus, ignoreCurrent); + final ActivityStack preferredFocusableStack = preferredDisplay.mTaskContainers + .getNextFocusableStack(currentFocus, ignoreCurrent); if (preferredFocusableStack != null) { return preferredFocusableStack; } @@ -3001,8 +3011,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> // We've already checked this one continue; } - final ActivityStack nextFocusableStack = display.getNextFocusableStack(currentFocus, - ignoreCurrent); + final ActivityStack nextFocusableStack = display.mTaskContainers + .getNextFocusableStack(currentFocus, ignoreCurrent); if (nextFocusableStack != null) { return nextFocusableStack; } @@ -3393,11 +3403,10 @@ class RootWindowContainer extends WindowContainer<DisplayContent> @VisibleForTesting void getRunningTasks(int maxNum, List<ActivityManager.RunningTaskInfo> list, - @WindowConfiguration.ActivityType int ignoreActivityType, - @WindowConfiguration.WindowingMode int ignoreWindowingMode, int callingUid, - boolean allowed, boolean crossUser, ArraySet<Integer> profileIds) { - mStackSupervisor.getRunningTasks().getTasks(maxNum, list, ignoreActivityType, - ignoreWindowingMode, this, callingUid, allowed, crossUser, profileIds); + boolean filterOnlyVisibleRecents, int callingUid, boolean allowed, boolean crossUser, + ArraySet<Integer> profileIds) { + mStackSupervisor.getRunningTasks().getTasks(maxNum, list, filterOnlyVisibleRecents, this, + callingUid, allowed, crossUser, profileIds); } void sendPowerHintForLaunchStartIfNeeded(boolean forceSend, ActivityRecord targetActivity) { @@ -3415,7 +3424,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> boolean allFocusedProcessesDiffer = true; for (int displayNdx = 0; displayNdx < getChildCount(); ++displayNdx) { final DisplayContent displayContent = getChildAt(displayNdx); - final ActivityRecord resumedActivity = displayContent.getResumedActivity(); + final ActivityRecord resumedActivity = displayContent.mTaskContainers + .getResumedActivity(); final WindowProcessController resumedActivityProcess = resumedActivity == null ? null : resumedActivity.app; @@ -3486,6 +3496,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> final DisplayContent display = getChildAt(i); display.dump(pw, prefix, true /* dumpAll */); } + pw.println(); } /** @@ -3516,8 +3527,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> printed = stack.dump(fd, pw, dumpAll, dumpClient, dumpPackage, needSep); needSep = printed; } - printThisActivity(pw, displayContent.getResumedActivity(), dumpPackage, needSep, - " ResumedActivity:"); + printThisActivity(pw, displayContent.mTaskContainers.getResumedActivity(), dumpPackage, + needSep, " ResumedActivity:"); } printed |= dumpHistoryList(fd, pw, mStackSupervisor.mFinishingActivities, " ", diff --git a/services/core/java/com/android/server/wm/RunningTasks.java b/services/core/java/com/android/server/wm/RunningTasks.java index 02077fbf453e..3509ba72d058 100644 --- a/services/core/java/com/android/server/wm/RunningTasks.java +++ b/services/core/java/com/android/server/wm/RunningTasks.java @@ -16,12 +16,10 @@ package com.android.server.wm; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; -import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import android.app.ActivityManager.RunningTaskInfo; -import android.app.WindowConfiguration.ActivityType; -import android.app.WindowConfiguration.WindowingMode; import android.os.UserHandle; import android.util.ArraySet; @@ -49,13 +47,13 @@ class RunningTasks { private boolean mCrossUser; private ArraySet<Integer> mProfileIds; private boolean mAllowed; - private int mIgnoreActivityType; - private int mIgnoreWindowingMode; + private boolean mFilterOnlyVisibleRecents; private ActivityStack mTopDisplayFocusStack; + private RecentTasks mRecentTasks; - void getTasks(int maxNum, List<RunningTaskInfo> list, @ActivityType int ignoreActivityType, - @WindowingMode int ignoreWindowingMode, RootWindowContainer root, - int callingUid, boolean allowed, boolean crossUser, ArraySet<Integer> profileIds) { + void getTasks(int maxNum, List<RunningTaskInfo> list, boolean filterOnlyVisibleRecents, + RootWindowContainer root, int callingUid, boolean allowed, boolean crossUser, + ArraySet<Integer> profileIds) { // Return early if there are no tasks to fetch if (maxNum <= 0) { return; @@ -68,9 +66,9 @@ class RunningTasks { mCrossUser = crossUser; mProfileIds = profileIds; mAllowed = allowed; - mIgnoreActivityType = ignoreActivityType; - mIgnoreWindowingMode = ignoreWindowingMode; + mFilterOnlyVisibleRecents = filterOnlyVisibleRecents; mTopDisplayFocusStack = root.getTopDisplayFocusedStack(); + mRecentTasks = root.mService.getRecentTasks(); final PooledConsumer c = PooledLambda.obtainConsumer(RunningTasks::processTask, this, PooledLambda.__(Task.class)); @@ -107,14 +105,12 @@ class RunningTasks { return; } } - if (mIgnoreActivityType != ACTIVITY_TYPE_UNDEFINED - && task.getActivityType() == mIgnoreActivityType) { - // Skip ignored activity type - return; - } - if (mIgnoreWindowingMode != WINDOWING_MODE_UNDEFINED - && task.getWindowingMode() == mIgnoreWindowingMode) { - // Skip ignored windowing mode + if (mFilterOnlyVisibleRecents + && task.getActivityType() != ACTIVITY_TYPE_HOME + && task.getActivityType() != ACTIVITY_TYPE_RECENTS + && !mRecentTasks.isVisibleRecentTask(task)) { + // Skip if this task wouldn't be visibile (ever) from recents, with an exception for the + // home & recent tasks return; } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 7a41ea57610d..10be11aa940b 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -258,7 +258,7 @@ class Task extends WindowContainer<WindowContainer> { boolean autoRemoveRecents; // If true, we should automatically remove the task from // recents when activity finishes boolean askedCompatMode;// Have asked the user about compat mode for this task. - boolean hasBeenVisible; // Set if any activities in the task have been visible to the user. + private boolean mHasBeenVisible; // Set if any activities in the task have been visible String stringName; // caching of toString() result. boolean mUserSetupComplete; // The user set-up is complete as of the last time the task activity @@ -483,6 +483,10 @@ class Task extends WindowContainer<WindowContainer> { */ ITaskOrganizer mTaskOrganizer; private int mLastTaskOrganizerWindowingMode = -1; + /** + * Prevent duplicate calls to onTaskAppeared. + */ + boolean mTaskAppearedSent; /** * Last Picture-in-Picture params applicable to the task. Updated when the app @@ -1382,7 +1386,7 @@ class Task extends WindowContainer<WindowContainer> { // A rootable task that is now being added to be the child of an organized task. Making // sure the stack references is keep updated. if (mTaskOrganizer != null && mCreatedByOrganizer && child.asTask() != null) { - mDisplayContent.addStackReferenceIfNeeded((ActivityStack) child); + mDisplayContent.mTaskContainers.addStackReferenceIfNeeded((ActivityStack) child); } // Make sure the list of display UID whitelists is updated @@ -1428,7 +1432,7 @@ class Task extends WindowContainer<WindowContainer> { // A rootable child task that is now being removed from an organized task. Making sure // the stack references is keep updated. if (mTaskOrganizer != null && mCreatedByOrganizer && child.asTask() != null) { - mDisplayContent.removeStackReferenceIfNeeded((ActivityStack) child); + mDisplayContent.mTaskContainers.removeStackReferenceIfNeeded((ActivityStack) child); } removeChild(child, "removeChild"); } @@ -1517,7 +1521,7 @@ class Task extends WindowContainer<WindowContainer> { // We will automatically remove the task either if it has explicitly asked for // this, or it is empty and has never contained an activity that got shown to // the user. - return autoRemoveRecents || (!hasChild() && !hasBeenVisible); + return autoRemoveRecents || (!hasChild() && !getHasBeenVisible()); } /** @@ -2030,7 +2034,7 @@ class Task extends WindowContainer<WindowContainer> { } private void saveLaunchingStateIfNeeded(DisplayContent display) { - if (!hasBeenVisible) { + if (!getHasBeenVisible()) { // Not ever visible to user. return; } @@ -3558,7 +3562,7 @@ class Task extends WindowContainer<WindowContainer> { pw.print(prefix); pw.print("mRootProcess="); pw.println(mRootProcess); } pw.print(prefix); pw.print("taskId=" + mTaskId); pw.println(" stackId=" + getRootTaskId()); - pw.print(prefix + "hasBeenVisible=" + hasBeenVisible); + pw.print(prefix + "mHasBeenVisible=" + getHasBeenVisible()); pw.print(" mResizeMode=" + ActivityInfo.resizeModeToString(mResizeMode)); pw.print(" mSupportsPictureInPicture=" + mSupportsPictureInPicture); pw.print(" isResizeable=" + isResizeable()); @@ -4087,14 +4091,42 @@ class Task extends WindowContainer<WindowContainer> { super.reparentSurfaceControl(t, newParent); } + void setHasBeenVisible(boolean hasBeenVisible) { + mHasBeenVisible = hasBeenVisible; + if (hasBeenVisible) { + sendTaskAppeared(); + if (!isRootTask()) { + getRootTask().setHasBeenVisible(true); + } + } + } + + boolean getHasBeenVisible() { + return mHasBeenVisible; + } + + /** In the case that these three conditions are true, we want to send the Task to + * the organizer: + * 1. We have a SurfaceControl + * 2. An organizer has been set + * 3. We have finished drawing + * Any time any of these conditions are updated, the updating code should call + * sendTaskAppeared. + */ + private boolean taskAppearedReady() { + return mSurfaceControl != null && mTaskOrganizer != null && getHasBeenVisible(); + } + private void sendTaskAppeared() { - if (mSurfaceControl != null && mTaskOrganizer != null) { + if (taskAppearedReady() && !mTaskAppearedSent) { + mTaskAppearedSent = true; mAtmService.mTaskOrganizerController.onTaskAppeared(mTaskOrganizer, this); } } private void sendTaskVanished() { - if (mTaskOrganizer != null) { + if (mTaskOrganizer != null && mTaskAppearedSent) { + mTaskAppearedSent = false; mAtmService.mTaskOrganizerController.onTaskVanished(mTaskOrganizer, this); } } @@ -4113,6 +4145,7 @@ class Task extends WindowContainer<WindowContainer> { void taskOrganizerUnregistered() { mTaskOrganizer = null; + mTaskAppearedSent = false; mLastTaskOrganizerWindowingMode = -1; onTaskOrganizerChanged(); if (mCreatedByOrganizer) { diff --git a/services/core/java/com/android/server/wm/TaskContainers.java b/services/core/java/com/android/server/wm/TaskContainers.java new file mode 100644 index 000000000000..540bc9bbf997 --- /dev/null +++ b/services/core/java/com/android/server/wm/TaskContainers.java @@ -0,0 +1,1533 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.wm; + +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY; +import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; +import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; +import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; +import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; +import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; +import static android.app.WindowConfiguration.isSplitScreenWindowingMode; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; +import static android.window.WindowOrganizer.DisplayAreaOrganizer.FEATURE_TASK_CONTAINER; + +import static com.android.server.wm.ActivityStack.ActivityState.RESUMED; +import static com.android.server.wm.ActivityStack.STACK_VISIBILITY_VISIBLE; +import static com.android.server.wm.ActivityStackSupervisor.TAG_TASKS; +import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_STATES; +import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_TASKS; +import static com.android.server.wm.ActivityTaskManagerService.TAG_STACK; +import static com.android.server.wm.DisplayContent.alwaysCreateStack; +import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ADD_REMOVE; +import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ORIENTATION; +import static com.android.server.wm.RootWindowContainer.TAG_STATES; +import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; + +import android.annotation.Nullable; +import android.app.ActivityOptions; +import android.app.WindowConfiguration; +import android.content.Intent; +import android.content.pm.ActivityInfo; +import android.content.pm.ApplicationInfo; +import android.os.UserHandle; +import android.util.Slog; +import android.view.SurfaceControl; +import android.window.WindowContainerTransaction; + +import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.util.ToBooleanFunction; +import com.android.internal.util.function.pooled.PooledLambda; +import com.android.internal.util.function.pooled.PooledPredicate; +import com.android.server.protolog.common.ProtoLog; + +import java.util.ArrayList; +import java.util.List; + +/** + * Window container class that contains all containers on this display relating to Apps. + * I.e Activities. + */ +final class TaskContainers extends DisplayArea<ActivityStack> { + private DisplayContent mDisplayContent; + /** + * A control placed at the appropriate level for transitions to occur. + */ + private SurfaceControl mAppAnimationLayer; + private SurfaceControl mBoostedAppAnimationLayer; + private SurfaceControl mHomeAppAnimationLayer; + + /** + * Given that the split-screen divider does not have an AppWindowToken, it + * will have to live inside of a "NonAppWindowContainer". However, in visual Z order + * it will need to be interleaved with some of our children, appearing on top of + * both docked stacks but underneath any assistant stacks. + * + * To solve this problem we have this anchor control, which will always exist so + * we can always assign it the correct value in our {@link #assignChildLayers}. + * Likewise since it always exists, we can always + * assign the divider a layer relative to it. This way we prevent linking lifecycle + * events between tasks and the divider window. + */ + private SurfaceControl mSplitScreenDividerAnchor; + + // Cached reference to some special tasks we tend to get a lot so we don't need to loop + // through the list to find them. + private ActivityStack mRootHomeTask; + private ActivityStack mRootPinnedTask; + private ActivityStack mRootSplitScreenPrimaryTask; + + private final ArrayList<ActivityStack> mTmpAlwaysOnTopStacks = new ArrayList<>(); + private final ArrayList<ActivityStack> mTmpNormalStacks = new ArrayList<>(); + private final ArrayList<ActivityStack> mTmpHomeStacks = new ArrayList<>(); + + private ArrayList<Task> mTmpTasks = new ArrayList<>(); + + private ActivityTaskManagerService mAtmService; + + private RootWindowContainer mRootWindowContainer; + + // When non-null, new tasks get put into this root task. + private Task mLaunchRootTask = null; + + /** + * A focusable stack that is purposely to be positioned at the top. Although the stack may not + * have the topmost index, it is used as a preferred candidate to prevent being unable to resume + * target stack properly when there are other focusable always-on-top stacks. + */ + private ActivityStack mPreferredTopFocusableStack; + + private final RootWindowContainer.FindTaskResult + mTmpFindTaskResult = new RootWindowContainer.FindTaskResult(); + + /** + * If this is the same as {@link #getFocusedStack} then the activity on the top of the focused + * stack has been resumed. If stacks are changing position this will hold the old stack until + * the new stack becomes resumed after which it will be set to current focused stack. + */ + ActivityStack mLastFocusedStack; + + TaskContainers(DisplayContent displayContent, WindowManagerService service) { + super(service, Type.ANY, "TaskContainers", FEATURE_TASK_CONTAINER); + mDisplayContent = displayContent; + mRootWindowContainer = service.mRoot; + mAtmService = service.mAtmService; + } + + /** + * Returns the topmost stack on the display that is compatible with the input windowing mode + * and activity type. Null is no compatible stack on the display. + */ + ActivityStack getStack(int windowingMode, int activityType) { + if (activityType == ACTIVITY_TYPE_HOME) { + return mRootHomeTask; + } + if (windowingMode == WINDOWING_MODE_PINNED) { + return mRootPinnedTask; + } else if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) { + return mRootSplitScreenPrimaryTask; + } + for (int i = getChildCount() - 1; i >= 0; --i) { + final ActivityStack stack = getChildAt(i); + if (activityType == ACTIVITY_TYPE_UNDEFINED + && windowingMode == stack.getWindowingMode()) { + // Passing in undefined type means we want to match the topmost stack with the + // windowing mode. + return stack; + } + if (stack.isCompatible(windowingMode, activityType)) { + return stack; + } + } + return null; + } + + @VisibleForTesting + ActivityStack getTopStack() { + final int count = getChildCount(); + return count > 0 ? getChildAt(count - 1) : null; + } + + int getIndexOf(ActivityStack stack) { + return mChildren.indexOf(stack); + } + + ActivityStack getRootHomeTask() { + return mRootHomeTask; + } + + ActivityStack getRootPinnedTask() { + return mRootPinnedTask; + } + + ActivityStack getRootSplitScreenPrimaryTask() { + return mRootSplitScreenPrimaryTask; + } + + ArrayList<Task> getVisibleTasks() { + final ArrayList<Task> visibleTasks = new ArrayList<>(); + forAllTasks(task -> { + if (task.isLeafTask() && task.isVisible()) { + visibleTasks.add(task); + } + }); + return visibleTasks; + } + + void onStackWindowingModeChanged(ActivityStack stack) { + removeStackReferenceIfNeeded(stack); + addStackReferenceIfNeeded(stack); + if (stack == mRootPinnedTask && getTopStack() != stack) { + // Looks like this stack changed windowing mode to pinned. Move it to the top. + positionChildAt(POSITION_TOP, stack, false /* includingParents */); + } + } + + void addStackReferenceIfNeeded(ActivityStack stack) { + if (stack.isActivityTypeHome()) { + if (mRootHomeTask != null) { + if (!stack.isDescendantOf(mRootHomeTask)) { + throw new IllegalArgumentException("addStackReferenceIfNeeded: home stack=" + + mRootHomeTask + " already exist on display=" + this + + " stack=" + stack); + } + } else { + mRootHomeTask = stack; + } + } + + if (!stack.isRootTask()) { + return; + } + final int windowingMode = stack.getWindowingMode(); + if (windowingMode == WINDOWING_MODE_PINNED) { + if (mRootPinnedTask != null) { + throw new IllegalArgumentException( + "addStackReferenceIfNeeded: pinned stack=" + mRootPinnedTask + + " already exist on display=" + this + " stack=" + stack); + } + mRootPinnedTask = stack; + } else if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) { + if (mRootSplitScreenPrimaryTask != null) { + throw new IllegalArgumentException( + "addStackReferenceIfNeeded: split screen primary stack=" + + mRootSplitScreenPrimaryTask + + " already exist on display=" + this + " stack=" + stack); + } + mRootSplitScreenPrimaryTask = stack; + } + } + + void removeStackReferenceIfNeeded(ActivityStack stack) { + if (stack == mRootHomeTask) { + mRootHomeTask = null; + } else if (stack == mRootPinnedTask) { + mRootPinnedTask = null; + } else if (stack == mRootSplitScreenPrimaryTask) { + mRootSplitScreenPrimaryTask = null; + } + } + + @Override + void addChild(ActivityStack stack, int position) { + addStackReferenceIfNeeded(stack); + position = findPositionForStack(position, stack, true /* adding */); + + super.addChild(stack, position); + mAtmService.updateSleepIfNeededLocked(); + + // The reparenting case is handled in WindowContainer. + if (!stack.mReparenting) { + mDisplayContent.setLayoutNeeded(); + } + } + + @Override + protected void removeChild(ActivityStack stack) { + super.removeChild(stack); + onStackRemoved(stack); + mAtmService.updateSleepIfNeededLocked(); + removeStackReferenceIfNeeded(stack); + } + + @Override + boolean isOnTop() { + // Considered always on top + return true; + } + + @Override + void positionChildAt(int position, ActivityStack child, boolean includingParents) { + final boolean moveToTop = (position == POSITION_TOP || position == getChildCount()); + final boolean moveToBottom = (position == POSITION_BOTTOM || position == 0); + if (child.getWindowConfiguration().isAlwaysOnTop() && !moveToTop) { + // This stack is always-on-top, override the default behavior. + Slog.w(TAG_WM, "Ignoring move of always-on-top stack=" + this + " to bottom"); + + // Moving to its current position, as we must call super but we don't want to + // perform any meaningful action. + final int currentPosition = mChildren.indexOf(child); + super.positionChildAt(currentPosition, child, false /* includingParents */); + return; + } + // We don't allow untrusted display to top when task stack moves to top, + // until user tapping this display to change display position as top intentionally. + if (mDisplayContent.isUntrustedVirtualDisplay() && !getParent().isOnTop()) { + includingParents = false; + } + final int targetPosition = findPositionForStack(position, child, false /* adding */); + super.positionChildAt(targetPosition, child, false /* includingParents */); + + if (includingParents && (moveToTop || moveToBottom)) { + // The DisplayContent children do not re-order, but we still want to move the + // display of this stack container because the intention of positioning is to have + // higher z-order to gain focus. + mDisplayContent.positionDisplayAt(moveToTop ? POSITION_TOP : POSITION_BOTTOM, + true /* includingParents */); + } + + child.updateTaskMovement(moveToTop); + + mDisplayContent.setLayoutNeeded(); + } + + /** + * When stack is added or repositioned, find a proper position for it. + * This will make sure that pinned stack always stays on top. + * @param requestedPosition Position requested by caller. + * @param stack Stack to be added or positioned. + * @param adding Flag indicates whether we're adding a new stack or positioning an existing. + * @return The proper position for the stack. + */ + private int findPositionForStack(int requestedPosition, ActivityStack stack, + boolean adding) { + if (stack.isActivityTypeDream()) { + return POSITION_TOP; + } + + if (stack.inPinnedWindowingMode()) { + return POSITION_TOP; + } + + final int topChildPosition = mChildren.size() - 1; + int belowAlwaysOnTopPosition = POSITION_BOTTOM; + for (int i = topChildPosition; i >= 0; --i) { + // Since a stack could be repositioned while being one of the child, return + // current index if that's the same stack we are positioning and it is always on + // top. + final boolean sameStack = mDisplayContent.getStacks().get(i) == stack; + if ((sameStack && stack.isAlwaysOnTop()) + || (!sameStack && !mDisplayContent.getStacks().get(i).isAlwaysOnTop())) { + belowAlwaysOnTopPosition = i; + break; + } + } + + // The max possible position we can insert the stack at. + int maxPosition = POSITION_TOP; + // The min possible position we can insert the stack at. + int minPosition = POSITION_BOTTOM; + + if (stack.isAlwaysOnTop()) { + if (mDisplayContent.hasPinnedTask()) { + // Always-on-top stacks go below the pinned stack. + maxPosition = mDisplayContent.getStacks().indexOf(mRootPinnedTask) - 1; + } + // Always-on-top stacks need to be above all other stacks. + minPosition = belowAlwaysOnTopPosition + != POSITION_BOTTOM ? belowAlwaysOnTopPosition : topChildPosition; + } else { + // Other stacks need to be below the always-on-top stacks. + maxPosition = belowAlwaysOnTopPosition + != POSITION_BOTTOM ? belowAlwaysOnTopPosition : 0; + } + + // Cap the requested position to something reasonable for the previous position check + // below. + if (requestedPosition == POSITION_TOP) { + requestedPosition = mChildren.size(); + } else if (requestedPosition == POSITION_BOTTOM) { + requestedPosition = 0; + } + + int targetPosition = requestedPosition; + targetPosition = Math.min(targetPosition, maxPosition); + targetPosition = Math.max(targetPosition, minPosition); + + int prevPosition = mDisplayContent.getStacks().indexOf(stack); + // The positions we calculated above (maxPosition, minPosition) do not take into + // consideration the following edge cases. + // 1) We need to adjust the position depending on the value "adding". + // 2) When we are moving a stack to another position, we also need to adjust the + // position depending on whether the stack is moving to a higher or lower position. + if ((targetPosition != requestedPosition) && (adding || targetPosition < prevPosition)) { + targetPosition++; + } + + return targetPosition; + } + + @Override + boolean forAllWindows(ToBooleanFunction<WindowState> callback, + boolean traverseTopToBottom) { + if (traverseTopToBottom) { + if (super.forAllWindows(callback, traverseTopToBottom)) { + return true; + } + if (forAllExitingAppTokenWindows(callback, traverseTopToBottom)) { + return true; + } + } else { + if (forAllExitingAppTokenWindows(callback, traverseTopToBottom)) { + return true; + } + if (super.forAllWindows(callback, traverseTopToBottom)) { + return true; + } + } + return false; + } + + private boolean forAllExitingAppTokenWindows(ToBooleanFunction<WindowState> callback, + boolean traverseTopToBottom) { + // For legacy reasons we process the TaskStack.mExitingActivities first here before the + // app tokens. + // TODO: Investigate if we need to continue to do this or if we can just process them + // in-order. + if (traverseTopToBottom) { + for (int i = mChildren.size() - 1; i >= 0; --i) { + final List<ActivityRecord> activities = mChildren.get(i).mExitingActivities; + for (int j = activities.size() - 1; j >= 0; --j) { + if (activities.get(j).forAllWindowsUnchecked(callback, + traverseTopToBottom)) { + return true; + } + } + } + } else { + final int count = mChildren.size(); + for (int i = 0; i < count; ++i) { + final List<ActivityRecord> activities = mChildren.get(i).mExitingActivities; + final int appTokensCount = activities.size(); + for (int j = 0; j < appTokensCount; j++) { + if (activities.get(j).forAllWindowsUnchecked(callback, + traverseTopToBottom)) { + return true; + } + } + } + } + return false; + } + + void setExitingTokensHasVisible(boolean hasVisible) { + for (int i = mChildren.size() - 1; i >= 0; --i) { + final ArrayList<ActivityRecord> activities = mChildren.get(i).mExitingActivities; + for (int j = activities.size() - 1; j >= 0; --j) { + activities.get(j).hasVisible = hasVisible; + } + } + } + + void removeExistingAppTokensIfPossible() { + for (int i = mChildren.size() - 1; i >= 0; --i) { + final ArrayList<ActivityRecord> activities = mChildren.get(i).mExitingActivities; + for (int j = activities.size() - 1; j >= 0; --j) { + final ActivityRecord activity = activities.get(j); + if (!activity.hasVisible && !mDisplayContent.mClosingApps.contains(activity) + && (!activity.mIsExiting || activity.isEmpty())) { + // Make sure there is no animation running on this activity, so any windows + // associated with it will be removed as soon as their animations are + // complete. + cancelAnimation(); + ProtoLog.v(WM_DEBUG_ADD_REMOVE, + "performLayout: Activity exiting now removed %s", activity); + activity.removeIfPossible(); + } + } + } + } + + @Override + int getOrientation(int candidate) { + if (mDisplayContent.isStackVisible(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY)) { + // Apps and their containers are not allowed to specify an orientation while using + // root tasks...except for the home stack if it is not resizable and currently + // visible (top of) its root task. + if (mRootHomeTask != null && mRootHomeTask.isVisible()) { + final Task topMost = mRootHomeTask.getTopMostTask(); + final boolean resizable = topMost != null && topMost.isResizeable(); + if (!(resizable && mRootHomeTask.matchParentBounds())) { + final int orientation = mRootHomeTask.getOrientation(); + if (orientation != SCREEN_ORIENTATION_UNSET) { + return orientation; + } + } + } + return SCREEN_ORIENTATION_UNSPECIFIED; + } + + final int orientation = super.getOrientation(candidate); + if (orientation != SCREEN_ORIENTATION_UNSET + && orientation != SCREEN_ORIENTATION_BEHIND) { + ProtoLog.v(WM_DEBUG_ORIENTATION, + "App is requesting an orientation, return %d for display id=%d", + orientation, mDisplayContent.mDisplayId); + return orientation; + } + + ProtoLog.v(WM_DEBUG_ORIENTATION, + "No app is requesting an orientation, return %d for display id=%d", + mDisplayContent.getLastOrientation(), mDisplayContent.mDisplayId); + // The next app has not been requested to be visible, so we keep the current orientation + // to prevent freezing/unfreezing the display too early. + return mDisplayContent.getLastOrientation(); + } + + @Override + void assignChildLayers(SurfaceControl.Transaction t) { + assignStackOrdering(t); + + for (int i = 0; i < mChildren.size(); i++) { + final ActivityStack s = mChildren.get(i); + s.assignChildLayers(t); + } + } + + void assignStackOrdering(SurfaceControl.Transaction t) { + if (getParent() == null) { + return; + } + mTmpAlwaysOnTopStacks.clear(); + mTmpHomeStacks.clear(); + mTmpNormalStacks.clear(); + for (int i = 0; i < mChildren.size(); ++i) { + final ActivityStack s = mChildren.get(i); + if (s.isAlwaysOnTop()) { + mTmpAlwaysOnTopStacks.add(s); + } else if (s.isActivityTypeHome()) { + mTmpHomeStacks.add(s); + } else { + mTmpNormalStacks.add(s); + } + } + + int layer = 0; + // Place home stacks to the bottom. + for (int i = 0; i < mTmpHomeStacks.size(); i++) { + mTmpHomeStacks.get(i).assignLayer(t, layer++); + } + // The home animation layer is between the home stacks and the normal stacks. + final int layerForHomeAnimationLayer = layer++; + int layerForSplitScreenDividerAnchor = layer++; + int layerForAnimationLayer = layer++; + for (int i = 0; i < mTmpNormalStacks.size(); i++) { + final ActivityStack s = mTmpNormalStacks.get(i); + s.assignLayer(t, layer++); + if (s.inSplitScreenWindowingMode()) { + // The split screen divider anchor is located above the split screen window. + layerForSplitScreenDividerAnchor = layer++; + } + if (s.isTaskAnimating() || s.isAppTransitioning()) { + // The animation layer is located above the highest animating stack and no + // higher. + layerForAnimationLayer = layer++; + } + } + // The boosted animation layer is between the normal stacks and the always on top + // stacks. + final int layerForBoostedAnimationLayer = layer++; + for (int i = 0; i < mTmpAlwaysOnTopStacks.size(); i++) { + mTmpAlwaysOnTopStacks.get(i).assignLayer(t, layer++); + } + + t.setLayer(mHomeAppAnimationLayer, layerForHomeAnimationLayer); + t.setLayer(mAppAnimationLayer, layerForAnimationLayer); + t.setLayer(mSplitScreenDividerAnchor, layerForSplitScreenDividerAnchor); + t.setLayer(mBoostedAppAnimationLayer, layerForBoostedAnimationLayer); + } + + @Override + SurfaceControl getAppAnimationLayer(@AnimationLayer int animationLayer) { + switch (animationLayer) { + case ANIMATION_LAYER_BOOSTED: + return mBoostedAppAnimationLayer; + case ANIMATION_LAYER_HOME: + return mHomeAppAnimationLayer; + case ANIMATION_LAYER_STANDARD: + default: + return mAppAnimationLayer; + } + } + + SurfaceControl getSplitScreenDividerAnchor() { + return mSplitScreenDividerAnchor; + } + + @Override + void onParentChanged(ConfigurationContainer newParent, ConfigurationContainer oldParent) { + if (getParent() != null) { + super.onParentChanged(newParent, oldParent, () -> { + mAppAnimationLayer = makeChildSurface(null) + .setName("animationLayer") + .build(); + mBoostedAppAnimationLayer = makeChildSurface(null) + .setName("boostedAnimationLayer") + .build(); + mHomeAppAnimationLayer = makeChildSurface(null) + .setName("homeAnimationLayer") + .build(); + mSplitScreenDividerAnchor = makeChildSurface(null) + .setName("splitScreenDividerAnchor") + .build(); + getPendingTransaction() + .show(mAppAnimationLayer) + .show(mBoostedAppAnimationLayer) + .show(mHomeAppAnimationLayer) + .show(mSplitScreenDividerAnchor); + }); + } else { + super.onParentChanged(newParent, oldParent); + mWmService.mTransactionFactory.get() + .remove(mAppAnimationLayer) + .remove(mBoostedAppAnimationLayer) + .remove(mHomeAppAnimationLayer) + .remove(mSplitScreenDividerAnchor) + .apply(); + mAppAnimationLayer = null; + mBoostedAppAnimationLayer = null; + mHomeAppAnimationLayer = null; + mSplitScreenDividerAnchor = null; + } + } + + void addStack(ActivityStack stack, int position) { + mDisplayContent.setStackOnDisplay(stack, position); + positionStackAt(stack, position); + } + + void onStackRemoved(ActivityStack stack) { + if (ActivityTaskManagerDebugConfig.DEBUG_STACK) { + Slog.v(TAG_STACK, "removeStack: detaching " + stack + " from displayId=" + + mDisplayContent.mDisplayId); + } + if (mPreferredTopFocusableStack == stack) { + mPreferredTopFocusableStack = null; + } + mDisplayContent.releaseSelfIfNeeded(); + mDisplayContent.onStackOrderChanged(stack); + } + + void positionStackAt(int position, ActivityStack child, boolean includingParents) { + positionChildAt(position, child, includingParents); + mDisplayContent.layoutAndAssignWindowLayersIfNeeded(); + } + + void positionStackAtTop(ActivityStack stack, boolean includingParents) { + positionStackAtTop(stack, includingParents, null /* updateLastFocusedStackReason */); + } + + void positionStackAtTop(ActivityStack stack, boolean includingParents, + String updateLastFocusedStackReason) { + positionStackAt(stack, getStackCount(), includingParents, + updateLastFocusedStackReason); + } + + void positionStackAtBottom(ActivityStack stack) { + positionStackAtBottom(stack, null /* updateLastFocusedStackReason */); + } + + void positionStackAtBottom(ActivityStack stack, String updateLastFocusedStackReason) { + positionStackAt(stack, 0, false /* includingParents */, + updateLastFocusedStackReason); + } + + void positionStackAt(ActivityStack stack, int position) { + positionStackAt(stack, position, false /* includingParents */, + null /* updateLastFocusedStackReason */); + } + + void positionStackAt(ActivityStack stack, int position, boolean includingParents, + String updateLastFocusedStackReason) { + // TODO: Keep in sync with WindowContainer.positionChildAt(), once we change that to adjust + // the position internally, also update the logic here + final ActivityStack prevFocusedStack = updateLastFocusedStackReason != null + ? getFocusedStack() : null; + final boolean wasContained = getIndexOf(stack) >= 0; + if (mDisplayContent.mSingleTaskInstance && getStackCount() == 1 && !wasContained) { + throw new IllegalStateException( + "positionStackAt: Can only have one task on display=" + this); + } + + final boolean movingToTop = wasContained && position >= getStackCount() - 1; + // Reset mPreferredTopFocusableStack before positioning to top or {@link + // ActivityStackSupervisor#updateTopResumedActivityIfNeeded()} won't update the top + // resumed activity. + if (movingToTop && stack.isFocusable()) { + mPreferredTopFocusableStack = null; + } + + // Since positionChildAt() is called during the creation process of pinned stacks, + // ActivityStack#getStack() can be null. + positionStackAt(position, stack, includingParents); + + // The insert position may be adjusted to non-top when there is always-on-top stack. Since + // the original position is preferred to be top, the stack should have higher priority when + // we are looking for top focusable stack. The condition {@code wasContained} restricts the + // preferred stack is set only when moving an existing stack to top instead of adding a new + // stack that may be too early (e.g. in the middle of launching or reparenting). + if (movingToTop && stack.isFocusableAndVisible()) { + mPreferredTopFocusableStack = stack; + } else if (mPreferredTopFocusableStack == stack) { + mPreferredTopFocusableStack = null; + } + + if (updateLastFocusedStackReason != null) { + final ActivityStack currentFocusedStack = getFocusedStack(); + if (currentFocusedStack != prevFocusedStack) { + mLastFocusedStack = prevFocusedStack; + EventLogTags.writeWmFocusedStack(mRootWindowContainer.mCurrentUser, + mDisplayContent.mDisplayId, + currentFocusedStack == null ? -1 : currentFocusedStack.getRootTaskId(), + mLastFocusedStack == null ? -1 : mLastFocusedStack.getRootTaskId(), + updateLastFocusedStackReason); + } + } + + mDisplayContent.onStackOrderChanged(stack); + } + + ActivityStack getStack(int rootTaskId) { + for (int i = getStackCount() - 1; i >= 0; --i) { + final ActivityStack stack = getStackAt(i); + if (stack.getRootTaskId() == rootTaskId) { + return stack; + } + } + return null; + } + + /** + * Returns an existing stack compatible with the windowing mode and activity type or creates one + * if a compatible stack doesn't exist. + * @see #getOrCreateStack(int, int, boolean, Intent, Task, boolean) + */ + ActivityStack getOrCreateStack(int windowingMode, int activityType, boolean onTop) { + return getOrCreateStack(windowingMode, activityType, onTop, null /* intent */, + null /* candidateTask */, false /* createdByOrganizer */); + } + + /** + * When two level tasks are required for given windowing mode and activity type, returns an + * existing compatible root task or creates a new one. + * For one level task, the candidate task would be reused to also be the root task or create + * a new root task if no candidate task. + * @see #getStack(int, int) + * @see #createStack(int, int, boolean) + */ + ActivityStack getOrCreateStack(int windowingMode, int activityType, boolean onTop, + Intent intent, Task candidateTask, boolean createdByOrganizer) { + if (!alwaysCreateStack(windowingMode, activityType)) { + ActivityStack stack = getStack(windowingMode, activityType); + if (stack != null) { + return stack; + } + } else if (candidateTask != null) { + final ActivityStack stack = (ActivityStack) candidateTask; + final int position = onTop ? POSITION_TOP : POSITION_BOTTOM; + if (isSplitScreenModeActivated()) { + final Task splitRootSecondary = getTask(t -> t.mCreatedByOrganizer && t.isRootTask() + && t.inSplitScreenSecondaryWindowingMode()); + if (stack.getParent() == null) { + splitRootSecondary.addChild(stack, position); + } else if (stack.getParent() != splitRootSecondary) { + stack.reparent(splitRootSecondary, position); + } + } else if (stack.getDisplay() != mDisplayContent || !stack.isRootTask()) { + if (stack.getParent() == null) { + addStack(stack, position); + } else { + stack.reparent(mDisplayContent, onTop); + } + } + // Update windowing mode if necessary, e.g. moving a pinned task to fullscreen. + if (candidateTask.getWindowingMode() != windowingMode) { + candidateTask.setWindowingMode(windowingMode); + } + return stack; + } + return createStack(windowingMode, activityType, onTop, null /*info*/, intent, + createdByOrganizer); + } + + /** + * Returns an existing stack compatible with the input params or creates one + * if a compatible stack doesn't exist. + * @see #getOrCreateStack(int, int, boolean) + */ + ActivityStack getOrCreateStack(@Nullable ActivityRecord r, + @Nullable ActivityOptions options, @Nullable Task candidateTask, int activityType, + boolean onTop) { + // First preference is the windowing mode in the activity options if set. + int windowingMode = (options != null) + ? options.getLaunchWindowingMode() : WINDOWING_MODE_UNDEFINED; + // Validate that our desired windowingMode will work under the current conditions. + // UNDEFINED windowing mode is a valid result and means that the new stack will inherit + // it's display's windowing mode. + windowingMode = validateWindowingMode(windowingMode, r, candidateTask, activityType); + return getOrCreateStack(windowingMode, activityType, onTop, null /* intent */, + candidateTask, false /* createdByOrganizer */); + } + + @VisibleForTesting + int getNextStackId() { + return mAtmService.mStackSupervisor.getNextTaskIdForUser(); + } + + ActivityStack createStack(int windowingMode, int activityType, boolean onTop) { + return createStack(windowingMode, activityType, onTop, null /* info */, null /* intent */, + false /* createdByOrganizer */); + } + + /** + * Creates a stack matching the input windowing mode and activity type on this display. + * @param windowingMode The windowing mode the stack should be created in. If + * {@link WindowConfiguration#WINDOWING_MODE_UNDEFINED} then the stack will + * inherit its parent's windowing mode. + * @param activityType The activityType the stack should be created in. If + * {@link WindowConfiguration#ACTIVITY_TYPE_UNDEFINED} then the stack will + * be created in {@link WindowConfiguration#ACTIVITY_TYPE_STANDARD}. + * @param onTop If true the stack will be created at the top of the display, else at the bottom. + * @param info The started activity info. + * @param intent The intent that started this task. + * @param createdByOrganizer @{code true} if this is created by task organizer, @{code false} + * otherwise. + * @return The newly created stack. + */ + ActivityStack createStack(int windowingMode, int activityType, boolean onTop, ActivityInfo info, + Intent intent, boolean createdByOrganizer) { + if (mDisplayContent.mSingleTaskInstance && getStackCount() > 0) { + // Create stack on default display instead since this display can only contain 1 stack. + // TODO: Kinda a hack, but better that having the decision at each call point. Hoping + // this goes away once ActivityView is no longer using virtual displays. + return mRootWindowContainer.getDefaultDisplay().mTaskContainers.createStack( + windowingMode, activityType, onTop, info, intent, createdByOrganizer); + } + + if (activityType == ACTIVITY_TYPE_UNDEFINED && !createdByOrganizer) { + // Can't have an undefined stack type yet...so re-map to standard. Anyone that wants + // anything else should be passing it in anyways...except for the task organizer. + activityType = ACTIVITY_TYPE_STANDARD; + } + + if (activityType != ACTIVITY_TYPE_STANDARD && activityType != ACTIVITY_TYPE_UNDEFINED) { + // For now there can be only one stack of a particular non-standard activity type on a + // display. So, get that ignoring whatever windowing mode it is currently in. + ActivityStack stack = getStack(WINDOWING_MODE_UNDEFINED, activityType); + if (stack != null) { + throw new IllegalArgumentException("Stack=" + stack + " of activityType=" + + activityType + " already on display=" + this + ". Can't have multiple."); + } + } + + if (!isWindowingModeSupported(windowingMode, mAtmService.mSupportsMultiWindow, + mAtmService.mSupportsSplitScreenMultiWindow, + mAtmService.mSupportsFreeformWindowManagement, + mAtmService.mSupportsPictureInPicture, activityType)) { + throw new IllegalArgumentException("Can't create stack for unsupported windowingMode=" + + windowingMode); + } + + final int stackId = getNextStackId(); + return createStackUnchecked(windowingMode, activityType, stackId, onTop, info, intent, + createdByOrganizer); + } + + /** @return the root task to create the next task in. */ + private Task updateLaunchRootTask(int windowingMode) { + if (!isSplitScreenWindowingMode(windowingMode)) { + // Only split-screen windowing modes can do this currently... + return null; + } + for (int i = getStackCount() - 1; i >= 0; --i) { + final Task t = getStackAt(i); + if (!t.mCreatedByOrganizer || t.getRequestedOverrideWindowingMode() != windowingMode) { + continue; + } + // If not already set, pick a launch root which is not the one we are launching into. + if (mLaunchRootTask == null) { + for (int j = 0, n = getStackCount(); j < n; ++j) { + final Task tt = getStackAt(j); + if (tt.mCreatedByOrganizer && tt != t) { + mLaunchRootTask = tt; + break; + } + } + } + return t; + } + return mLaunchRootTask; + } + + @VisibleForTesting + ActivityStack createStackUnchecked(int windowingMode, int activityType, int stackId, + boolean onTop, ActivityInfo info, Intent intent, boolean createdByOrganizer) { + if (windowingMode == WINDOWING_MODE_PINNED && activityType != ACTIVITY_TYPE_STANDARD) { + throw new IllegalArgumentException("Stack with windowing mode cannot with non standard " + + "activity type."); + } + if (info == null) { + info = new ActivityInfo(); + info.applicationInfo = new ApplicationInfo(); + } + + // Task created by organizer are added as root. + Task launchRootTask = createdByOrganizer ? null : updateLaunchRootTask(windowingMode); + if (launchRootTask != null) { + // Since this stack will be put into a root task, its windowingMode will be inherited. + windowingMode = WINDOWING_MODE_UNDEFINED; + } + + final ActivityStack stack = (ActivityStack) Task.create(mAtmService, stackId, activityType, + info, intent, createdByOrganizer); + if (launchRootTask != null) { + launchRootTask.addChild(stack, onTop ? POSITION_TOP : POSITION_BOTTOM); + if (onTop) { + positionStackAtTop((ActivityStack) launchRootTask, false /* includingParents */); + } + } else { + addStack(stack, onTop ? POSITION_TOP : POSITION_BOTTOM); + stack.setWindowingMode(windowingMode, false /* animate */, false /* showRecents */, + false /* enteringSplitScreenMode */, false /* deferEnsuringVisibility */, + true /* creating */); + } + return stack; + } + + /** + * Get the preferred focusable stack in priority. If the preferred stack does not exist, find a + * focusable and visible stack from the top of stacks in this display. + */ + ActivityStack getFocusedStack() { + if (mPreferredTopFocusableStack != null) { + return mPreferredTopFocusableStack; + } + + for (int i = getStackCount() - 1; i >= 0; --i) { + final ActivityStack stack = getStackAt(i); + if (stack.isFocusableAndVisible()) { + return stack; + } + } + + return null; + } + + ActivityStack getNextFocusableStack(ActivityStack currentFocus, boolean ignoreCurrent) { + final int currentWindowingMode = currentFocus != null + ? currentFocus.getWindowingMode() : WINDOWING_MODE_UNDEFINED; + + ActivityStack candidate = null; + for (int i = getStackCount() - 1; i >= 0; --i) { + final ActivityStack stack = getStackAt(i); + if (ignoreCurrent && stack == currentFocus) { + continue; + } + if (!stack.isFocusableAndVisible()) { + continue; + } + + if (currentWindowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY + && candidate == null && stack.inSplitScreenPrimaryWindowingMode()) { + // If the currently focused stack is in split-screen secondary we save off the + // top primary split-screen stack as a candidate for focus because we might + // prefer focus to move to an other stack to avoid primary split-screen stack + // overlapping with a fullscreen stack when a fullscreen stack is higher in z + // than the next split-screen stack. Assistant stack, I am looking at you... + // We only move the focus to the primary-split screen stack if there isn't a + // better alternative. + candidate = stack; + continue; + } + if (candidate != null && stack.inSplitScreenSecondaryWindowingMode()) { + // Use the candidate stack since we are now at the secondary split-screen. + return candidate; + } + return stack; + } + return candidate; + } + + ActivityRecord getResumedActivity() { + final ActivityStack focusedStack = getFocusedStack(); + if (focusedStack == null) { + return null; + } + // TODO(b/111541062): Move this into ActivityStack#getResumedActivity() + // Check if the focused stack has the resumed activity + ActivityRecord resumedActivity = focusedStack.getResumedActivity(); + if (resumedActivity == null || resumedActivity.app == null) { + // If there is no registered resumed activity in the stack or it is not running - + // try to use previously resumed one. + resumedActivity = focusedStack.mPausingActivity; + if (resumedActivity == null || resumedActivity.app == null) { + // If previously resumed activity doesn't work either - find the topmost running + // activity that can be focused. + resumedActivity = focusedStack.topRunningActivity(true /* focusableOnly */); + } + } + return resumedActivity; + } + + ActivityStack getLastFocusedStack() { + return mLastFocusedStack; + } + + boolean allResumedActivitiesComplete() { + for (int stackNdx = getStackCount() - 1; stackNdx >= 0; --stackNdx) { + final ActivityRecord r = getStackAt(stackNdx).getResumedActivity(); + if (r != null && !r.isState(RESUMED)) { + return false; + } + } + final ActivityStack currentFocusedStack = getFocusedStack(); + if (ActivityTaskManagerDebugConfig.DEBUG_STACK) { + Slog.d(TAG_STACK, "allResumedActivitiesComplete: mLastFocusedStack changing from=" + + mLastFocusedStack + " to=" + currentFocusedStack); + } + mLastFocusedStack = currentFocusedStack; + return true; + } + + /** + * Pause all activities in either all of the stacks or just the back stacks. This is done before + * resuming a new activity and to make sure that previously active activities are + * paused in stacks that are no longer visible or in pinned windowing mode. This does not + * pause activities in visible stacks, so if an activity is launched within the same stack/task, + * then we should explicitly pause that stack's top activity. + * @param userLeaving Passed to pauseActivity() to indicate whether to call onUserLeaving(). + * @param resuming The resuming activity. + * @return {@code true} if any activity was paused as a result of this call. + */ + boolean pauseBackStacks(boolean userLeaving, ActivityRecord resuming) { + boolean someActivityPaused = false; + for (int stackNdx = getStackCount() - 1; stackNdx >= 0; --stackNdx) { + final ActivityStack stack = getStackAt(stackNdx); + final ActivityRecord resumedActivity = stack.getResumedActivity(); + if (resumedActivity != null + && (stack.getVisibility(resuming) != STACK_VISIBILITY_VISIBLE + || !stack.isTopActivityFocusable())) { + if (DEBUG_STATES) { + Slog.d(TAG_STATES, "pauseBackStacks: stack=" + stack + + " mResumedActivity=" + resumedActivity); + } + someActivityPaused |= stack.startPausingLocked(userLeaving, false /* uiSleeping*/, + resuming); + } + } + return someActivityPaused; + } + + /** + * Find task for putting the Activity in. + */ + void findTaskLocked(final ActivityRecord r, final boolean isPreferredDisplay, + RootWindowContainer.FindTaskResult result) { + mTmpFindTaskResult.clear(); + for (int stackNdx = getStackCount() - 1; stackNdx >= 0; --stackNdx) { + final ActivityStack stack = getStackAt(stackNdx); + if (!r.hasCompatibleActivityType(stack) && stack.isLeafTask()) { + if (DEBUG_TASKS) { + Slog.d(TAG_TASKS, "Skipping stack: (mismatch activity/stack) " + stack); + } + continue; + } + + mTmpFindTaskResult.process(r, stack); + // It is possible to have tasks in multiple stacks with the same root affinity, so + // we should keep looking after finding an affinity match to see if there is a + // better match in another stack. Also, task affinity isn't a good enough reason + // to target a display which isn't the source of the intent, so skip any affinity + // matches not on the specified display. + if (mTmpFindTaskResult.mRecord != null) { + if (mTmpFindTaskResult.mIdealMatch) { + result.setTo(mTmpFindTaskResult); + return; + } else if (isPreferredDisplay) { + // Note: since the traversing through the stacks is top down, the floating + // tasks should always have lower priority than any affinity-matching tasks + // in the fullscreen stacks + result.setTo(mTmpFindTaskResult); + } + } + } + } + + /** + * Removes stacks in the input windowing modes from the system if they are of activity type + * ACTIVITY_TYPE_STANDARD or ACTIVITY_TYPE_UNDEFINED + */ + void removeStacksInWindowingModes(int... windowingModes) { + if (windowingModes == null || windowingModes.length == 0) { + return; + } + + // Collect the stacks that are necessary to be removed instead of performing the removal + // by looping mStacks, so that we don't miss any stacks after the stack size changed or + // stacks reordered. + final ArrayList<ActivityStack> stacks = new ArrayList<>(); + for (int j = windowingModes.length - 1; j >= 0; --j) { + final int windowingMode = windowingModes[j]; + for (int i = getStackCount() - 1; i >= 0; --i) { + final ActivityStack stack = getStackAt(i); + if (!stack.isActivityTypeStandardOrUndefined()) { + continue; + } + if (stack.getWindowingMode() != windowingMode) { + continue; + } + stacks.add(stack); + } + } + + for (int i = stacks.size() - 1; i >= 0; --i) { + mRootWindowContainer.mStackSupervisor.removeStack(stacks.get(i)); + } + } + + void removeStacksWithActivityTypes(int... activityTypes) { + if (activityTypes == null || activityTypes.length == 0) { + return; + } + + // Collect the stacks that are necessary to be removed instead of performing the removal + // by looping mStacks, so that we don't miss any stacks after the stack size changed or + // stacks reordered. + final ArrayList<ActivityStack> stacks = new ArrayList<>(); + for (int j = activityTypes.length - 1; j >= 0; --j) { + final int activityType = activityTypes[j]; + for (int i = getStackCount() - 1; i >= 0; --i) { + final ActivityStack stack = getStackAt(i); + // Collect the root tasks that are currently being organized. + if (stack.isOrganized()) { + for (int k = stack.getChildCount() - 1; k >= 0; --k) { + final ActivityStack childStack = (ActivityStack) stack.getChildAt(k); + if (childStack.getActivityType() == activityType) { + stacks.add(childStack); + } + } + } else if (stack.getActivityType() == activityType) { + stacks.add(stack); + } + } + } + + for (int i = stacks.size() - 1; i >= 0; --i) { + mRootWindowContainer.mStackSupervisor.removeStack(stacks.get(i)); + } + } + + void onSplitScreenModeDismissed() { + mAtmService.deferWindowLayout(); + try { + mLaunchRootTask = null; + moveSplitScreenTasksToFullScreen(); + } finally { + final ActivityStack topFullscreenStack = + getTopStackInWindowingMode(WINDOWING_MODE_FULLSCREEN); + final ActivityStack homeStack = getOrCreateRootHomeTask(); + if (topFullscreenStack != null && homeStack != null && !isTopStack(homeStack)) { + // Whenever split-screen is dismissed we want the home stack directly behind the + // current top fullscreen stack so it shows up when the top stack is finished. + // TODO: Would be better to use ActivityDisplay.positionChildAt() for this, however + // ActivityDisplay doesn't have a direct controller to WM side yet. We can switch + // once we have that. + homeStack.moveToFront("onSplitScreenModeDismissed"); + topFullscreenStack.moveToFront("onSplitScreenModeDismissed"); + } + mAtmService.continueWindowLayout(); + } + } + + private void moveSplitScreenTasksToFullScreen() { + final WindowContainerTransaction wct = new WindowContainerTransaction(); + mTmpTasks.clear(); + forAllTasks(task -> { + if (task.mCreatedByOrganizer && task.inSplitScreenWindowingMode() && task.hasChild()) { + mTmpTasks.add(task); + } + }); + + for (int i = mTmpTasks.size() - 1; i >= 0; i--) { + final Task root = mTmpTasks.get(i); + for (int j = 0; j < root.getChildCount(); j++) { + wct.reparent(root.getChildAt(j).mRemoteToken, null, true /* toTop */); + } + } + mAtmService.mWindowOrganizerController.applyTransaction(wct); + } + + /** + * Returns true if the {@param windowingMode} is supported based on other parameters passed in. + * @param windowingMode The windowing mode we are checking support for. + * @param supportsMultiWindow If we should consider support for multi-window mode in general. + * @param supportsSplitScreen If we should consider support for split-screen multi-window. + * @param supportsFreeform If we should consider support for freeform multi-window. + * @param supportsPip If we should consider support for picture-in-picture mutli-window. + * @param activityType The activity type under consideration. + * @return true if the windowing mode is supported. + */ + private boolean isWindowingModeSupported(int windowingMode, boolean supportsMultiWindow, + boolean supportsSplitScreen, boolean supportsFreeform, boolean supportsPip, + int activityType) { + + if (windowingMode == WINDOWING_MODE_UNDEFINED + || windowingMode == WINDOWING_MODE_FULLSCREEN) { + return true; + } + if (!supportsMultiWindow) { + return false; + } + + if (windowingMode == WINDOWING_MODE_MULTI_WINDOW) { + return true; + } + + final int displayWindowingMode = getWindowingMode(); + if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY + || windowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY) { + return supportsSplitScreen + && WindowConfiguration.supportSplitScreenWindowingMode(activityType) + // Freeform windows and split-screen windows don't mix well, so prevent + // split windowing modes on freeform displays. + && displayWindowingMode != WINDOWING_MODE_FREEFORM; + } + + if (!supportsFreeform && windowingMode == WINDOWING_MODE_FREEFORM) { + return false; + } + + if (!supportsPip && windowingMode == WINDOWING_MODE_PINNED) { + return false; + } + return true; + } + + /** + * Resolves the windowing mode that an {@link ActivityRecord} would be in if started on this + * display with the provided parameters. + * + * @param r The ActivityRecord in question. + * @param options Options to start with. + * @param task The task within-which the activity would start. + * @param activityType The type of activity to start. + * @return The resolved (not UNDEFINED) windowing-mode that the activity would be in. + */ + int resolveWindowingMode(@Nullable ActivityRecord r, @Nullable ActivityOptions options, + @Nullable Task task, int activityType) { + + // First preference if the windowing mode in the activity options if set. + int windowingMode = (options != null) + ? options.getLaunchWindowingMode() : WINDOWING_MODE_UNDEFINED; + + // If windowing mode is unset, then next preference is the candidate task, then the + // activity record. + if (windowingMode == WINDOWING_MODE_UNDEFINED) { + if (task != null) { + windowingMode = task.getWindowingMode(); + } + if (windowingMode == WINDOWING_MODE_UNDEFINED && r != null) { + windowingMode = r.getWindowingMode(); + } + if (windowingMode == WINDOWING_MODE_UNDEFINED) { + // Use the display's windowing mode. + windowingMode = getWindowingMode(); + } + } + windowingMode = validateWindowingMode(windowingMode, r, task, activityType); + return windowingMode != WINDOWING_MODE_UNDEFINED + ? windowingMode : WINDOWING_MODE_FULLSCREEN; + } + + /** + * Check that the requested windowing-mode is appropriate for the specified task and/or activity + * on this display. + * + * @param windowingMode The windowing-mode to validate. + * @param r The {@link ActivityRecord} to check against. + * @param task The {@link Task} to check against. + * @param activityType An activity type. + * @return The provided windowingMode or the closest valid mode which is appropriate. + */ + int validateWindowingMode(int windowingMode, @Nullable ActivityRecord r, @Nullable Task task, + int activityType) { + // Make sure the windowing mode we are trying to use makes sense for what is supported. + boolean supportsMultiWindow = mAtmService.mSupportsMultiWindow; + boolean supportsSplitScreen = mAtmService.mSupportsSplitScreenMultiWindow; + boolean supportsFreeform = mAtmService.mSupportsFreeformWindowManagement; + boolean supportsPip = mAtmService.mSupportsPictureInPicture; + if (supportsMultiWindow) { + if (task != null) { + supportsMultiWindow = task.isResizeable(); + supportsSplitScreen = task.supportsSplitScreenWindowingMode(); + // TODO: Do we need to check for freeform and Pip support here? + } else if (r != null) { + supportsMultiWindow = r.isResizeable(); + supportsSplitScreen = r.supportsSplitScreenWindowingMode(); + supportsFreeform = r.supportsFreeform(); + supportsPip = r.supportsPictureInPicture(); + } + } + + final boolean inSplitScreenMode = isSplitScreenModeActivated(); + if (!inSplitScreenMode + && windowingMode == WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY) { + // Switch to the display's windowing mode if we are not in split-screen mode and we are + // trying to launch in split-screen secondary. + windowingMode = WINDOWING_MODE_UNDEFINED; + } else if (inSplitScreenMode && (windowingMode == WINDOWING_MODE_FULLSCREEN + || windowingMode == WINDOWING_MODE_UNDEFINED) + && supportsSplitScreen) { + windowingMode = WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; + } + + if (windowingMode != WINDOWING_MODE_UNDEFINED + && isWindowingModeSupported(windowingMode, supportsMultiWindow, supportsSplitScreen, + supportsFreeform, supportsPip, activityType)) { + return windowingMode; + } + return WINDOWING_MODE_UNDEFINED; + } + + boolean isTopStack(ActivityStack stack) { + return stack == getTopStack(); + } + + boolean isTopNotPinnedStack(ActivityStack stack) { + for (int i = getStackCount() - 1; i >= 0; --i) { + final ActivityStack current = getStackAt(i); + if (!current.inPinnedWindowingMode()) { + return current == stack; + } + } + return false; + } + + /** + * Returns the top running activity in the focused stack. In the case the focused stack has no + * such activity, the next focusable stack on this display is returned. + * + * @param considerKeyguardState Indicates whether the locked state should be considered. if + * {@code true} and the keyguard is locked, only activities that + * can be shown on top of the keyguard will be considered. + * @return The top running activity. {@code null} if none is available. + */ + ActivityRecord topRunningActivity(boolean considerKeyguardState) { + ActivityRecord topRunning = null; + final ActivityStack focusedStack = getFocusedStack(); + if (focusedStack != null) { + topRunning = focusedStack.topRunningActivity(); + } + + // Look in other focusable stacks. + if (topRunning == null) { + for (int i = getStackCount() - 1; i >= 0; --i) { + final ActivityStack stack = getStackAt(i); + // Only consider focusable stacks other than the current focused one. + if (stack == focusedStack || !stack.isTopActivityFocusable()) { + continue; + } + topRunning = stack.topRunningActivity(); + if (topRunning != null) { + break; + } + } + } + + // This activity can be considered the top running activity if we are not considering + // the locked state, the keyguard isn't locked, or we can show when locked. + if (topRunning != null && considerKeyguardState + && mRootWindowContainer.mStackSupervisor.getKeyguardController() + .isKeyguardLocked() + && !topRunning.canShowWhenLocked()) { + return null; + } + + return topRunning; + } + + protected int getStackCount() { + return mChildren.size(); + } + + protected ActivityStack getStackAt(int index) { + return mChildren.get(index); + } + + /** + * Returns the existing home stack or creates and returns a new one if it should exist for the + * display. + */ + @Nullable + ActivityStack getOrCreateRootHomeTask() { + ActivityStack homeTask = getRootHomeTask(); + if (homeTask == null && mDisplayContent.supportsSystemDecorations() + && !mDisplayContent.isUntrustedVirtualDisplay()) { + homeTask = createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, + false /* onTop */); + } + return homeTask; + } + + boolean isSplitScreenModeActivated() { + Task task = getRootSplitScreenPrimaryTask(); + return task != null && task.hasChild(); + } + + /** + * Returns the topmost stack on the display that is compatible with the input windowing mode. + * Null is no compatible stack on the display. + */ + ActivityStack getTopStackInWindowingMode(int windowingMode) { + return getStack(windowingMode, ACTIVITY_TYPE_UNDEFINED); + } + + void moveHomeStackToFront(String reason) { + final ActivityStack homeStack = getOrCreateRootHomeTask(); + if (homeStack != null) { + homeStack.moveToFront(reason); + } + } + + /** + * Moves the focusable home activity to top. If there is no such activity, the home stack will + * still move to top. + */ + void moveHomeActivityToTop(String reason) { + final ActivityRecord top = getHomeActivity(); + if (top == null) { + moveHomeStackToFront(reason); + return; + } + top.moveFocusableActivityToTop(reason); + } + + @Nullable + ActivityRecord getHomeActivity() { + return getHomeActivityForUser(mRootWindowContainer.mCurrentUser); + } + + @Nullable + ActivityRecord getHomeActivityForUser(int userId) { + final ActivityStack homeStack = getRootHomeTask(); + if (homeStack == null) { + return null; + } + + final PooledPredicate p = PooledLambda.obtainPredicate( + TaskContainers::isHomeActivityForUser, PooledLambda.__(ActivityRecord.class), + userId); + final ActivityRecord r = homeStack.getActivity(p); + p.recycle(); + return r; + } + + private static boolean isHomeActivityForUser(ActivityRecord r, int userId) { + return r.isActivityTypeHome() && (userId == UserHandle.USER_ALL || r.mUserId == userId); + } + + /** + * Adjusts the {@param stack} behind the last visible stack in the display if necessary. + * Generally used in conjunction with {@link #moveStackBehindStack}. + */ + // TODO(b/151575894): Remove special stack movement methods. + void moveStackBehindBottomMostVisibleStack(ActivityStack stack) { + if (stack.shouldBeVisible(null)) { + // Skip if the stack is already visible + return; + } + + final boolean isRootTask = stack.isRootTask(); + if (isRootTask) { + // Move the stack to the bottom to not affect the following visibility checks + positionStackAtBottom(stack); + } else { + stack.getParent().positionChildAt(POSITION_BOTTOM, stack, false /* includingParents */); + } + + // Find the next position where the stack should be placed + final int numStacks = isRootTask ? getStackCount() : stack.getParent().getChildCount(); + for (int stackNdx = 0; stackNdx < numStacks; stackNdx++) { + final ActivityStack s = isRootTask ? getStackAt(stackNdx) + : (ActivityStack) stack.getParent().getChildAt(stackNdx); + if (s == stack) { + continue; + } + final int winMode = s.getWindowingMode(); + final boolean isValidWindowingMode = winMode == WINDOWING_MODE_FULLSCREEN + || winMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; + if (s.shouldBeVisible(null) && isValidWindowingMode) { + // Move the provided stack to behind this stack + final int position = Math.max(0, stackNdx - 1); + if (isRootTask) { + positionStackAt(stack, position); + } else { + stack.getParent().positionChildAt(position, stack, false /*includingParents */); + } + break; + } + } + } + + /** + * Moves the {@param stack} behind the given {@param behindStack} if possible. If + * {@param behindStack} is not currently in the display, then then the stack is moved to the + * back. Generally used in conjunction with {@link #moveStackBehindBottomMostVisibleStack}. + */ + void moveStackBehindStack(ActivityStack stack, ActivityStack behindStack) { + if (behindStack == null || behindStack == stack) { + return; + } + + final WindowContainer parent = stack.getParent(); + if (parent == null || parent != behindStack.getParent()) { + return; + } + + // Note that positionChildAt will first remove the given stack before inserting into the + // list, so we need to adjust the insertion index to account for the removed index + // TODO: Remove this logic when WindowContainer.positionChildAt() is updated to adjust the + // position internally + final int stackIndex = parent.mChildren.indexOf(stack); + final int behindStackIndex = parent.mChildren.indexOf(behindStack); + final int insertIndex = stackIndex <= behindStackIndex + ? behindStackIndex - 1 : behindStackIndex; + final int position = Math.max(0, insertIndex); + if (stack.isRootTask()) { + positionStackAt(stack, position); + } else { + parent.positionChildAt(position, stack, false /* includingParents */); + } + } +} diff --git a/services/core/java/com/android/server/wm/TaskOrganizerController.java b/services/core/java/com/android/server/wm/TaskOrganizerController.java index 4382e9d578ad..8e95ca7ef961 100644 --- a/services/core/java/com/android/server/wm/TaskOrganizerController.java +++ b/services/core/java/com/android/server/wm/TaskOrganizerController.java @@ -20,19 +20,19 @@ import static android.Manifest.permission.MANAGE_ACTIVITY_STACKS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; -import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; -import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; import static com.android.server.wm.WindowOrganizerController.CONTROLLABLE_CONFIGS; import static com.android.server.wm.WindowOrganizerController.CONTROLLABLE_WINDOW_CONFIGS; import android.annotation.Nullable; import android.app.ActivityManager.RunningTaskInfo; +import android.app.WindowConfiguration; import android.content.Intent; import android.content.pm.ActivityInfo; import android.os.Binder; import android.os.IBinder; import android.os.RemoteException; +import android.os.UserHandle; import android.util.Slog; import android.util.SparseArray; import android.window.ITaskOrganizer; @@ -41,10 +41,12 @@ import android.window.IWindowContainer; import com.android.internal.util.ArrayUtils; +import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Set; import java.util.WeakHashMap; /** @@ -53,7 +55,7 @@ import java.util.WeakHashMap; */ class TaskOrganizerController extends ITaskOrganizerController.Stub { private static final String TAG = "TaskOrganizerController"; - private static final LinkedList<TaskOrganizerState> EMPTY_LIST = new LinkedList<>(); + private static final LinkedList<IBinder> EMPTY_LIST = new LinkedList<>(); /** * Masks specifying which configurations are important to report back to an organizer when @@ -65,12 +67,10 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { private final WindowManagerGlobalLock mGlobalLock; private class DeathRecipient implements IBinder.DeathRecipient { - int mWindowingMode; ITaskOrganizer mTaskOrganizer; - DeathRecipient(ITaskOrganizer organizer, int windowingMode) { + DeathRecipient(ITaskOrganizer organizer) { mTaskOrganizer = organizer; - mWindowingMode = windowingMode; } @Override @@ -78,7 +78,9 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { synchronized (mGlobalLock) { final TaskOrganizerState state = mTaskOrganizerStates.remove( mTaskOrganizer.asBinder()); - state.dispose(); + if (state != null) { + state.dispose(); + } } } }; @@ -86,18 +88,18 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { private class TaskOrganizerState { private final ITaskOrganizer mOrganizer; private final DeathRecipient mDeathRecipient; - private final int mWindowingMode; private final ArrayList<Task> mOrganizedTasks = new ArrayList<>(); + private final int mUid; - TaskOrganizerState(ITaskOrganizer organizer, int windowingMode) { + TaskOrganizerState(ITaskOrganizer organizer, int uid) { mOrganizer = organizer; - mDeathRecipient = new DeathRecipient(organizer, windowingMode); + mDeathRecipient = new DeathRecipient(organizer); try { organizer.asBinder().linkToDeath(mDeathRecipient, 0); } catch (RemoteException e) { Slog.e(TAG, "TaskOrganizer failed to register death recipient"); } - mWindowingMode = windowingMode; + mUid = uid; } void addTask(Task t) { @@ -120,7 +122,9 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { void dispose() { releaseTasks(); - mTaskOrganizersForWindowingMode.get(mWindowingMode).remove(this); + for (int i = mTaskOrganizersForWindowingMode.size() - 1; i >= 0; --i) { + mTaskOrganizersForWindowingMode.valueAt(i).remove(mOrganizer.asBinder()); + } } private void releaseTasks() { @@ -136,7 +140,7 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { } } - private final SparseArray<LinkedList<TaskOrganizerState>> mTaskOrganizersForWindowingMode = + private final SparseArray<LinkedList<IBinder>> mTaskOrganizersForWindowingMode = new SparseArray<>(); private final HashMap<IBinder, TaskOrganizerState> mTaskOrganizerStates = new HashMap<>(); private final WeakHashMap<Task, RunningTaskInfo> mLastSentTaskInfos = new WeakHashMap<>(); @@ -162,14 +166,27 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { */ @Override public void registerTaskOrganizer(ITaskOrganizer organizer, int windowingMode) { - if (windowingMode != WINDOWING_MODE_PINNED - && windowingMode != WINDOWING_MODE_SPLIT_SCREEN_PRIMARY - && windowingMode != WINDOWING_MODE_SPLIT_SCREEN_SECONDARY - && windowingMode != WINDOWING_MODE_MULTI_WINDOW) { + if (windowingMode == WINDOWING_MODE_PINNED) { + if (!mService.mSupportsPictureInPicture) { + throw new UnsupportedOperationException("Picture in picture is not supported on " + + "this device"); + } + } else if (WindowConfiguration.isSplitScreenWindowingMode(windowingMode)) { + if (!mService.mSupportsSplitScreenMultiWindow) { + throw new UnsupportedOperationException("Split-screen is not supported on this " + + "device"); + } + } else if (windowingMode == WINDOWING_MODE_MULTI_WINDOW) { + if (!mService.mSupportsMultiWindow) { + throw new UnsupportedOperationException("Multi-window is not supported on this " + + "device"); + } + } else { throw new UnsupportedOperationException("As of now only Pinned/Split/Multiwindow" + " windowing modes are supported for registerTaskOrganizer"); } enforceStackPermission("registerTaskOrganizer()"); + final int uid = Binder.getCallingUid(); final long origId = Binder.clearCallingIdentity(); try { synchronized (mGlobalLock) { @@ -178,19 +195,18 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { + windowingMode); } - LinkedList<TaskOrganizerState> states; - if (mTaskOrganizersForWindowingMode.contains(windowingMode)) { - states = mTaskOrganizersForWindowingMode.get(windowingMode); - } else { - states = new LinkedList<>(); - mTaskOrganizersForWindowingMode.put(windowingMode, states); + LinkedList<IBinder> orgs = mTaskOrganizersForWindowingMode.get(windowingMode); + if (orgs == null) { + orgs = new LinkedList<>(); + mTaskOrganizersForWindowingMode.put(windowingMode, orgs); + } + orgs.add(organizer.asBinder()); + if (!mTaskOrganizerStates.containsKey(organizer.asBinder())) { + mTaskOrganizerStates.put(organizer.asBinder(), + new TaskOrganizerState(organizer, uid)); } - final TaskOrganizerState previousState = states.peekLast(); - final TaskOrganizerState state = new TaskOrganizerState(organizer, windowingMode); - states.add(state); - mTaskOrganizerStates.put(organizer.asBinder(), state); - if (previousState == null) { + if (orgs.size() == 1) { // Only in the case where this is the root task organizer for the given // windowing mode, we add report all existing tasks in that mode to the new // task organizer. @@ -208,14 +224,29 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { @Override public void unregisterTaskOrganizer(ITaskOrganizer organizer) { - final TaskOrganizerState state = mTaskOrganizerStates.remove(organizer.asBinder()); - state.unlinkDeath(); - state.dispose(); + enforceStackPermission("unregisterTaskOrganizer()"); + final long origId = Binder.clearCallingIdentity(); + try { + synchronized (mGlobalLock) { + final TaskOrganizerState state = mTaskOrganizerStates.remove(organizer.asBinder()); + if (state == null) { + return; + } + state.unlinkDeath(); + state.dispose(); + } + } finally { + Binder.restoreCallingIdentity(origId); + } } ITaskOrganizer getTaskOrganizer(int windowingMode) { - final TaskOrganizerState state = mTaskOrganizersForWindowingMode.get(windowingMode, - EMPTY_LIST).peekLast(); + final IBinder organizer = + mTaskOrganizersForWindowingMode.get(windowingMode, EMPTY_LIST).peekLast(); + if (organizer == null) { + return null; + } + final TaskOrganizerState state = mTaskOrganizerStates.get(organizer); if (state == null) { return null; } @@ -243,9 +274,9 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { return null; } - final Task task = display.getOrCreateStack(windowingMode, ACTIVITY_TYPE_UNDEFINED, - false /* onTop */, new Intent(), null /* candidateTask */, - true /* createdByOrganizer */); + final Task task = display.mTaskContainers.getOrCreateStack(windowingMode, + ACTIVITY_TYPE_UNDEFINED, false /* onTop */, new Intent(), + null /* candidateTask */, true /* createdByOrganizer */); RunningTaskInfo out = task.getTaskInfo(); mLastSentTaskInfos.put(task, out); return out; @@ -454,4 +485,27 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { Binder.restoreCallingIdentity(ident); } } + + public void dump(PrintWriter pw, String prefix) { + final String innerPrefix = prefix + " "; + pw.print(prefix); pw.println("TaskOrganizerController:"); + pw.print(innerPrefix); pw.println("Per windowing mode:"); + for (int i = 0; i < mTaskOrganizersForWindowingMode.size(); i++) { + final int windowingMode = mTaskOrganizersForWindowingMode.keyAt(i); + final List<IBinder> taskOrgs = mTaskOrganizersForWindowingMode.valueAt(i); + pw.println(innerPrefix + " " + + WindowConfiguration.windowingModeToString(windowingMode) + ":"); + for (int j = 0; j < taskOrgs.size(); j++) { + final TaskOrganizerState state = mTaskOrganizerStates.get(taskOrgs.get(j)); + final ArrayList<Task> tasks = state.mOrganizedTasks; + pw.print(innerPrefix + " "); + pw.println(state.mOrganizer + " uid=" + state.mUid + ":"); + for (int k = 0; k < tasks.size(); k++) { + pw.println(innerPrefix + " " + tasks.get(k)); + } + } + + } + pw.println(); + } } diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java index be0d6f8a0b9f..f046e8adc478 100644 --- a/services/core/java/com/android/server/wm/TaskPositioner.java +++ b/services/core/java/com/android/server/wm/TaskPositioner.java @@ -268,9 +268,8 @@ class TaskPositioner implements IBinder.DeathRecipient { mDisplayContent.getDisplayRotation().pause(); // Notify InputMonitor to take mDragWindowHandle. - final SurfaceControl.Transaction t = mService.mTransactionFactory.get(); - mDisplayContent.getInputMonitor().updateInputWindowsImmediately(t); - t.syncInputWindows().apply(); + mDisplayContent.getInputMonitor().updateInputWindowsImmediately(); + new SurfaceControl.Transaction().syncInputWindows().apply(true); final DisplayMetrics displayMetrics = displayContent.getDisplayMetrics(); mMinVisibleWidth = dipToPixel(MINIMUM_VISIBLE_WIDTH_IN_DP, displayMetrics); diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java index 57d0a335a688..29a2e18f46a8 100644 --- a/services/core/java/com/android/server/wm/WallpaperController.java +++ b/services/core/java/com/android/server/wm/WallpaperController.java @@ -142,11 +142,13 @@ class WallpaperController { mFindResults.setUseTopWallpaperAsTarget(true); } - final boolean keyguardGoingAwayWithWallpaper = (w.mActivityRecord != null - && w.mActivityRecord.isAnimating(TRANSITION | PARENTS) - && AppTransition.isKeyguardGoingAwayTransit(w.mActivityRecord.getTransit()) - && (w.mActivityRecord.getTransitFlags() - & TRANSIT_FLAG_KEYGUARD_GOING_AWAY_WITH_WALLPAPER) != 0); + final WindowContainer animatingContainer = w.mActivityRecord != null + ? w.mActivityRecord.getAnimatingContainer() : null; + final boolean keyguardGoingAwayWithWallpaper = (animatingContainer != null + && animatingContainer.isAnimating(TRANSITION | PARENTS) + && AppTransition.isKeyguardGoingAwayTransit(animatingContainer.mTransit) + && (animatingContainer.mTransitFlags + & TRANSIT_FLAG_KEYGUARD_GOING_AWAY_WITH_WALLPAPER) != 0); boolean needsShowWhenLockedWallpaper = false; if ((w.mAttrs.flags & FLAG_SHOW_WHEN_LOCKED) != 0 @@ -166,8 +168,6 @@ class WallpaperController { final RecentsAnimationController recentsAnimationController = mService.getRecentsAnimationController(); - final WindowContainer animatingContainer = - w.mActivityRecord != null ? w.mActivityRecord.getAnimatingContainer() : null; final boolean animationWallpaper = animatingContainer != null && animatingContainer.getAnimation() != null && animatingContainer.getAnimation().getShowWallpaper(); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 075772566d56..b1f22f8623d6 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -58,7 +58,6 @@ import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_IS_ROUNDED_CO import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; -import static android.view.WindowManager.LayoutParams.TYPE_DREAM; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; @@ -1482,12 +1481,6 @@ public class WindowManagerService extends IWindowManager.Stub + "%s. Aborting.", attrs.token); return WindowManagerGlobal.ADD_BAD_APP_TOKEN; } - } else if (rootType == TYPE_DREAM) { - if (token.windowType != TYPE_DREAM) { - ProtoLog.w(WM_ERROR, "Attempted to add Dream window with bad token " - + "%s. Aborting.", attrs.token); - return WindowManagerGlobal.ADD_BAD_APP_TOKEN; - } } else if (rootType == TYPE_ACCESSIBILITY_OVERLAY) { if (token.windowType != TYPE_ACCESSIBILITY_OVERLAY) { ProtoLog.w(WM_ERROR, @@ -1723,11 +1716,6 @@ public class WindowManagerService extends IWindowManager.Stub + "%s. Aborting.", tokenForLog); return false; } - if (rootType == TYPE_DREAM) { - ProtoLog.w(WM_ERROR, "Attempted to add Dream window with unknown token " - + "%s. Aborting.", tokenForLog); - return false; - } if (rootType == TYPE_QS_DIALOG) { ProtoLog.w(WM_ERROR, "Attempted to add QS dialog window with unknown token " + "%s. Aborting.", tokenForLog); @@ -7746,23 +7734,19 @@ public class WindowManagerService extends IWindowManager.Stub public void syncInputTransactions() { waitForAnimationsToComplete(); - // Collect all input transactions from all displays to make sure we could sync all input - // windows at same time. - final SurfaceControl.Transaction t = mTransactionFactory.get(); synchronized (mGlobalLock) { mWindowPlacerLocked.performSurfacePlacementIfScheduled(); mRoot.forAllDisplays(displayContent -> - displayContent.getInputMonitor().updateInputWindowsImmediately(t)); + displayContent.getInputMonitor().updateInputWindowsImmediately()); } - t.syncInputWindows().apply(); + mTransactionFactory.get().syncInputWindows().apply(true); } private void waitForAnimationsToComplete() { synchronized (mGlobalLock) { long timeoutRemaining = ANIMATION_COMPLETED_TIMEOUT_MS; - while ((mAnimator.isAnimationScheduled() - || mRoot.isAnimating(TRANSITION | CHILDREN)) && timeoutRemaining > 0) { + while (mRoot.isAnimating(TRANSITION | CHILDREN) && timeoutRemaining > 0) { long startTime = System.currentTimeMillis(); try { mGlobalLock.wait(timeoutRemaining); diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java index 5f21e1799958..6ef5ed62f629 100644 --- a/services/core/java/com/android/server/wm/WindowOrganizerController.java +++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java @@ -241,9 +241,6 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub + " multi-window mode... newParent=" + newParent + " task=" + task); return 0; } else { - // Clear the window crop on root task since it may not be updated after - // reparent (no longer be a root task) - task.getSurfaceControl().setWindowCrop(null); task.reparent((ActivityStack) newParent, hop.getToTop() ? POSITION_TOP : POSITION_BOTTOM, false /*moveParents*/, "sanitizeAndApplyHierarchyOp"); @@ -252,9 +249,10 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub final ActivityStack rootTask = (ActivityStack) (newParent != null ? newParent : task.getRootTask()); if (hop.getToTop()) { - as.getDisplay().positionStackAtTop(rootTask, false /* includingParents */); + as.getDisplay().mTaskContainers.positionStackAtTop(rootTask, + false /* includingParents */); } else { - as.getDisplay().positionStackAtBottom(rootTask); + as.getDisplay().mTaskContainers.positionStackAtBottom(rootTask); } } } else { @@ -264,9 +262,9 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub // Ugh, of course ActivityStack has its own special reorder logic... if (task.isRootTask()) { if (hop.getToTop()) { - dc.positionStackAtTop(as, false /* includingParents */); + dc.mTaskContainers.positionStackAtTop(as, false /* includingParents */); } else { - dc.positionStackAtBottom(as); + dc.mTaskContainers.positionStackAtBottom(as); } } else { task.getParent().positionChildAt( diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index c4d700c9aca3..8013a6c6cc4d 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -20,6 +20,7 @@ import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.AppOpsManager.MODE_ALLOWED; import static android.app.AppOpsManager.MODE_DEFAULT; import static android.app.AppOpsManager.OP_NONE; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM; import static android.app.WindowConfiguration.isSplitScreenWindowingMode; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.os.PowerManager.DRAW_WAKE_LOCK; @@ -1694,6 +1695,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return !isParentWindowHidden() || isAnimating(TRANSITION | PARENTS); } + boolean isDreamWindow() { + return mActivityRecord != null + && mActivityRecord.getActivityType() == ACTIVITY_TYPE_DREAM; + } + /** * Whether this window's drawn state might affect the drawn states of the app token. * @@ -3968,7 +3974,12 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } pw.println(prefix + "isOnScreen=" + isOnScreen()); pw.println(prefix + "isVisible=" + isVisible()); - pw.println(prefix + "mEmbeddedDisplayContents=" + mEmbeddedDisplayContents); + if (!mEmbeddedDisplayContents.isEmpty()) { + pw.println(prefix + "mEmbeddedDisplayContents=" + mEmbeddedDisplayContents); + } + if (dumpAll) { + pw.println(prefix + "mRequestedInsetsState: " + mRequestedInsetsState); + } } @Override diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java index 0cfdebc6792d..6b9fbcbf459f 100644 --- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java +++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java @@ -157,9 +157,7 @@ class WindowSurfacePlacer { mInLayout = true; - boolean recoveringMemory = false; if (!mService.mForceRemoves.isEmpty()) { - recoveringMemory = true; // Wait a little bit for things to settle down, and off we go. while (!mService.mForceRemoves.isEmpty()) { final WindowState ws = mService.mForceRemoves.remove(0); @@ -177,7 +175,7 @@ class WindowSurfacePlacer { } try { - mService.mRoot.performSurfacePlacement(recoveringMemory); + mService.mRoot.performSurfacePlacement(); mInLayout = false; diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java index 850c36238513..3c2b6ec9711d 100644 --- a/services/core/java/com/android/server/wm/WindowToken.java +++ b/services/core/java/com/android/server/wm/WindowToken.java @@ -480,26 +480,42 @@ class WindowToken extends WindowContainer<WindowState> { } /** - * Clears the transformation and continue updating the orientation change of display. Only the - * state owner can clear the transform state. + * Finishes the transform and continue updating the orientation change of display. Only the + * state owner can finish the transform state. */ - void clearFixedRotationTransform() { + void finishFixedRotationTransform() { + if (mFixedRotationTransformState == null || mFixedRotationTransformState.mOwner != this) { + return; + } + final boolean changed = + mDisplayContent.continueUpdateOrientationForDiffOrienLaunchingApp(this); + // If it is not the launching app or the display is not rotated, make sure the transform is + // cleared and the configuration is restored from parent. + if (!changed) { + clearFixedRotationTransform(null /* applyDisplayRotation */); + onConfigurationChanged(getParent().getConfiguration()); + } + } + + /** + * Clears the transform and apply display rotation if the action is given. The caller needs to + * refresh the configuration of this container after this method call. + */ + void clearFixedRotationTransform(Runnable applyDisplayRotation) { final FixedRotationTransformState state = mFixedRotationTransformState; - if (state == null || state.mOwner != this) { + if (state == null) { return; } + state.resetTransform(); // Clear the flag so if the display will be updated to the same orientation, the transform - // won't take effect. The state is cleared at the end, because it is used to indicate that - // other windows can use seamless rotation when applying rotation to display. + // won't take effect. state.mIsTransforming = false; - final boolean changed = - mDisplayContent.continueUpdateOrientationForDiffOrienLaunchingApp(this); - // If it is not the launching app or the display is not rotated, make sure the merged - // override configuration is restored from parent. - if (!changed) { - onMergedOverrideConfigurationChanged(); + if (applyDisplayRotation != null) { + applyDisplayRotation.run(); } + // The state is cleared at the end, because it is used to indicate that other windows can + // use seamless rotation when applying rotation to display. for (int i = state.mAssociatedTokens.size() - 1; i >= 0; i--) { state.mAssociatedTokens.get(i).mFixedRotationTransformState = null; } diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp index 9bc5d34c11af..e3f9ae8969b3 100644 --- a/services/core/jni/com_android_server_input_InputManagerService.cpp +++ b/services/core/jni/com_android_server_input_InputManagerService.cpp @@ -206,7 +206,7 @@ public: status_t unregisterInputChannel(JNIEnv* env, const sp<InputChannel>& inputChannel); status_t pilferPointers(const sp<IBinder>& token); - void displayRemoved(JNIEnv* env, int32_t displayId); + void setInputWindows(JNIEnv* env, jobjectArray windowHandleObjArray, int32_t displayId); void setFocusedApplication(JNIEnv* env, int32_t displayId, jobject applicationHandleObj); void setFocusedDisplay(JNIEnv* env, int32_t displayId); void setInputDispatchMode(bool enabled, bool frozen); @@ -771,10 +771,55 @@ void NativeInputManager::getDispatcherConfiguration(InputDispatcherConfiguration } } -void NativeInputManager::displayRemoved(JNIEnv* env, int32_t displayId) { - // Set an empty list to remove all handles from the specific display. - std::vector<sp<InputWindowHandle>> windowHandles; - mInputManager->getDispatcher()->setInputWindows({{displayId, windowHandles}}); +void NativeInputManager::setInputWindows(JNIEnv* env, jobjectArray windowHandleObjArray, + int32_t displayId) { + std::vector<sp<InputWindowHandle> > windowHandles; + + if (windowHandleObjArray) { + jsize length = env->GetArrayLength(windowHandleObjArray); + for (jsize i = 0; i < length; i++) { + jobject windowHandleObj = env->GetObjectArrayElement(windowHandleObjArray, i); + if (! windowHandleObj) { + break; // found null element indicating end of used portion of the array + } + + sp<InputWindowHandle> windowHandle = + android_view_InputWindowHandle_getHandle(env, windowHandleObj); + if (windowHandle != nullptr) { + windowHandles.push_back(windowHandle); + } + env->DeleteLocalRef(windowHandleObj); + } + } + + mInputManager->getDispatcher()->setInputWindows(windowHandles, displayId); + + // Do this after the dispatcher has updated the window handle state. + bool newPointerGesturesEnabled = true; + size_t numWindows = windowHandles.size(); + for (size_t i = 0; i < numWindows; i++) { + const sp<InputWindowHandle>& windowHandle = windowHandles[i]; + const InputWindowInfo* windowInfo = windowHandle->getInfo(); + if (windowInfo && windowInfo->hasFocus && (windowInfo->inputFeatures + & InputWindowInfo::INPUT_FEATURE_DISABLE_TOUCH_PAD_GESTURES)) { + newPointerGesturesEnabled = false; + } + } + + bool pointerGesturesEnabledChanged = false; + { // acquire lock + AutoMutex _l(mLock); + + if (mLocked.pointerGesturesEnabled != newPointerGesturesEnabled) { + mLocked.pointerGesturesEnabled = newPointerGesturesEnabled; + pointerGesturesEnabledChanged = true; + } + } // release lock + + if (pointerGesturesEnabledChanged) { + mInputManager->getReader()->requestRefreshConfiguration( + InputReaderConfiguration::CHANGE_POINTER_GESTURE_ENABLEMENT); + } } void NativeInputManager::setFocusedApplication(JNIEnv* env, int32_t displayId, @@ -1522,10 +1567,11 @@ static void nativeToggleCapsLock(JNIEnv* env, jclass /* clazz */, im->getInputManager()->getReader()->toggleCapsLockState(deviceId); } -static void nativeDisplayRemoved(JNIEnv* env, jclass /* clazz */, jlong ptr, jint displayId) { +static void nativeSetInputWindows(JNIEnv* env, jclass /* clazz */, + jlong ptr, jobjectArray windowHandleObjArray, jint displayId) { NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr); - im->displayRemoved(env, displayId); + im->setInputWindows(env, windowHandleObjArray, displayId); } static void nativeSetFocusedApplication(JNIEnv* env, jclass /* clazz */, @@ -1769,7 +1815,8 @@ static const JNINativeMethod gInputManagerMethods[] = { {"nativeVerifyInputEvent", "(JLandroid/view/InputEvent;)Landroid/view/VerifiedInputEvent;", (void*)nativeVerifyInputEvent}, {"nativeToggleCapsLock", "(JI)V", (void*)nativeToggleCapsLock}, - {"nativeDisplayRemoved", "(JI)V", (void*)nativeDisplayRemoved}, + {"nativeSetInputWindows", "(J[Landroid/view/InputWindowHandle;I)V", + (void*)nativeSetInputWindows}, {"nativeSetFocusedApplication", "(JILandroid/view/InputApplicationHandle;)V", (void*)nativeSetFocusedApplication}, {"nativeSetFocusedDisplay", "(JI)V", (void*)nativeSetFocusedDisplay}, diff --git a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp index 822f3835cc07..e4061b4fc34c 100644 --- a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp +++ b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp @@ -2068,8 +2068,8 @@ static void android_location_GnssLocationProvider_class_init_native(JNIEnv* env, class_gnssClock = (jclass) env->NewGlobalRef(gnssClockClass); method_gnssClockCtor = env->GetMethodID(class_gnssClock, "<init>", "()V"); - jclass gnssConfiguration_halInterfaceVersionClass = - env->FindClass("com/android/server/location/GnssConfiguration$HalInterfaceVersion"); + jclass gnssConfiguration_halInterfaceVersionClass = env->FindClass( + "com/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion"); class_gnssConfiguration_halInterfaceVersion = (jclass) env->NewGlobalRef(gnssConfiguration_halInterfaceVersionClass); method_halInterfaceVersionCtor = @@ -3738,39 +3738,29 @@ static const JNINativeMethod sNetworkConnectivityMethods[] = { }; static const JNINativeMethod sConfigurationMethods[] = { - /* name, signature, funcPtr */ - {"native_get_gnss_configuration_version", - "()Lcom/android/server/location/GnssConfiguration$HalInterfaceVersion;", - reinterpret_cast<void *>( - android_location_GnssConfiguration_get_gnss_configuration_version)}, - {"native_set_supl_es", - "(I)Z", - reinterpret_cast<void *>(android_location_GnssConfiguration_set_supl_es)}, - {"native_set_supl_version", - "(I)Z", - reinterpret_cast<void *>(android_location_GnssConfiguration_set_supl_version)}, - {"native_set_supl_mode", - "(I)Z", - reinterpret_cast<void *>(android_location_GnssConfiguration_set_supl_mode)}, - {"native_set_lpp_profile", - "(I)Z", - reinterpret_cast<void *>(android_location_GnssConfiguration_set_lpp_profile)}, - {"native_set_gnss_pos_protocol_select", - "(I)Z", - reinterpret_cast<void *>( - android_location_GnssConfiguration_set_gnss_pos_protocol_select)}, - {"native_set_gps_lock", - "(I)Z", - reinterpret_cast<void *>(android_location_GnssConfiguration_set_gps_lock)}, - {"native_set_emergency_supl_pdn", - "(I)Z", - reinterpret_cast<void *>(android_location_GnssConfiguration_set_emergency_supl_pdn)}, - {"native_set_satellite_blacklist", - "([I[I)Z", - reinterpret_cast<void *>(android_location_GnssConfiguration_set_satellite_blacklist)}, - {"native_set_es_extension_sec", - "(I)Z", - reinterpret_cast<void *>(android_location_GnssConfiguration_set_es_extension_sec)}, + /* name, signature, funcPtr */ + {"native_get_gnss_configuration_version", + "()Lcom/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion;", + reinterpret_cast<void*>( + android_location_GnssConfiguration_get_gnss_configuration_version)}, + {"native_set_supl_es", "(I)Z", + reinterpret_cast<void*>(android_location_GnssConfiguration_set_supl_es)}, + {"native_set_supl_version", "(I)Z", + reinterpret_cast<void*>(android_location_GnssConfiguration_set_supl_version)}, + {"native_set_supl_mode", "(I)Z", + reinterpret_cast<void*>(android_location_GnssConfiguration_set_supl_mode)}, + {"native_set_lpp_profile", "(I)Z", + reinterpret_cast<void*>(android_location_GnssConfiguration_set_lpp_profile)}, + {"native_set_gnss_pos_protocol_select", "(I)Z", + reinterpret_cast<void*>(android_location_GnssConfiguration_set_gnss_pos_protocol_select)}, + {"native_set_gps_lock", "(I)Z", + reinterpret_cast<void*>(android_location_GnssConfiguration_set_gps_lock)}, + {"native_set_emergency_supl_pdn", "(I)Z", + reinterpret_cast<void*>(android_location_GnssConfiguration_set_emergency_supl_pdn)}, + {"native_set_satellite_blacklist", "([I[I)Z", + reinterpret_cast<void*>(android_location_GnssConfiguration_set_satellite_blacklist)}, + {"native_set_es_extension_sec", "(I)Z", + reinterpret_cast<void*>(android_location_GnssConfiguration_set_es_extension_sec)}, }; static const JNINativeMethod sVisibilityControlMethods[] = { @@ -3782,53 +3772,27 @@ static const JNINativeMethod sVisibilityControlMethods[] = { }; int register_android_server_location_GnssLocationProvider(JNIEnv* env) { - jniRegisterNativeMethods(env, "com/android/server/location/GnssAntennaInfoProvider", + jniRegisterNativeMethods(env, "com/android/server/location/gnss/GnssAntennaInfoProvider", sAntennaInfoMethods, NELEM(sAntennaInfoMethods)); - jniRegisterNativeMethods( - env, - "com/android/server/location/GnssBatchingProvider", - sMethodsBatching, - NELEM(sMethodsBatching)); - jniRegisterNativeMethods( - env, - "com/android/server/location/GnssGeofenceProvider", - sGeofenceMethods, - NELEM(sGeofenceMethods)); - jniRegisterNativeMethods( - env, - "com/android/server/location/GnssMeasurementsProvider", - sMeasurementMethods, - NELEM(sMeasurementMethods)); - jniRegisterNativeMethods( - env, - "com/android/server/location/GnssMeasurementCorrectionsProvider", - sMeasurementCorrectionsMethods, - NELEM(sMeasurementCorrectionsMethods)); - jniRegisterNativeMethods( - env, - "com/android/server/location/GnssNavigationMessageProvider", - sNavigationMessageMethods, - NELEM(sNavigationMessageMethods)); - jniRegisterNativeMethods( - env, - "com/android/server/location/GnssNetworkConnectivityHandler", - sNetworkConnectivityMethods, - NELEM(sNetworkConnectivityMethods)); - jniRegisterNativeMethods( - env, - "com/android/server/location/GnssConfiguration", - sConfigurationMethods, - NELEM(sConfigurationMethods)); - jniRegisterNativeMethods( - env, - "com/android/server/location/GnssVisibilityControl", - sVisibilityControlMethods, - NELEM(sVisibilityControlMethods)); - return jniRegisterNativeMethods( - env, - "com/android/server/location/GnssLocationProvider", - sMethods, - NELEM(sMethods)); + jniRegisterNativeMethods(env, "com/android/server/location/gnss/GnssBatchingProvider", + sMethodsBatching, NELEM(sMethodsBatching)); + jniRegisterNativeMethods(env, "com/android/server/location/gnss/GnssGeofenceProvider", + sGeofenceMethods, NELEM(sGeofenceMethods)); + jniRegisterNativeMethods(env, "com/android/server/location/gnss/GnssMeasurementsProvider", + sMeasurementMethods, NELEM(sMeasurementMethods)); + jniRegisterNativeMethods(env, + "com/android/server/location/gnss/GnssMeasurementCorrectionsProvider", + sMeasurementCorrectionsMethods, NELEM(sMeasurementCorrectionsMethods)); + jniRegisterNativeMethods(env, "com/android/server/location/gnss/GnssNavigationMessageProvider", + sNavigationMessageMethods, NELEM(sNavigationMessageMethods)); + jniRegisterNativeMethods(env, "com/android/server/location/gnss/GnssNetworkConnectivityHandler", + sNetworkConnectivityMethods, NELEM(sNetworkConnectivityMethods)); + jniRegisterNativeMethods(env, "com/android/server/location/gnss/GnssConfiguration", + sConfigurationMethods, NELEM(sConfigurationMethods)); + jniRegisterNativeMethods(env, "com/android/server/location/gnss/GnssVisibilityControl", + sVisibilityControlMethods, NELEM(sVisibilityControlMethods)); + return jniRegisterNativeMethods(env, "com/android/server/location/gnss/GnssLocationProvider", + sMethods, NELEM(sMethods)); } } /* namespace android */ diff --git a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp index 725036c9df0f..e9a5e58e49d1 100644 --- a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp +++ b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp @@ -227,56 +227,40 @@ static inline unique_fd convertPfdToFdAndDup(JNIEnv* env, const JniIds& jni, job return result; } +enum MetadataMode : int8_t { + STDIN = 0, + LOCAL_FILE = 1, + DATA_ONLY_STREAMING = 2, + STREAMING = 3, +}; + struct InputDesc { unique_fd fd; IncFsSize size; IncFsBlockKind kind = INCFS_BLOCK_KIND_DATA; bool waitOnEof = false; bool streaming = false; + MetadataMode mode = STDIN; }; using InputDescs = std::vector<InputDesc>; -static inline InputDescs openInputs(JNIEnv* env, const JniIds& jni, jobject shellCommand, - IncFsSize size, IncFsSpan metadata) { +template <class T> +std::optional<T> read(IncFsSpan& data) { + if (data.size < (int32_t)sizeof(T)) { + return {}; + } + T res; + memcpy(&res, data.data, sizeof(res)); + data.data += sizeof(res); + data.size -= sizeof(res); + return res; +} + +static inline InputDescs openLocalFile(JNIEnv* env, const JniIds& jni, jobject shellCommand, + IncFsSize size, const std::string& filePath) { InputDescs result; result.reserve(2); - if (metadata.size == 0 || *metadata.data == '-') { - // stdin - auto fd = convertPfdToFdAndDup( - env, jni, - env->CallStaticObjectMethod(jni.packageManagerShellCommandDataLoader, - jni.pmscdGetStdInPFD, shellCommand)); - if (fd.ok()) { - result.push_back(InputDesc{ - .fd = std::move(fd), - .size = size, - .waitOnEof = true, - }); - } - return result; - } - if (*metadata.data == '+') { - // verity tree from stdin, rest is streaming - auto fd = convertPfdToFdAndDup( - env, jni, - env->CallStaticObjectMethod(jni.packageManagerShellCommandDataLoader, - jni.pmscdGetStdInPFD, shellCommand)); - if (fd.ok()) { - auto treeSize = verityTreeSizeForFile(size); - result.push_back(InputDesc{ - .fd = std::move(fd), - .size = treeSize, - .kind = INCFS_BLOCK_KIND_HASH, - .waitOnEof = true, - .streaming = true, - }); - } - return result; - } - - // local file and possibly signature - const std::string filePath(metadata.data, metadata.size); const std::string idsigPath = filePath + ".idsig"; auto idsigFd = convertPfdToFdAndDup( @@ -314,6 +298,59 @@ static inline InputDescs openInputs(JNIEnv* env, const JniIds& jni, jobject shel return result; } +static inline InputDescs openInputs(JNIEnv* env, const JniIds& jni, jobject shellCommand, + IncFsSize size, IncFsSpan metadata) { + auto mode = read<int8_t>(metadata).value_or(STDIN); + if (mode == LOCAL_FILE) { + // local file and possibly signature + return openLocalFile(env, jni, shellCommand, size, + std::string(metadata.data, metadata.size)); + } + + auto fd = convertPfdToFdAndDup( + env, jni, + env->CallStaticObjectMethod(jni.packageManagerShellCommandDataLoader, + jni.pmscdGetStdInPFD, shellCommand)); + if (!fd.ok()) { + return {}; + } + + InputDescs result; + switch (mode) { + case STDIN: { + result.push_back(InputDesc{ + .fd = std::move(fd), + .size = size, + .waitOnEof = true, + }); + break; + } + case DATA_ONLY_STREAMING: { + // verity tree from stdin, rest is streaming + auto treeSize = verityTreeSizeForFile(size); + result.push_back(InputDesc{ + .fd = std::move(fd), + .size = treeSize, + .kind = INCFS_BLOCK_KIND_HASH, + .waitOnEof = true, + .streaming = true, + .mode = DATA_ONLY_STREAMING, + }); + break; + } + case STREAMING: { + result.push_back(InputDesc{ + .fd = std::move(fd), + .size = 0, + .streaming = true, + .mode = STREAMING, + }); + break; + } + } + return result; +} + static inline JNIEnv* GetJNIEnvironment(JavaVM* vm) { JNIEnv* env; if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) { @@ -390,6 +427,7 @@ private: blocks.reserve(BLOCKS_COUNT); unique_fd streamingFd; + MetadataMode streamingMode; for (auto&& file : addedFiles) { auto inputs = openInputs(env, jni, shellCommand, file.size, file.metadata); if (inputs.empty()) { @@ -411,6 +449,7 @@ private: for (auto&& input : inputs) { if (input.streaming && !streamingFd.ok()) { streamingFd.reset(dup(input.fd)); + streamingMode = input.mode; } if (!copyToIncFs(incfsFd, input.size, input.kind, input.fd, input.waitOnEof, &buffer, &blocks)) { @@ -425,7 +464,7 @@ private: if (streamingFd.ok()) { ALOGE("onPrepareImage: done, proceeding to streaming."); - return initStreaming(std::move(streamingFd)); + return initStreaming(std::move(streamingFd), streamingMode); } ALOGE("onPrepareImage: done."); @@ -564,7 +603,7 @@ private: } // Streaming. - bool initStreaming(unique_fd inout) { + bool initStreaming(unique_fd inout, MetadataMode mode) { mEventFd.reset(eventfd(0, EFD_CLOEXEC)); if (mEventFd < 0) { ALOGE("Failed to create eventfd."); @@ -591,8 +630,8 @@ private: } } - mReceiverThread = - std::thread([this, io = std::move(inout)]() mutable { receiver(std::move(io)); }); + mReceiverThread = std::thread( + [this, io = std::move(inout), mode]() mutable { receiver(std::move(io), mode); }); ALOGI("Started streaming..."); return true; } @@ -624,7 +663,7 @@ private: } } - void receiver(unique_fd inout) { + void receiver(unique_fd inout, MetadataMode mode) { std::vector<uint8_t> data; std::vector<IncFsDataBlock> instructions; std::unordered_map<FileIdx, unique_fd> writeFds; @@ -667,7 +706,7 @@ private: break; } const FileIdx fileIdx = header.fileIdx; - const android::dataloader::FileId fileId = convertFileIndexToFileId(fileIdx); + const android::dataloader::FileId fileId = convertFileIndexToFileId(mode, fileIdx); if (!android::incfs::isValidFileId(fileId)) { ALOGE("Unknown data destination for file ID %d. " "Ignore.", @@ -679,7 +718,7 @@ private: if (writeFd < 0) { writeFd.reset(this->mIfs->openWrite(fileId)); if (writeFd < 0) { - ALOGE("Failed to open file %d for writing (%d). Aboring.", header.fileIdx, + ALOGE("Failed to open file %d for writing (%d). Aborting.", header.fileIdx, -writeFd); break; } @@ -716,9 +755,11 @@ private: } FileIdx convertFileIdToFileIndex(android::dataloader::FileId fileId) { - // FileId is a string in format '+FileIdx\0'. + // FileId has format '\2FileIdx'. const char* meta = (const char*)&fileId; - if (*meta != '+') { + + int8_t mode = *meta; + if (mode != DATA_ONLY_STREAMING && mode != STREAMING) { return -1; } @@ -732,10 +773,10 @@ private: return FileIdx(fileIdx); } - android::dataloader::FileId convertFileIndexToFileId(FileIdx fileIdx) { + android::dataloader::FileId convertFileIndexToFileId(MetadataMode mode, FileIdx fileIdx) { IncFsFileId fileId = {}; char* meta = (char*)&fileId; - *meta = '+'; + *meta = mode; if (auto [p, ec] = std::to_chars(meta + 1, meta + sizeof(fileId), fileIdx); ec != std::errc()) { return {}; diff --git a/services/core/xsd/display-device-config/display-device-config.xsd b/services/core/xsd/display-device-config/display-device-config.xsd index 5c7f30576741..bbd8de254aef 100644 --- a/services/core/xsd/display-device-config/display-device-config.xsd +++ b/services/core/xsd/display-device-config/display-device-config.xsd @@ -25,7 +25,10 @@ <xs:element name="displayConfiguration"> <xs:complexType> <xs:sequence> - <xs:element type="nitsMap" name="screenBrightnessMap"/> + <xs:element type="nitsMap" name="screenBrightnessMap"> + <xs:annotation name="nonnull"/> + <xs:annotation name="final"/> + </xs:element> </xs:sequence> </xs:complexType> </xs:element> @@ -34,15 +37,23 @@ <xs:complexType name="nitsMap"> <xs:sequence> - <xs:element name="point" type="point" maxOccurs="unbounded" minOccurs="2"/> - <xs:element name="highBrightnessStart" minOccurs="0" type="nonNegativeDecimal"/> + <xs:element name="point" type="point" maxOccurs="unbounded" minOccurs="2"> + <xs:annotation name="nonnull"/> + <xs:annotation name="final"/> + </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="point"> <xs:sequence> - <xs:element type="nonNegativeDecimal" name="value"/> - <xs:element type="nonNegativeDecimal" name="nits"/> + <xs:element type="nonNegativeDecimal" name="value"> + <xs:annotation name="nonnull"/> + <xs:annotation name="final"/> + </xs:element> + <xs:element type="nonNegativeDecimal" name="nits"> + <xs:annotation name="nonnull"/> + <xs:annotation name="final"/> + </xs:element> </xs:sequence> </xs:complexType> diff --git a/services/core/xsd/display-device-config/schema/current.txt b/services/core/xsd/display-device-config/schema/current.txt index 5a9c9457b423..7a35642d2a1b 100644 --- a/services/core/xsd/display-device-config/schema/current.txt +++ b/services/core/xsd/display-device-config/schema/current.txt @@ -3,23 +3,21 @@ package com.android.server.display.config { public class DisplayConfiguration { ctor public DisplayConfiguration(); - method public com.android.server.display.config.NitsMap getScreenBrightnessMap(); - method public void setScreenBrightnessMap(com.android.server.display.config.NitsMap); + method @NonNull public final com.android.server.display.config.NitsMap getScreenBrightnessMap(); + method public final void setScreenBrightnessMap(@NonNull com.android.server.display.config.NitsMap); } public class NitsMap { ctor public NitsMap(); - method public java.math.BigDecimal getHighBrightnessStart(); - method public java.util.List<com.android.server.display.config.Point> getPoint(); - method public void setHighBrightnessStart(java.math.BigDecimal); + method @NonNull public final java.util.List<com.android.server.display.config.Point> getPoint(); } public class Point { ctor public Point(); - method public java.math.BigDecimal getNits(); - method public java.math.BigDecimal getValue(); - method public void setNits(java.math.BigDecimal); - method public void setValue(java.math.BigDecimal); + method @NonNull public final java.math.BigDecimal getNits(); + method @NonNull public final java.math.BigDecimal getValue(); + method public final void setNits(@NonNull java.math.BigDecimal); + method public final void setValue(@NonNull java.math.BigDecimal); } public class XmlParser { diff --git a/services/devicepolicy/Android.bp b/services/devicepolicy/Android.bp index cdbe77a3d64c..2f6592bd33b0 100644 --- a/services/devicepolicy/Android.bp +++ b/services/devicepolicy/Android.bp @@ -13,8 +13,4 @@ java_library_static { "services.core", "app-compat-annotations", ], - - plugins: [ - "compat-changeid-annotation-processor", - ], } diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 09fab3e29fe0..1544ff127121 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -2079,7 +2079,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Owners newOwners() { return new Owners(getUserManager(), getUserManagerInternal(), - getPackageManagerInternal(), getActivityTaskManagerInternal()); + getPackageManagerInternal(), getActivityTaskManagerInternal(), + getActivityManagerInternal()); } UserManager getUserManager() { @@ -7171,7 +7172,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { ActiveAdmin admin; synchronized (getLockObject()) { if (who == null) { - if ((frpManagementAgentUid != mInjector.binderGetCallingUid())) { + if ((frpManagementAgentUid != mInjector.binderGetCallingUid()) + && (mContext.checkCallingPermission(permission.MASTER_CLEAR) + != PackageManager.PERMISSION_GRANTED)) { throw new SecurityException( "Must be called by the FRP management agent on device"); } @@ -9182,8 +9185,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return true; } - Log.w(LOG_TAG, String.format("Package %s (uid=%d, pid=%d) cannot access Device IDs", - packageName, uid, pid)); return false; } @@ -15740,9 +15741,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } + final int suspendedState = suspended + ? PERSONAL_APPS_SUSPENDED_EXPLICITLY + : PERSONAL_APPS_NOT_SUSPENDED; mInjector.binderWithCleanCallingIdentity( - () -> applyPersonalAppsSuspension( - callingUserId, PERSONAL_APPS_SUSPENDED_EXPLICITLY)); + () -> applyPersonalAppsSuspension(callingUserId, suspendedState)); DevicePolicyEventLogger .createEvent(DevicePolicyEnums.SET_PERSONAL_APPS_SUSPENDED) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java b/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java index f70fe909b459..3cdd482ffa37 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java @@ -17,6 +17,7 @@ package com.android.server.devicepolicy; import android.annotation.Nullable; +import android.app.ActivityManagerInternal; import android.app.AppOpsManagerInternal; import android.app.admin.SystemUpdateInfo; import android.app.admin.SystemUpdatePolicy; @@ -112,6 +113,7 @@ class Owners { private final UserManagerInternal mUserManagerInternal; private final PackageManagerInternal mPackageManagerInternal; private final ActivityTaskManagerInternal mActivityTaskManagerInternal; + private final ActivityManagerInternal mActivityManagerInternal; private boolean mSystemReady; @@ -138,9 +140,10 @@ class Owners { public Owners(UserManager userManager, UserManagerInternal userManagerInternal, PackageManagerInternal packageManagerInternal, - ActivityTaskManagerInternal activityTaskManagerInternal) { + ActivityTaskManagerInternal activityTaskManagerInternal, + ActivityManagerInternal activitykManagerInternal) { this(userManager, userManagerInternal, packageManagerInternal, - activityTaskManagerInternal, new Injector()); + activityTaskManagerInternal, activitykManagerInternal, new Injector()); } @VisibleForTesting @@ -148,11 +151,13 @@ class Owners { UserManagerInternal userManagerInternal, PackageManagerInternal packageManagerInternal, ActivityTaskManagerInternal activityTaskManagerInternal, + ActivityManagerInternal activityManagerInternal, Injector injector) { mUserManager = userManager; mUserManagerInternal = userManagerInternal; mPackageManagerInternal = packageManagerInternal; mActivityTaskManagerInternal = activityTaskManagerInternal; + mActivityManagerInternal = activityManagerInternal; mInjector = injector; } @@ -220,6 +225,7 @@ class Owners { PackageManager.MATCH_ALL | PackageManager.MATCH_KNOWN_PACKAGES, mDeviceOwnerUserId) : Process.INVALID_UID; mActivityTaskManagerInternal.setDeviceOwnerUid(uid); + mActivityManagerInternal.setDeviceOwnerUid(uid); } String getDeviceOwnerPackageName() { diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp index ed85b931c08e..25da8fe4a2e8 100644 --- a/services/incremental/IncrementalService.cpp +++ b/services/incremental/IncrementalService.cpp @@ -157,7 +157,6 @@ std::string makeBindMdName() { IncrementalService::IncFsMount::~IncFsMount() { incrementalService.mDataLoaderManager->destroyDataLoader(mountId); - control.reset(); LOG(INFO) << "Unmounting and cleaning up mount " << mountId << " with root '" << root << '\''; for (auto&& [target, _] : bindPoints) { LOG(INFO) << "\tbind: " << target; @@ -286,7 +285,6 @@ void IncrementalService::onDump(int fd) { dprintf(fd, "\t\t\tpackageName: %s\n", params.packageName.c_str()); dprintf(fd, "\t\t\tclassName: %s\n", params.className.c_str()); dprintf(fd, "\t\t\targuments: %s\n", params.arguments.c_str()); - dprintf(fd, "\t\t\tdynamicArgs: %d\n", int(params.dynamicArgs.size())); } dprintf(fd, "\t\tstorages (%d):\n", int(mnt.storages.size())); for (auto&& [storageId, storage] : mnt.storages) { @@ -425,9 +423,10 @@ StorageId IncrementalService::createStorage( LOG(ERROR) << "Vold::mountIncFs() returned invalid control parcel."; return kInvalidStorageId; } - control.cmd = controlParcel.cmd.release().release(); - control.pendingReads = controlParcel.pendingReads.release().release(); - control.logs = controlParcel.log.release().release(); + int cmd = controlParcel.cmd.release().release(); + int pendingReads = controlParcel.pendingReads.release().release(); + int logs = controlParcel.log.release().release(); + control = mIncFs->createControl(cmd, pendingReads, logs); } std::unique_lock l(mLock); @@ -966,16 +965,17 @@ bool IncrementalService::mountExistingImage(std::string_view root, std::string_v auto mountTarget = path::join(root, constants().mount); const auto backing = path::join(root, constants().backing); - IncFsMount::Control control; IncrementalFileSystemControlParcel controlParcel; auto status = mVold->mountIncFs(backing, mountTarget, 0, &controlParcel); if (!status.isOk()) { LOG(ERROR) << "Vold::mountIncFs() failed: " << status.toString8(); return false; } - control.cmd = controlParcel.cmd.release().release(); - control.pendingReads = controlParcel.pendingReads.release().release(); - control.logs = controlParcel.log.release().release(); + + int cmd = controlParcel.cmd.release().release(); + int pendingReads = controlParcel.pendingReads.release().release(); + int logs = controlParcel.log.release().release(); + IncFsMount::Control control = mIncFs->createControl(cmd, pendingReads, logs); auto ifs = std::make_shared<IncFsMount>(std::string(root), -1, std::move(control), *this); @@ -1085,10 +1085,10 @@ bool IncrementalService::prepareDataLoader(IncrementalService::IncFsMount& ifs, } FileSystemControlParcel fsControlParcel; fsControlParcel.incremental = aidl::make_nullable<IncrementalFileSystemControlParcel>(); - fsControlParcel.incremental->cmd.reset(base::unique_fd(::dup(ifs.control.cmd))); + fsControlParcel.incremental->cmd.reset(base::unique_fd(::dup(ifs.control.cmd()))); fsControlParcel.incremental->pendingReads.reset( - base::unique_fd(::dup(ifs.control.pendingReads))); - fsControlParcel.incremental->log.reset(base::unique_fd(::dup(ifs.control.logs))); + base::unique_fd(::dup(ifs.control.pendingReads()))); + fsControlParcel.incremental->log.reset(base::unique_fd(::dup(ifs.control.logs()))); sp<IncrementalDataLoaderListener> listener = new IncrementalDataLoaderListener(*this, externalListener ? *externalListener diff --git a/services/incremental/ServiceWrappers.h b/services/incremental/ServiceWrappers.h index 5349ebff5052..c70a47d40c4e 100644 --- a/services/incremental/ServiceWrappers.h +++ b/services/incremental/ServiceWrappers.h @@ -66,15 +66,17 @@ public: class IncFsWrapper { public: virtual ~IncFsWrapper() = default; - virtual ErrorCode makeFile(Control control, std::string_view path, int mode, FileId id, + virtual Control createControl(IncFsFd cmd, IncFsFd pendingReads, IncFsFd logs) const = 0; + virtual ErrorCode makeFile(const Control& control, std::string_view path, int mode, FileId id, NewFileParams params) const = 0; - virtual ErrorCode makeDir(Control control, std::string_view path, int mode) const = 0; - virtual RawMetadata getMetadata(Control control, FileId fileid) const = 0; - virtual RawMetadata getMetadata(Control control, std::string_view path) const = 0; - virtual FileId getFileId(Control control, std::string_view path) const = 0; - virtual ErrorCode link(Control control, std::string_view from, std::string_view to) const = 0; - virtual ErrorCode unlink(Control control, std::string_view path) const = 0; - virtual base::unique_fd openWrite(Control control, FileId id) const = 0; + virtual ErrorCode makeDir(const Control& control, std::string_view path, int mode) const = 0; + virtual RawMetadata getMetadata(const Control& control, FileId fileid) const = 0; + virtual RawMetadata getMetadata(const Control& control, std::string_view path) const = 0; + virtual FileId getFileId(const Control& control, std::string_view path) const = 0; + virtual ErrorCode link(const Control& control, std::string_view from, + std::string_view to) const = 0; + virtual ErrorCode unlink(const Control& control, std::string_view path) const = 0; + virtual base::unique_fd openWrite(const Control& control, FileId id) const = 0; virtual ErrorCode writeBlocks(Span<const DataBlock> blocks) const = 0; }; @@ -149,29 +151,33 @@ class RealIncFs : public IncFsWrapper { public: RealIncFs() = default; ~RealIncFs() = default; - ErrorCode makeFile(Control control, std::string_view path, int mode, FileId id, + Control createControl(IncFsFd cmd, IncFsFd pendingReads, IncFsFd logs) const override { + return incfs::createControl(cmd, pendingReads, logs); + } + ErrorCode makeFile(const Control& control, std::string_view path, int mode, FileId id, NewFileParams params) const override { return incfs::makeFile(control, path, mode, id, params); } - ErrorCode makeDir(Control control, std::string_view path, int mode) const override { + ErrorCode makeDir(const Control& control, std::string_view path, int mode) const override { return incfs::makeDir(control, path, mode); } - RawMetadata getMetadata(Control control, FileId fileid) const override { + RawMetadata getMetadata(const Control& control, FileId fileid) const override { return incfs::getMetadata(control, fileid); } - RawMetadata getMetadata(Control control, std::string_view path) const override { + RawMetadata getMetadata(const Control& control, std::string_view path) const override { return incfs::getMetadata(control, path); } - FileId getFileId(Control control, std::string_view path) const override { + FileId getFileId(const Control& control, std::string_view path) const override { return incfs::getFileId(control, path); } - ErrorCode link(Control control, std::string_view from, std::string_view to) const override { + ErrorCode link(const Control& control, std::string_view from, + std::string_view to) const override { return incfs::link(control, from, to); } - ErrorCode unlink(Control control, std::string_view path) const override { + ErrorCode unlink(const Control& control, std::string_view path) const override { return incfs::unlink(control, path); } - base::unique_fd openWrite(Control control, FileId id) const override { + base::unique_fd openWrite(const Control& control, FileId id) const override { return base::unique_fd{incfs::openWrite(control, id)}; } ErrorCode writeBlocks(Span<const DataBlock> blocks) const override { diff --git a/services/incremental/test/IncrementalServiceTest.cpp b/services/incremental/test/IncrementalServiceTest.cpp index f5b88d93c8de..c4b4d1746cbe 100644 --- a/services/incremental/test/IncrementalServiceTest.cpp +++ b/services/incremental/test/IncrementalServiceTest.cpp @@ -164,22 +164,23 @@ private: class MockIncFs : public IncFsWrapper { public: + MOCK_CONST_METHOD3(createControl, Control(IncFsFd cmd, IncFsFd pendingReads, IncFsFd logs)); MOCK_CONST_METHOD5(makeFile, - ErrorCode(Control control, std::string_view path, int mode, FileId id, + ErrorCode(const Control& control, std::string_view path, int mode, FileId id, NewFileParams params)); - MOCK_CONST_METHOD3(makeDir, ErrorCode(Control control, std::string_view path, int mode)); - MOCK_CONST_METHOD2(getMetadata, RawMetadata(Control control, FileId fileid)); - MOCK_CONST_METHOD2(getMetadata, RawMetadata(Control control, std::string_view path)); - MOCK_CONST_METHOD2(getFileId, FileId(Control control, std::string_view path)); + MOCK_CONST_METHOD3(makeDir, ErrorCode(const Control& control, std::string_view path, int mode)); + MOCK_CONST_METHOD2(getMetadata, RawMetadata(const Control& control, FileId fileid)); + MOCK_CONST_METHOD2(getMetadata, RawMetadata(const Control& control, std::string_view path)); + MOCK_CONST_METHOD2(getFileId, FileId(const Control& control, std::string_view path)); MOCK_CONST_METHOD3(link, - ErrorCode(Control control, std::string_view from, std::string_view to)); - MOCK_CONST_METHOD2(unlink, ErrorCode(Control control, std::string_view path)); - MOCK_CONST_METHOD2(openWrite, base::unique_fd(Control control, FileId id)); + ErrorCode(const Control& control, std::string_view from, std::string_view to)); + MOCK_CONST_METHOD2(unlink, ErrorCode(const Control& control, std::string_view path)); + MOCK_CONST_METHOD2(openWrite, base::unique_fd(const Control& control, FileId id)); MOCK_CONST_METHOD1(writeBlocks, ErrorCode(Span<const DataBlock> blocks)); void makeFileFails() { ON_CALL(*this, makeFile(_, _, _, _, _)).WillByDefault(Return(-1)); } void makeFileSuccess() { ON_CALL(*this, makeFile(_, _, _, _, _)).WillByDefault(Return(0)); } - RawMetadata getMountInfoMetadata(Control control, std::string_view path) { + RawMetadata getMountInfoMetadata(const Control& control, std::string_view path) { metadata::Mount m; m.mutable_storage()->set_id(100); m.mutable_loader()->set_package_name("com.test"); @@ -189,13 +190,13 @@ public: m.mutable_loader()->release_package_name(); return {metadata.begin(), metadata.end()}; } - RawMetadata getStorageMetadata(Control control, std::string_view path) { + RawMetadata getStorageMetadata(const Control& control, std::string_view path) { metadata::Storage st; st.set_id(100); auto metadata = st.SerializeAsString(); return {metadata.begin(), metadata.end()}; } - RawMetadata getBindPointMetadata(Control control, std::string_view path) { + RawMetadata getBindPointMetadata(const Control& control, std::string_view path) { metadata::BindPoint bp; std::string destPath = "dest"; std::string srcPath = "src"; diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index b019e9dd03ba..1939313ff59b 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -144,7 +144,6 @@ import com.android.server.power.ThermalManagerService; import com.android.server.recoverysystem.RecoverySystemService; import com.android.server.restrictions.RestrictionsManagerService; import com.android.server.role.RoleManagerService; -import com.android.server.rollback.RollbackManagerService; import com.android.server.security.FileIntegrityService; import com.android.server.security.KeyAttestationApplicationIdProviderService; import com.android.server.security.KeyChainSystemService; @@ -294,6 +293,8 @@ public final class SystemServer { "com.android.server.DeviceIdleController"; private static final String BLOB_STORE_MANAGER_SERVICE_CLASS = "com.android.server.blob.BlobStoreManagerService"; + private static final String ROLLBACK_MANAGER_SERVICE_CLASS = + "com.android.server.rollback.RollbackManagerService"; private static final String TETHERING_CONNECTOR_CLASS = "android.net.ITetheringConnector"; @@ -964,7 +965,7 @@ public final class SystemServer { // Manages apk rollbacks. t.traceBegin("StartRollbackManagerService"); - mSystemServiceManager.startService(RollbackManagerService.class); + mSystemServiceManager.startService(ROLLBACK_MANAGER_SERVICE_CLASS); t.traceEnd(); // Service to capture bugreports. @@ -1068,7 +1069,8 @@ public final class SystemServer { t.traceEnd(); t.traceBegin("StartTelephonyRegistry"); - telephonyRegistry = new TelephonyRegistry(context); + telephonyRegistry = new TelephonyRegistry( + context, new TelephonyRegistry.ConfigurationProvider()); ServiceManager.addService("telephony.registry", telephonyRegistry); t.traceEnd(); @@ -1413,7 +1415,7 @@ public final class SystemServer { t.traceBegin("StartIpSecService"); try { - ipSecService = IpSecService.create(context); + ipSecService = IpSecService.create(context, networkManagement); ServiceManager.addService(Context.IPSEC_SERVICE, ipSecService); } catch (Throwable e) { reportWtf("starting IpSec Service", e); diff --git a/services/people/java/com/android/server/people/data/DataManager.java b/services/people/java/com/android/server/people/data/DataManager.java index ae8d5743668a..136ee91dd685 100644 --- a/services/people/java/com/android/server/people/data/DataManager.java +++ b/services/people/java/com/android/server/people/data/DataManager.java @@ -26,6 +26,7 @@ import android.app.NotificationManager; import android.app.Person; import android.app.prediction.AppTarget; import android.app.prediction.AppTargetEvent; +import android.app.usage.UsageEvents; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentResolver; @@ -70,6 +71,7 @@ import com.android.server.notification.NotificationManagerInternal; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.concurrent.Executor; import java.util.concurrent.Executors; @@ -237,6 +239,27 @@ public class DataManager { eventHistory.addEvent(new Event(System.currentTimeMillis(), eventType)); } + /** + * Queries events for moving app to foreground between {@code startTime} and {@code endTime}. + */ + @NonNull + public List<UsageEvents.Event> queryAppMovingToForegroundEvents(@UserIdInt int callingUserId, + long startTime, long endTime) { + return UsageStatsQueryHelper.queryAppMovingToForegroundEvents(callingUserId, startTime, + endTime); + } + + /** + * Queries launch counts of apps within {@code packageNameFilter} between {@code startTime} + * and {@code endTime}. + */ + @NonNull + public Map<String, Integer> queryAppLaunchCount(@UserIdInt int callingUserId, long startTime, + long endTime, Set<String> packageNameFilter) { + return UsageStatsQueryHelper.queryAppLaunchCount(callingUserId, startTime, endTime, + packageNameFilter); + } + /** Prunes the data for the specified user. */ public void pruneDataForUser(@UserIdInt int userId, @NonNull CancellationSignal signal) { UserData userData = getUnlockedUserData(userId); @@ -382,7 +405,13 @@ public class DataManager { } } - private int mimeTypeToShareEventType(String mimeType) { + /** + * Converts {@code mimeType} to {@link Event.EventType}. + */ + public int mimeTypeToShareEventType(String mimeType) { + if (mimeType == null) { + return Event.TYPE_SHARE_OTHER; + } if (mimeType.startsWith("text/")) { return Event.TYPE_SHARE_TEXT; } else if (mimeType.startsWith("image/")) { diff --git a/services/people/java/com/android/server/people/data/UsageStatsQueryHelper.java b/services/people/java/com/android/server/people/data/UsageStatsQueryHelper.java index 72f1abb70e34..6e6fea93c803 100644 --- a/services/people/java/com/android/server/people/data/UsageStatsQueryHelper.java +++ b/services/people/java/com/android/server/people/data/UsageStatsQueryHelper.java @@ -19,6 +19,8 @@ package com.android.server.people.data; import android.annotation.NonNull; import android.annotation.UserIdInt; import android.app.usage.UsageEvents; +import android.app.usage.UsageStats; +import android.app.usage.UsageStatsManager; import android.app.usage.UsageStatsManagerInternal; import android.content.ComponentName; import android.content.LocusId; @@ -27,7 +29,10 @@ import android.util.ArrayMap; import com.android.server.LocalServices; +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import java.util.Set; import java.util.function.Function; /** A helper class that queries {@link UsageStatsManagerInternal}. */ @@ -46,7 +51,7 @@ class UsageStatsQueryHelper { */ UsageStatsQueryHelper(@UserIdInt int userId, Function<String, PackageData> packageDataGetter) { - mUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class); + mUsageStatsManagerInternal = getUsageStatsManagerInternal(); mUserId = userId; mPackageDataGetter = packageDataGetter; } @@ -106,6 +111,53 @@ class UsageStatsQueryHelper { return mLastEventTimestamp; } + /** + * Queries {@link UsageStatsManagerInternal} events for moving app to foreground between + * {@code startTime} and {@code endTime}. + * + * @return a list containing events moving app to foreground. + */ + static List<UsageEvents.Event> queryAppMovingToForegroundEvents(@UserIdInt int userId, + long startTime, long endTime) { + List<UsageEvents.Event> res = new ArrayList<>(); + UsageEvents usageEvents = getUsageStatsManagerInternal().queryEventsForUser(userId, + startTime, endTime, + UsageEvents.HIDE_SHORTCUT_EVENTS | UsageEvents.HIDE_LOCUS_EVENTS); + if (usageEvents == null) { + return res; + } + while (usageEvents.hasNextEvent()) { + UsageEvents.Event e = new UsageEvents.Event(); + usageEvents.getNextEvent(e); + if (e.getEventType() == UsageEvents.Event.ACTIVITY_RESUMED) { + res.add(e); + } + } + return res; + } + + /** + * Queries {@link UsageStatsManagerInternal} for launch count of apps within {@code + * packageNameFilter} between {@code startTime} and {@code endTime}.obfuscateInstantApps + * + * @return a map which keys are package names and values are app launch counts. + */ + static Map<String, Integer> queryAppLaunchCount(@UserIdInt int userId, long startTime, + long endTime, Set<String> packageNameFilter) { + List<UsageStats> stats = getUsageStatsManagerInternal().queryUsageStatsForUser(userId, + UsageStatsManager.INTERVAL_BEST, startTime, endTime, + /* obfuscateInstantApps= */ false); + Map<String, Integer> aggregatedStats = new ArrayMap<>(); + for (UsageStats stat : stats) { + String packageName = stat.getPackageName(); + if (packageNameFilter.contains(packageName)) { + aggregatedStats.put(packageName, + aggregatedStats.getOrDefault(packageName, 0) + stat.getAppLaunchCount()); + } + } + return aggregatedStats; + } + private void onInAppConversationEnded(@NonNull PackageData packageData, @NonNull UsageEvents.Event endEvent) { ComponentName activityName = @@ -138,4 +190,8 @@ class UsageStatsQueryHelper { EventStore.CATEGORY_LOCUS_ID_BASED, locusId.getId()); eventHistory.addEvent(event); } + + private static UsageStatsManagerInternal getUsageStatsManagerInternal() { + return LocalServices.getService(UsageStatsManagerInternal.class); + } } diff --git a/services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java b/services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java index 8e5d75be12b7..d09d0b379769 100644 --- a/services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java +++ b/services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java @@ -27,13 +27,11 @@ import android.app.prediction.AppTargetId; import android.content.IntentFilter; import android.content.pm.ShortcutInfo; import android.content.pm.ShortcutManager.ShareShortcutInfo; -import android.util.Range; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.ChooserActivity; import com.android.server.people.data.ConversationInfo; import com.android.server.people.data.DataManager; -import com.android.server.people.data.Event; import com.android.server.people.data.EventHistory; import com.android.server.people.data.PackageData; @@ -42,6 +40,9 @@ import java.util.Collections; import java.util.List; import java.util.function.Consumer; +/** + * Predictor that predicts the {@link AppTarget} the user is most likely to open on share sheet. + */ class ShareTargetPredictor extends AppTargetPredictor { private final IntentFilter mIntentFilter; @@ -66,7 +67,9 @@ class ShareTargetPredictor extends AppTargetPredictor { @Override void predictTargets() { List<ShareTarget> shareTargets = getDirectShareTargets(); - rankTargets(shareTargets); + SharesheetModelScorer.computeScore(shareTargets, getShareEventType(mIntentFilter), + System.currentTimeMillis()); + Collections.sort(shareTargets, (t1, t2) -> -Float.compare(t1.getScore(), t2.getScore())); List<AppTarget> res = new ArrayList<>(); for (int i = 0; i < Math.min(getPredictionContext().getPredictedTargetCount(), shareTargets.size()); i++) { @@ -80,36 +83,16 @@ class ShareTargetPredictor extends AppTargetPredictor { @Override void sortTargets(List<AppTarget> targets, Consumer<List<AppTarget>> callback) { List<ShareTarget> shareTargets = getAppShareTargets(targets); - rankTargets(shareTargets); + SharesheetModelScorer.computeScoreForAppShare(shareTargets, + getShareEventType(mIntentFilter), getPredictionContext().getPredictedTargetCount(), + System.currentTimeMillis(), getDataManager(), + mCallingUserId); + Collections.sort(shareTargets, (t1, t2) -> -Float.compare(t1.getScore(), t2.getScore())); List<AppTarget> appTargetList = new ArrayList<>(); shareTargets.forEach(t -> appTargetList.add(t.getAppTarget())); callback.accept(appTargetList); } - private void rankTargets(List<ShareTarget> shareTargets) { - // Rank targets based on recency of sharing history only for the moment. - // TODO: Take more factors into ranking, e.g. frequency, mime type, foreground app. - Collections.sort(shareTargets, (t1, t2) -> { - if (t1.getEventHistory() == null) { - return 1; - } - if (t2.getEventHistory() == null) { - return -1; - } - Range<Long> timeSlot1 = t1.getEventHistory().getEventIndex( - Event.SHARE_EVENT_TYPES).getMostRecentActiveTimeSlot(); - Range<Long> timeSlot2 = t2.getEventHistory().getEventIndex( - Event.SHARE_EVENT_TYPES).getMostRecentActiveTimeSlot(); - if (timeSlot1 == null) { - return 1; - } else if (timeSlot2 == null) { - return -1; - } else { - return -Long.compare(timeSlot1.getUpper(), timeSlot2.getUpper()); - } - }); - } - private List<ShareTarget> getDirectShareTargets() { List<ShareTarget> shareTargets = new ArrayList<>(); List<ShareShortcutInfo> shareShortcuts = @@ -153,6 +136,11 @@ class ShareTargetPredictor extends AppTargetPredictor { return shareTargets; } + private int getShareEventType(IntentFilter intentFilter) { + String mimeType = intentFilter != null ? intentFilter.getDataType(0) : null; + return getDataManager().mimeTypeToShareEventType(mimeType); + } + @VisibleForTesting static class ShareTarget { @@ -162,13 +150,16 @@ class ShareTargetPredictor extends AppTargetPredictor { private final EventHistory mEventHistory; @Nullable private final ConversationInfo mConversationInfo; + private float mScore; - private ShareTarget(@NonNull AppTarget appTarget, + @VisibleForTesting + ShareTarget(@NonNull AppTarget appTarget, @Nullable EventHistory eventHistory, @Nullable ConversationInfo conversationInfo) { mAppTarget = appTarget; mEventHistory = eventHistory; mConversationInfo = conversationInfo; + mScore = 0f; } @NonNull @@ -188,5 +179,15 @@ class ShareTargetPredictor extends AppTargetPredictor { ConversationInfo getConversationInfo() { return mConversationInfo; } + + @VisibleForTesting + float getScore() { + return mScore; + } + + @VisibleForTesting + void setScore(float score) { + mScore = score; + } } } diff --git a/services/people/java/com/android/server/people/prediction/SharesheetModelScorer.java b/services/people/java/com/android/server/people/prediction/SharesheetModelScorer.java new file mode 100644 index 000000000000..0ac5724210da --- /dev/null +++ b/services/people/java/com/android/server/people/prediction/SharesheetModelScorer.java @@ -0,0 +1,406 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.people.prediction; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.annotation.UserIdInt; +import android.app.usage.UsageEvents; +import android.util.ArrayMap; +import android.util.Pair; +import android.util.Range; +import android.util.Slog; + +import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.app.ChooserActivity; +import com.android.server.people.data.DataManager; +import com.android.server.people.data.Event; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.PriorityQueue; +import java.util.concurrent.TimeUnit; + +/** Ranking scorer for Sharesheet targets. */ +class SharesheetModelScorer { + + private static final String TAG = "SharesheetModelScorer"; + private static final boolean DEBUG = false; + private static final Integer RECENCY_SCORE_COUNT = 6; + private static final float RECENCY_INITIAL_BASE_SCORE = 0.4F; + private static final float RECENCY_SCORE_INITIAL_DECAY = 0.05F; + private static final float RECENCY_SCORE_SUBSEQUENT_DECAY = 0.02F; + private static final long ONE_MONTH_WINDOW = TimeUnit.DAYS.toMillis(30); + private static final long FOREGROUND_APP_PROMO_TIME_WINDOW = TimeUnit.MINUTES.toMillis(10); + private static final float FREQUENTLY_USED_APP_SCORE_DECAY = 0.9F; + @VisibleForTesting + static final float FOREGROUND_APP_WEIGHT = 0F; + @VisibleForTesting + static final String CHOOSER_ACTIVITY = ChooserActivity.class.getSimpleName(); + + // Keep constructor private to avoid class being instantiated. + private SharesheetModelScorer() { + } + + /** + * Computes each target's recency, frequency and frequency of the same {@code shareEventType} + * based on past sharing history. Update {@link ShareTargetPredictor.ShareTargetScore}. + */ + static void computeScore(List<ShareTargetPredictor.ShareTarget> shareTargets, + int shareEventType, long now) { + if (shareTargets.isEmpty()) { + return; + } + float totalFreqScore = 0f; + int freqScoreCount = 0; + float totalMimeFreqScore = 0f; + int mimeFreqScoreCount = 0; + // Top of this heap has lowest rank. + PriorityQueue<Pair<ShareTargetRankingScore, Range<Long>>> recencyMinHeap = + new PriorityQueue<>(RECENCY_SCORE_COUNT, + Comparator.comparingLong(p -> p.second.getUpper())); + List<ShareTargetRankingScore> scoreList = new ArrayList<>(shareTargets.size()); + for (ShareTargetPredictor.ShareTarget target : shareTargets) { + ShareTargetRankingScore shareTargetScore = new ShareTargetRankingScore(); + scoreList.add(shareTargetScore); + if (target.getEventHistory() == null) { + continue; + } + // Counts frequency + List<Range<Long>> timeSlots = target.getEventHistory().getEventIndex( + Event.SHARE_EVENT_TYPES).getActiveTimeSlots(); + if (!timeSlots.isEmpty()) { + for (Range<Long> timeSlot : timeSlots) { + shareTargetScore.incrementFrequencyScore( + getFreqDecayedOnElapsedTime(now - timeSlot.getLower())); + } + totalFreqScore += shareTargetScore.getFrequencyScore(); + freqScoreCount++; + } + // Counts frequency for sharing same mime type + List<Range<Long>> timeSlotsOfSameType = target.getEventHistory().getEventIndex( + shareEventType).getActiveTimeSlots(); + if (!timeSlotsOfSameType.isEmpty()) { + for (Range<Long> timeSlot : timeSlotsOfSameType) { + shareTargetScore.incrementMimeFrequencyScore( + getFreqDecayedOnElapsedTime(now - timeSlot.getLower())); + } + totalMimeFreqScore += shareTargetScore.getMimeFrequencyScore(); + mimeFreqScoreCount++; + } + // Records most recent targets + Range<Long> mostRecentTimeSlot = target.getEventHistory().getEventIndex( + Event.SHARE_EVENT_TYPES).getMostRecentActiveTimeSlot(); + if (mostRecentTimeSlot == null) { + continue; + } + if (recencyMinHeap.size() < RECENCY_SCORE_COUNT + || mostRecentTimeSlot.getUpper() > recencyMinHeap.peek().second.getUpper()) { + if (recencyMinHeap.size() == RECENCY_SCORE_COUNT) { + recencyMinHeap.poll(); + } + recencyMinHeap.offer(new Pair(shareTargetScore, mostRecentTimeSlot)); + } + } + // Calculates recency score + while (!recencyMinHeap.isEmpty()) { + float recencyScore = RECENCY_INITIAL_BASE_SCORE; + if (recencyMinHeap.size() > 1) { + recencyScore = RECENCY_INITIAL_BASE_SCORE - RECENCY_SCORE_INITIAL_DECAY + - RECENCY_SCORE_SUBSEQUENT_DECAY * (recencyMinHeap.size() - 2); + } + recencyMinHeap.poll().first.setRecencyScore(recencyScore); + } + + Float avgFreq = freqScoreCount != 0 ? totalFreqScore / freqScoreCount : 0f; + Float avgMimeFreq = mimeFreqScoreCount != 0 ? totalMimeFreqScore / mimeFreqScoreCount : 0f; + for (int i = 0; i < scoreList.size(); i++) { + ShareTargetPredictor.ShareTarget target = shareTargets.get(i); + ShareTargetRankingScore targetScore = scoreList.get(i); + // Normalizes freq and mimeFreq score + targetScore.setFrequencyScore(normalizeFreqScore( + avgFreq.equals(0f) ? 0f : targetScore.getFrequencyScore() / avgFreq)); + targetScore.setMimeFrequencyScore(normalizeMimeFreqScore(avgMimeFreq.equals(0f) ? 0f + : targetScore.getMimeFrequencyScore() / avgMimeFreq)); + // Calculates total score + targetScore.setTotalScore( + probOR(probOR(targetScore.getRecencyScore(), targetScore.getFrequencyScore()), + targetScore.getMimeFrequencyScore())); + target.setScore(targetScore.getTotalScore()); + + if (DEBUG) { + Slog.d(TAG, String.format( + "SharesheetModel: packageName: %s, className: %s, shortcutId: %s, " + + "recency:%.2f, freq_all:%.2f, freq_mime:%.2f, total:%.2f", + target.getAppTarget().getPackageName(), + target.getAppTarget().getClassName(), + target.getAppTarget().getShortcutInfo() != null + ? target.getAppTarget().getShortcutInfo().getId() : null, + targetScore.getRecencyScore(), + targetScore.getFrequencyScore(), + targetScore.getMimeFrequencyScore(), + targetScore.getTotalScore())); + } + } + } + + /** + * Computes ranking score for app sharing. Update {@link ShareTargetPredictor.ShareTargetScore}. + */ + static void computeScoreForAppShare(List<ShareTargetPredictor.ShareTarget> shareTargets, + int shareEventType, int targetsLimit, long now, @NonNull DataManager dataManager, + @UserIdInt int callingUserId) { + computeScore(shareTargets, shareEventType, now); + postProcess(shareTargets, targetsLimit, dataManager, callingUserId); + } + + private static void postProcess(List<ShareTargetPredictor.ShareTarget> shareTargets, + int targetsLimit, @NonNull DataManager dataManager, @UserIdInt int callingUserId) { + // Populates a map which key is package name and value is list of shareTargets descended + // on total score. + Map<String, List<ShareTargetPredictor.ShareTarget>> shareTargetMap = new ArrayMap<>(); + for (ShareTargetPredictor.ShareTarget shareTarget : shareTargets) { + String packageName = shareTarget.getAppTarget().getPackageName(); + shareTargetMap.computeIfAbsent(packageName, key -> new ArrayList<>()); + List<ShareTargetPredictor.ShareTarget> targetsList = shareTargetMap.get(packageName); + int index = 0; + while (index < targetsList.size()) { + if (shareTarget.getScore() > targetsList.get(index).getScore()) { + break; + } + index++; + } + targetsList.add(index, shareTarget); + } + promoteForegroundApp(shareTargetMap, dataManager, callingUserId); + promoteFrequentlyUsedApps(shareTargetMap, targetsLimit, dataManager, callingUserId); + } + + /** + * Promotes frequently used sharing apps, if recommended apps based on sharing history have not + * reached the limit (e.g. user did not share any content in last couple weeks) + */ + private static void promoteFrequentlyUsedApps( + Map<String, List<ShareTargetPredictor.ShareTarget>> shareTargetMap, int targetsLimit, + @NonNull DataManager dataManager, @UserIdInt int callingUserId) { + int validPredictionNum = 0; + float minValidScore = 1f; + for (List<ShareTargetPredictor.ShareTarget> targets : shareTargetMap.values()) { + for (ShareTargetPredictor.ShareTarget target : targets) { + if (target.getScore() > 0f) { + validPredictionNum++; + minValidScore = Math.min(target.getScore(), minValidScore); + } + } + } + // Skips if recommended apps based on sharing history have already reached the limit. + if (validPredictionNum >= targetsLimit) { + return; + } + long now = System.currentTimeMillis(); + Map<String, Integer> appLaunchCountsMap = dataManager.queryAppLaunchCount( + callingUserId, now - ONE_MONTH_WINDOW, now, shareTargetMap.keySet()); + List<Pair<String, Integer>> appLaunchCounts = new ArrayList<>(); + for (Map.Entry<String, Integer> entry : appLaunchCountsMap.entrySet()) { + if (entry.getValue() > 0) { + appLaunchCounts.add(new Pair(entry.getKey(), entry.getValue())); + } + } + Collections.sort(appLaunchCounts, (p1, p2) -> -Integer.compare(p1.second, p2.second)); + for (Pair<String, Integer> entry : appLaunchCounts) { + if (!shareTargetMap.containsKey(entry.first)) { + continue; + } + ShareTargetPredictor.ShareTarget target = shareTargetMap.get(entry.first).get(0); + if (target.getScore() > 0f) { + continue; + } + minValidScore *= FREQUENTLY_USED_APP_SCORE_DECAY; + target.setScore(minValidScore); + if (DEBUG) { + Slog.d(TAG, String.format( + "SharesheetModel: promoteFrequentUsedApps packageName: %s, className: %s," + + " total:%.2f", + target.getAppTarget().getPackageName(), + target.getAppTarget().getClassName(), + target.getScore())); + } + validPredictionNum++; + if (validPredictionNum == targetsLimit) { + return; + } + } + } + + /** + * Promotes the foreground app just prior to source sharing app. Share often occurs between + * two apps the user is switching. + */ + private static void promoteForegroundApp( + Map<String, List<ShareTargetPredictor.ShareTarget>> shareTargetMap, + @NonNull DataManager dataManager, @UserIdInt int callingUserId) { + String sharingForegroundApp = findSharingForegroundApp(shareTargetMap, dataManager, + callingUserId); + if (sharingForegroundApp != null) { + ShareTargetPredictor.ShareTarget target = shareTargetMap.get(sharingForegroundApp).get( + 0); + target.setScore(probOR(target.getScore(), FOREGROUND_APP_WEIGHT)); + if (DEBUG) { + Slog.d(TAG, String.format( + "SharesheetModel: promoteForegroundApp packageName: %s, className: %s, " + + "total:%.2f", + target.getAppTarget().getPackageName(), + target.getAppTarget().getClassName(), + target.getScore())); + } + } + } + + /** + * Find the foreground app just prior to source sharing app from usageStatsManager. Returns null + * if it is not available. + */ + @Nullable + private static String findSharingForegroundApp( + Map<String, List<ShareTargetPredictor.ShareTarget>> shareTargetMap, + @NonNull DataManager dataManager, @UserIdInt int callingUserId) { + String sharingForegroundApp = null; + long now = System.currentTimeMillis(); + List<UsageEvents.Event> events = dataManager.queryAppMovingToForegroundEvents( + callingUserId, now - FOREGROUND_APP_PROMO_TIME_WINDOW, now); + String sourceApp = null; + for (int i = events.size() - 1; i >= 0; i--) { + String className = events.get(i).getClassName(); + String packageName = events.get(i).getPackageName(); + if (packageName == null || (className != null && className.contains(CHOOSER_ACTIVITY)) + || packageName.contains(CHOOSER_ACTIVITY)) { + continue; + } + if (sourceApp == null) { + sourceApp = packageName; + } else if (!packageName.equals(sourceApp) && shareTargetMap.containsKey(packageName)) { + sharingForegroundApp = packageName; + break; + } + } + return sharingForegroundApp; + } + + /** + * Probabilistic OR (also known as the algebraic sum). If a <= 1 and b <= 1, the result will be + * <= 1.0. + */ + private static float probOR(float a, float b) { + return 1f - (1f - a) * (1f - b); + } + + /** Counts frequency of share targets. Decays frequency for old shares. */ + private static float getFreqDecayedOnElapsedTime(long elapsedTimeMillis) { + Duration duration = Duration.ofMillis(elapsedTimeMillis); + if (duration.compareTo(Duration.ofDays(1)) <= 0) { + return 1.0f; + } else if (duration.compareTo(Duration.ofDays(3)) <= 0) { + return 0.9f; + } else if (duration.compareTo(Duration.ofDays(7)) <= 0) { + return 0.8f; + } else if (duration.compareTo(Duration.ofDays(14)) <= 0) { + return 0.7f; + } else { + return 0.6f; + } + } + + /** Normalizes frequency score. */ + private static float normalizeFreqScore(double freqRatio) { + if (freqRatio >= 2.5) { + return 0.2f; + } else if (freqRatio >= 1.5) { + return 0.15f; + } else if (freqRatio >= 1.0) { + return 0.1f; + } else if (freqRatio >= 0.75) { + return 0.05f; + } else { + return 0f; + } + } + + /** Normalizes mimetype-specific frequency score. */ + private static float normalizeMimeFreqScore(double freqRatio) { + if (freqRatio >= 2.0) { + return 0.2f; + } else if (freqRatio >= 1.2) { + return 0.15f; + } else if (freqRatio > 0.0) { + return 0.1f; + } else { + return 0f; + } + } + + private static class ShareTargetRankingScore { + + private float mRecencyScore = 0f; + private float mFrequencyScore = 0f; + private float mMimeFrequencyScore = 0f; + private float mTotalScore = 0f; + + float getTotalScore() { + return mTotalScore; + } + + void setTotalScore(float totalScore) { + mTotalScore = totalScore; + } + + float getRecencyScore() { + return mRecencyScore; + } + + void setRecencyScore(float recencyScore) { + mRecencyScore = recencyScore; + } + + float getFrequencyScore() { + return mFrequencyScore; + } + + void setFrequencyScore(float frequencyScore) { + mFrequencyScore = frequencyScore; + } + + void incrementFrequencyScore(float incremental) { + mFrequencyScore += incremental; + } + + float getMimeFrequencyScore() { + return mMimeFrequencyScore; + } + + void setMimeFrequencyScore(float mimeFrequencyScore) { + mMimeFrequencyScore = mimeFrequencyScore; + } + + void incrementMimeFrequencyScore(float incremental) { + mMimeFrequencyScore += incremental; + } + } +} diff --git a/services/robotests/src/com/android/server/location/GnssAntennaInfoProviderTest.java b/services/robotests/src/com/android/server/location/gnss/GnssAntennaInfoProviderTest.java index 76f7ad646bb1..d8acd6ea6948 100644 --- a/services/robotests/src/com/android/server/location/GnssAntennaInfoProviderTest.java +++ b/services/robotests/src/com/android/server/location/gnss/GnssAntennaInfoProviderTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.location; +package com.android.server.location.gnss; import static com.google.common.truth.Truth.assertThat; @@ -41,7 +41,8 @@ import org.robolectric.RuntimeEnvironment; @Presubmit public class GnssAntennaInfoProviderTest { @Mock - private GnssAntennaInfoProvider.GnssAntennaInfoProviderNative mMockNative; + private GnssAntennaInfoProvider.GnssAntennaInfoProviderNative + mMockNative; private GnssAntennaInfoProvider mTestProvider; /** Setup. */ diff --git a/services/robotests/src/com/android/server/location/GnssBatchingProviderTest.java b/services/robotests/src/com/android/server/location/gnss/GnssBatchingProviderTest.java index d58c3f73b8e8..25d6aa4dae29 100644 --- a/services/robotests/src/com/android/server/location/GnssBatchingProviderTest.java +++ b/services/robotests/src/com/android/server/location/gnss/GnssBatchingProviderTest.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import static com.google.common.truth.Truth.assertThat; @@ -11,7 +27,7 @@ import static org.mockito.Mockito.when; import android.platform.test.annotations.Presubmit; -import com.android.server.location.GnssBatchingProvider.GnssBatchingProviderNative; +import com.android.server.location.gnss.GnssBatchingProvider.GnssBatchingProviderNative; import org.junit.Before; import org.junit.Test; diff --git a/services/robotests/src/com/android/server/location/GnssGeofenceProviderTest.java b/services/robotests/src/com/android/server/location/gnss/GnssGeofenceProviderTest.java index 30c73368da15..4a533aac01db 100644 --- a/services/robotests/src/com/android/server/location/GnssGeofenceProviderTest.java +++ b/services/robotests/src/com/android/server/location/gnss/GnssGeofenceProviderTest.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import static org.mockito.ArgumentMatchers.anyDouble; import static org.mockito.ArgumentMatchers.anyInt; diff --git a/services/robotests/src/com/android/server/location/GnssMeasurementsProviderTest.java b/services/robotests/src/com/android/server/location/gnss/GnssMeasurementsProviderTest.java index b349b67dab0c..e7d9ef810e51 100644 --- a/services/robotests/src/com/android/server/location/GnssMeasurementsProviderTest.java +++ b/services/robotests/src/com/android/server/location/gnss/GnssMeasurementsProviderTest.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import static com.google.common.truth.Truth.assertThat; @@ -26,7 +42,8 @@ import org.robolectric.RuntimeEnvironment; @Presubmit public class GnssMeasurementsProviderTest { @Mock - private GnssMeasurementsProvider.GnssMeasurementProviderNative mMockNative; + private GnssMeasurementsProvider.GnssMeasurementProviderNative + mMockNative; private GnssMeasurementsProvider mTestProvider; @Before diff --git a/services/robotests/src/com/android/server/location/GnssNavigationMessageProviderTest.java b/services/robotests/src/com/android/server/location/gnss/GnssNavigationMessageProviderTest.java index aa2a96e6fad4..c21db73fb56c 100644 --- a/services/robotests/src/com/android/server/location/GnssNavigationMessageProviderTest.java +++ b/services/robotests/src/com/android/server/location/gnss/GnssNavigationMessageProviderTest.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import static com.google.common.truth.Truth.assertThat; @@ -25,7 +41,8 @@ import org.robolectric.RuntimeEnvironment; @Presubmit public class GnssNavigationMessageProviderTest { @Mock - private GnssNavigationMessageProvider.GnssNavigationMessageProviderNative mMockNative; + private GnssNavigationMessageProvider.GnssNavigationMessageProviderNative + mMockNative; private GnssNavigationMessageProvider mTestProvider; @Before diff --git a/services/robotests/src/com/android/server/location/GnssPositionModeTest.java b/services/robotests/src/com/android/server/location/gnss/GnssPositionModeTest.java index f37f50e76ae5..7117ff95b401 100644 --- a/services/robotests/src/com/android/server/location/GnssPositionModeTest.java +++ b/services/robotests/src/com/android/server/location/gnss/GnssPositionModeTest.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import static com.google.common.truth.Truth.assertThat; diff --git a/services/robotests/src/com/android/server/location/GnssSatelliteBlacklistHelperTest.java b/services/robotests/src/com/android/server/location/gnss/GnssSatelliteBlacklistHelperTest.java index ba4a753e4813..7c73a2f92f71 100644 --- a/services/robotests/src/com/android/server/location/GnssSatelliteBlacklistHelperTest.java +++ b/services/robotests/src/com/android/server/location/gnss/GnssSatelliteBlacklistHelperTest.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import static com.google.common.truth.Truth.assertThat; @@ -35,7 +51,8 @@ public class GnssSatelliteBlacklistHelperTest { private ContentResolver mContentResolver; @Mock - private GnssSatelliteBlacklistHelper.GnssSatelliteBlacklistCallback mCallback; + private GnssSatelliteBlacklistHelper.GnssSatelliteBlacklistCallback + mCallback; @Before public void setUp() { diff --git a/services/robotests/src/com/android/server/location/NtpTimeHelperTest.java b/services/robotests/src/com/android/server/location/gnss/NtpTimeHelperTest.java index 9c5d4ad6ceeb..9b59aaddc4d4 100644 --- a/services/robotests/src/com/android/server/location/NtpTimeHelperTest.java +++ b/services/robotests/src/com/android/server/location/gnss/NtpTimeHelperTest.java @@ -1,4 +1,20 @@ -package com.android.server.location; +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.location.gnss; import static com.google.common.truth.Truth.assertThat; @@ -10,7 +26,7 @@ import android.os.SystemClock; import android.platform.test.annotations.Presubmit; import android.util.NtpTrustedTime; -import com.android.server.location.NtpTimeHelper.InjectNtpTimeCallback; +import com.android.server.location.gnss.NtpTimeHelper.InjectNtpTimeCallback; import org.junit.Before; import org.junit.Test; diff --git a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java index acdb68142178..138f9829c088 100644 --- a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java +++ b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java @@ -17,6 +17,7 @@ package com.android.server.pm; import static android.app.AppOpsManager.MODE_ALLOWED; +import static android.app.AppOpsManager.MODE_DEFAULT; import static android.app.AppOpsManager.OP_INTERACT_ACROSS_PROFILES; import static android.content.Intent.FLAG_RECEIVER_FOREGROUND; import static android.content.Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND; @@ -104,6 +105,7 @@ public class CrossProfileAppsServiceImplRoboTest { private final CrossProfileAppsServiceImpl mCrossProfileAppsServiceImpl = new CrossProfileAppsServiceImpl(mContext, mInjector); private final Map<UserHandle, Set<Intent>> mSentUserBroadcasts = new HashMap<>(); + private final Map<Integer, List<ApplicationInfo>> installedApplications = new HashMap<>(); @Mock private PackageManagerInternal mPackageManagerInternal; @Mock private IPackageManager mIPackageManager; @@ -112,12 +114,18 @@ public class CrossProfileAppsServiceImplRoboTest { @Before public void initializeMocks() throws Exception { MockitoAnnotations.initMocks(this); + initializeInstalledApplicationsMock(); mockCrossProfileAppInstalledAndEnabledOnEachProfile(); mockCrossProfileAppRequestsInteractAcrossProfiles(); mockCrossProfileAppRegistersBroadcastReceiver(); mockCrossProfileAppWhitelisted(); } + private void initializeInstalledApplicationsMock() { + when(mPackageManagerInternal.getInstalledApplications(anyInt(), anyInt(), eq(CALLING_UID))) + .thenAnswer(invocation -> installedApplications.get(invocation.getArgument(1))); + } + private void mockCrossProfileAppInstalledAndEnabledOnEachProfile() { // They are enabled by default, so we simply have to ensure that a package info with an // application info is returned. @@ -138,11 +146,14 @@ public class CrossProfileAppsServiceImplRoboTest { when(mPackageManagerInternal.getPackage(uid)) .thenReturn(((ParsedPackage) PackageImpl.forTesting(CROSS_PROFILE_APP_PACKAGE_NAME) .hideAsParsed()).hideAsFinal()); + installedApplications.putIfAbsent(userId, new ArrayList<>()); + installedApplications.get(userId).add(packageInfo.applicationInfo); } private PackageInfo buildTestPackageInfo() { PackageInfo packageInfo = new PackageInfo(); packageInfo.applicationInfo = new ApplicationInfo(); + packageInfo.applicationInfo.packageName = CROSS_PROFILE_APP_PACKAGE_NAME; return packageInfo; } @@ -451,6 +462,13 @@ public class CrossProfileAppsServiceImplRoboTest { .isTrue(); } + @Test + public void clearInteractAcrossProfilesAppOps() { + explicitlySetInteractAcrossProfilesAppOp(MODE_ALLOWED); + mCrossProfileAppsServiceImpl.clearInteractAcrossProfilesAppOps(); + assertThat(getCrossProfileAppOp()).isEqualTo(MODE_DEFAULT); + } + private void explicitlySetInteractAcrossProfilesAppOp(@Mode int mode) { explicitlySetInteractAcrossProfilesAppOp(PERSONAL_PROFILE_UID, mode); } diff --git a/services/tests/mockingservicestests/src/com/android/server/location/AppOpsHelperTest.java b/services/tests/mockingservicestests/src/com/android/server/location/AppOpsHelperTest.java new file mode 100644 index 000000000000..7fc10b14209b --- /dev/null +++ b/services/tests/mockingservicestests/src/com/android/server/location/AppOpsHelperTest.java @@ -0,0 +1,228 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.server.location; + +import static android.app.AppOpsManager.MODE_ALLOWED; +import static android.app.AppOpsManager.MODE_IGNORED; +import static android.app.AppOpsManager.OP_COARSE_LOCATION; +import static android.app.AppOpsManager.OP_FINE_LOCATION; +import static android.app.AppOpsManager.OP_MOCK_LOCATION; +import static android.app.AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION; +import static android.app.AppOpsManager.OP_MONITOR_LOCATION; + +import static com.android.server.location.CallerIdentity.PERMISSION_COARSE; +import static com.android.server.location.CallerIdentity.PERMISSION_FINE; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isNull; +import static org.mockito.ArgumentMatchers.nullable; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.timeout; +import static org.mockito.Mockito.verify; +import static org.mockito.MockitoAnnotations.initMocks; + +import android.app.AppOpsManager; +import android.content.Context; +import android.platform.test.annotations.Presubmit; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; + +import java.util.ArrayList; +import java.util.List; + +@Presubmit +@SmallTest +@RunWith(AndroidJUnit4.class) +public class AppOpsHelperTest { + + private static final long TIMEOUT_MS = 5000; + + @Mock private Context mContext; + @Mock private AppOpsManager mAppOps; + + private List<AppOpsManager.OnOpChangedInternalListener> mListeners = new ArrayList<>(); + + private AppOpsHelper mHelper; + + @Before + public void setUp() { + initMocks(this); + + doReturn(mAppOps).when(mContext).getSystemService(AppOpsManager.class); + doAnswer(invocation -> mListeners.add(invocation.getArgument(3))).when(mAppOps) + .startWatchingMode( + eq(AppOpsManager.OP_COARSE_LOCATION), + isNull(), + eq(AppOpsManager.WATCH_FOREGROUND_CHANGES), + any(AppOpsManager.OnOpChangedInternalListener.class)); + + mHelper = new AppOpsHelper(mContext); + mHelper.onSystemReady(); + } + + private void sendAppOp(String packageName) { + for (AppOpsManager.OnOpChangedInternalListener listener : mListeners) { + listener.onOpChanged(AppOpsManager.OP_COARSE_LOCATION, packageName); + } + } + + @Test + public void testListener() { + AppOpsHelper.LocationAppOpListener listener = mock( + AppOpsHelper.LocationAppOpListener.class); + mHelper.addListener(listener); + + sendAppOp("mypackage1"); + verify(listener, timeout(TIMEOUT_MS)).onAppOpsChanged("mypackage1"); + + sendAppOp("mypackage2"); + verify(listener, timeout(TIMEOUT_MS)).onAppOpsChanged("mypackage2"); + } + + @Test + public void testCheckLocationAccess() { + CallerIdentity identity = new CallerIdentity(1000, 1000, 1000, "mypackage", "myfeature", + PERMISSION_FINE); + + doReturn(MODE_ALLOWED).when( + mAppOps).checkOpNoThrow(eq(OP_FINE_LOCATION), eq(1000), eq("mypackage")); + assertThat(mHelper.checkLocationAccess(identity)).isTrue(); + + doReturn(MODE_IGNORED).when( + mAppOps).checkOpNoThrow(eq(OP_FINE_LOCATION), eq(1000), eq("mypackage")); + assertThat(mHelper.checkLocationAccess(identity)).isFalse(); + + identity = new CallerIdentity(1000, 1000, 1000, "mypackage", "myfeature", + PERMISSION_COARSE); + + doReturn(MODE_ALLOWED).when( + mAppOps).checkOpNoThrow(eq(OP_COARSE_LOCATION), eq(1000), eq("mypackage")); + assertThat(mHelper.checkLocationAccess(identity)).isTrue(); + + doReturn(MODE_IGNORED).when( + mAppOps).checkOpNoThrow(eq(OP_COARSE_LOCATION), eq(1000), eq("mypackage")); + assertThat(mHelper.checkLocationAccess(identity)).isFalse(); + } + + @Test + public void testNoteLocationAccess() { + CallerIdentity identity = new CallerIdentity(1000, 1000, 1000, "mypackage", "myfeature", + PERMISSION_FINE); + + doReturn(MODE_ALLOWED).when( + mAppOps).noteOpNoThrow(eq(OP_FINE_LOCATION), eq(1000), eq("mypackage"), + eq("myfeature"), nullable(String.class)); + assertThat(mHelper.noteLocationAccess(identity)).isTrue(); + + doReturn(MODE_IGNORED).when( + mAppOps).noteOpNoThrow(eq(OP_FINE_LOCATION), eq(1000), eq("mypackage"), + eq("myfeature"), nullable(String.class)); + assertThat(mHelper.noteLocationAccess(identity)).isFalse(); + + + identity = new CallerIdentity(1000, 1000, 1000, "mypackage", "myfeature", + PERMISSION_COARSE); + + doReturn(MODE_ALLOWED).when( + mAppOps).noteOpNoThrow(eq(OP_COARSE_LOCATION), eq(1000), eq("mypackage"), + eq("myfeature"), nullable(String.class)); + assertThat(mHelper.noteLocationAccess(identity)).isTrue(); + + doReturn(MODE_IGNORED).when( + mAppOps).noteOpNoThrow(eq(OP_COARSE_LOCATION), eq(1000), eq("mypackage"), + eq("myfeature"), nullable(String.class)); + assertThat(mHelper.noteLocationAccess(identity)).isFalse(); + } + + @Test + public void testStartLocationMonitoring() { + CallerIdentity identity = new CallerIdentity(1000, 1000, 1000, "mypackage", "myfeature", + PERMISSION_FINE); + + doReturn(MODE_ALLOWED).when( + mAppOps).startOpNoThrow(eq(OP_MONITOR_LOCATION), eq(1000), eq("mypackage"), + eq(false), eq("myfeature"), nullable(String.class)); + assertThat(mHelper.startLocationMonitoring(identity)).isTrue(); + + doReturn(MODE_IGNORED).when( + mAppOps).startOpNoThrow(eq(OP_MONITOR_LOCATION), eq(1000), eq("mypackage"), + eq(false), eq("myfeature"), nullable(String.class)); + assertThat(mHelper.startLocationMonitoring(identity)).isFalse(); + } + + @Test + public void testStartHighPowerLocationMonitoring() { + CallerIdentity identity = new CallerIdentity(1000, 1000, 1000, "mypackage", "myfeature", + PERMISSION_FINE); + + doReturn(MODE_ALLOWED).when( + mAppOps).startOpNoThrow(eq(OP_MONITOR_HIGH_POWER_LOCATION), eq(1000), + eq("mypackage"), + eq(false), eq("myfeature"), nullable(String.class)); + assertThat(mHelper.startHighPowerLocationMonitoring(identity)).isTrue(); + + doReturn(MODE_IGNORED).when( + mAppOps).startOpNoThrow(eq(OP_MONITOR_HIGH_POWER_LOCATION), eq(1000), + eq("mypackage"), + eq(false), eq("myfeature"), nullable(String.class)); + assertThat(mHelper.startHighPowerLocationMonitoring(identity)).isFalse(); + } + + @Test + public void testStopLocationMonitoring() { + CallerIdentity identity = new CallerIdentity(1000, 1000, 1000, "mypackage", "myfeature", + PERMISSION_FINE); + + mHelper.stopLocationMonitoring(identity); + verify(mAppOps).finishOp(OP_MONITOR_LOCATION, 1000, "mypackage", "myfeature"); + } + + @Test + public void testStopHighPowerLocationMonitoring() { + CallerIdentity identity = new CallerIdentity(1000, 1000, 1000, "mypackage", "myfeature", + PERMISSION_FINE); + + mHelper.stopHighPowerLocationMonitoring(identity); + verify(mAppOps).finishOp(OP_MONITOR_HIGH_POWER_LOCATION, 1000, "mypackage", "myfeature"); + } + + @Test + public void testNoteMockLocationAccess() { + CallerIdentity identity = new CallerIdentity(1000, 1000, 1000, "mypackage", "myfeature", + PERMISSION_FINE); + + doReturn(MODE_ALLOWED).when( + mAppOps).noteOp(eq(OP_MOCK_LOCATION), eq(1000), eq("mypackage"), eq("myfeature"), + nullable(String.class)); + assertThat(mHelper.noteMockLocationAccess(identity)).isTrue(); + + doReturn(MODE_IGNORED).when( + mAppOps).noteOp(eq(OP_MOCK_LOCATION), eq(1000), eq("mypackage"), eq("myfeature"), + nullable(String.class)); + assertThat(mHelper.noteMockLocationAccess(identity)).isFalse(); + } +} diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp index 449e75cd11a0..e58e91179931 100644 --- a/services/tests/servicestests/Android.bp +++ b/services/tests/servicestests/Android.bp @@ -91,7 +91,15 @@ android_test { enabled: false, }, - data: [":JobTestApp"], + data: [ + ":JobTestApp", + ], + + java_resources: [ + ":PackageParserTestApp1", + ":PackageParserTestApp2", + ":PackageParserTestApp3", + ], resource_zips: [":FrameworksServicesTests_apks_as_resources"], } diff --git a/services/tests/servicestests/src/com/android/server/MountServiceTests.java b/services/tests/servicestests/src/com/android/server/MountServiceTests.java deleted file mode 100644 index b1b31744c88b..000000000000 --- a/services/tests/servicestests/src/com/android/server/MountServiceTests.java +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server; - -import android.content.Context; -import android.content.res.Resources; -import android.content.res.Resources.NotFoundException; -import android.os.FileUtils; -import android.os.storage.OnObbStateChangeListener; -import android.os.storage.StorageManager; -import android.test.AndroidTestCase; -import android.test.ComparisonFailure; -import android.test.suitebuilder.annotation.LargeTest; -import android.util.Log; - -import com.android.frameworks.servicestests.R; - -import java.io.File; -import java.io.InputStream; - -public class MountServiceTests extends AndroidTestCase { - private static final String TAG = "MountServiceTests"; - - private static final long MAX_WAIT_TIME = 25*1000; - private static final long WAIT_TIME_INCR = 5*1000; - - private static final String OBB_MOUNT_PREFIX = "/mnt/obb/"; - - private static void assertStartsWith(String message, String prefix, String actual) { - if (!actual.startsWith(prefix)) { - throw new ComparisonFailure(message, prefix, actual); - } - } - - private static class ObbObserver extends OnObbStateChangeListener { - private String path; - - public int state = -1; - boolean done = false; - - @Override - public void onObbStateChange(String path, int state) { - Log.d(TAG, "Received message. path=" + path + ", state=" + state); - synchronized (this) { - this.path = path; - this.state = state; - done = true; - notifyAll(); - } - } - - public String getPath() { - assertTrue("Expected ObbObserver to have received a state change.", done); - return path; - } - - public int getState() { - assertTrue("Expected ObbObserver to have received a state change.", done); - return state; - } - - public void reset() { - this.path = null; - this.state = -1; - done = false; - } - - public boolean isDone() { - return done; - } - - public boolean waitForCompletion() { - long waitTime = 0; - synchronized (this) { - while (!isDone() && waitTime < MAX_WAIT_TIME) { - try { - wait(WAIT_TIME_INCR); - waitTime += WAIT_TIME_INCR; - } catch (InterruptedException e) { - Log.i(TAG, "Interrupted during sleep", e); - } - } - } - - return isDone(); - } - } - - private File getFilePath(String name) { - final File filesDir = mContext.getFilesDir(); - final File outFile = new File(filesDir, name); - return outFile; - } - - private void copyRawToFile(int rawResId, File outFile) { - Resources res = mContext.getResources(); - InputStream is = null; - try { - is = res.openRawResource(rawResId); - } catch (NotFoundException e) { - fail("Failed to load resource with id: " + rawResId); - } - FileUtils.setPermissions(outFile.getPath(), FileUtils.S_IRWXU | FileUtils.S_IRWXG - | FileUtils.S_IRWXO, -1, -1); - assertTrue(FileUtils.copyToFile(is, outFile)); - FileUtils.setPermissions(outFile.getPath(), FileUtils.S_IRWXU | FileUtils.S_IRWXG - | FileUtils.S_IRWXO, -1, -1); - } - - private StorageManager getStorageManager() { - return (StorageManager) getContext().getSystemService(Context.STORAGE_SERVICE); - } - - private void mountObb(StorageManager sm, final int resource, final File file, - int expectedState) { - copyRawToFile(resource, file); - - final ObbObserver observer = new ObbObserver(); - assertTrue("mountObb call on " + file.getPath() + " should succeed", - sm.mountObb(file.getPath(), null, observer)); - - assertTrue("Mount should have completed", - observer.waitForCompletion()); - - if (expectedState == OnObbStateChangeListener.MOUNTED) { - assertTrue("OBB should be mounted", sm.isObbMounted(file.getPath())); - } - - assertEquals("Actual file and resolved file should be the same", - file.getPath(), observer.getPath()); - - assertEquals(expectedState, observer.getState()); - } - - private ObbObserver mountObbWithoutWait(final StorageManager sm, final int resource, - final File file) { - copyRawToFile(resource, file); - - final ObbObserver observer = new ObbObserver(); - assertTrue("mountObb call on " + file.getPath() + " should succeed", sm.mountObb(file - .getPath(), null, observer)); - - return observer; - } - - private void waitForObbActionCompletion(final StorageManager sm, final File file, - final ObbObserver observer, int expectedState, boolean checkPath) { - assertTrue("Mount should have completed", observer.waitForCompletion()); - - assertTrue("OBB should be mounted", sm.isObbMounted(file.getPath())); - - if (checkPath) { - assertEquals("Actual file and resolved file should be the same", file.getPath(), - observer.getPath()); - } - - assertEquals(expectedState, observer.getState()); - } - - private String checkMountedPath(final StorageManager sm, final File file) { - final String mountPath = sm.getMountedObbPath(file.getPath()); - assertStartsWith("Path should be in " + OBB_MOUNT_PREFIX, - OBB_MOUNT_PREFIX, - mountPath); - return mountPath; - } - - private void unmountObb(final StorageManager sm, final File file, int expectedState) { - final ObbObserver observer = new ObbObserver(); - - assertTrue("unmountObb call on test1.obb should succeed", - sm.unmountObb(file.getPath(), false, observer)); - - assertTrue("Unmount should have completed", - observer.waitForCompletion()); - - assertEquals(expectedState, observer.getState()); - - if (expectedState == OnObbStateChangeListener.UNMOUNTED) { - assertFalse("OBB should not be mounted", sm.isObbMounted(file.getPath())); - } - } - - @LargeTest - public void testMountAndUnmountObbNormal() { - StorageManager sm = getStorageManager(); - - final File outFile = getFilePath("test1.obb"); - - mountObb(sm, R.raw.test1, outFile, OnObbStateChangeListener.MOUNTED); - - mountObb(sm, R.raw.test1, outFile, OnObbStateChangeListener.ERROR_ALREADY_MOUNTED); - - final String mountPath = checkMountedPath(sm, outFile); - final File mountDir = new File(mountPath); - - assertTrue("OBB mounted path should be a directory", - mountDir.isDirectory()); - - unmountObb(sm, outFile, OnObbStateChangeListener.UNMOUNTED); - } - - @LargeTest - public void testAttemptMountNonObb() { - StorageManager sm = getStorageManager(); - - final File outFile = getFilePath("test1_nosig.obb"); - - try { - mountObb(sm, R.raw.test1_nosig, outFile, OnObbStateChangeListener.ERROR_INTERNAL); - fail("mountObb should've failed with an exception"); - } catch (IllegalArgumentException e) { - // Expected - } - - assertFalse("OBB should not be mounted", - sm.isObbMounted(outFile.getPath())); - - assertNull("OBB's mounted path should be null", - sm.getMountedObbPath(outFile.getPath())); - } - - @LargeTest - public void testAttemptMountObbWrongPackage() { - StorageManager sm = getStorageManager(); - - final File outFile = getFilePath("test1_wrongpackage.obb"); - - mountObb(sm, R.raw.test1_wrongpackage, outFile, - OnObbStateChangeListener.ERROR_PERMISSION_DENIED); - - assertFalse("OBB should not be mounted", - sm.isObbMounted(outFile.getPath())); - - assertNull("OBB's mounted path should be null", - sm.getMountedObbPath(outFile.getPath())); - } - - @LargeTest - public void testMountAndUnmountTwoObbs() { - StorageManager sm = getStorageManager(); - - final File file1 = getFilePath("test1.obb"); - final File file2 = getFilePath("test2.obb"); - - ObbObserver oo1 = mountObbWithoutWait(sm, R.raw.test1, file1); - ObbObserver oo2 = mountObbWithoutWait(sm, R.raw.test1, file2); - - Log.d(TAG, "Waiting for OBB #1 to complete mount"); - waitForObbActionCompletion(sm, file1, oo1, OnObbStateChangeListener.MOUNTED, false); - Log.d(TAG, "Waiting for OBB #2 to complete mount"); - waitForObbActionCompletion(sm, file2, oo2, OnObbStateChangeListener.MOUNTED, false); - - final String mountPath1 = checkMountedPath(sm, file1); - final File mountDir1 = new File(mountPath1); - assertTrue("OBB mounted path should be a directory", mountDir1.isDirectory()); - - final String mountPath2 = checkMountedPath(sm, file2); - final File mountDir2 = new File(mountPath2); - assertTrue("OBB mounted path should be a directory", mountDir2.isDirectory()); - - unmountObb(sm, file1, OnObbStateChangeListener.UNMOUNTED); - unmountObb(sm, file2, OnObbStateChangeListener.UNMOUNTED); - } -} diff --git a/services/tests/servicestests/src/com/android/server/am/AnrHelperTest.java b/services/tests/servicestests/src/com/android/server/am/AnrHelperTest.java new file mode 100644 index 000000000000..13f63b3a52bf --- /dev/null +++ b/services/tests/servicestests/src/com/android/server/am/AnrHelperTest.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.am; + +import static android.testing.DexmakerShareClassLoaderRule.runWithDexmakerShareClassLoader; + +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.timeout; +import static org.mockito.Mockito.verify; + +import android.content.pm.ApplicationInfo; +import android.platform.test.annotations.Presubmit; + +import androidx.test.filters.SmallTest; + +import com.android.server.wm.WindowProcessController; + +import org.junit.Before; +import org.junit.Test; + +import java.util.concurrent.TimeUnit; + +/** + * Build/Install/Run: + * atest FrameworksServicesTests:AnrHelperTest + */ +@SmallTest +@Presubmit +public class AnrHelperTest { + private final AnrHelper mAnrHelper = new AnrHelper(); + + private ProcessRecord mAnrApp; + + @Before + public void setUp() { + runWithDexmakerShareClassLoader(() -> mAnrApp = mock(ProcessRecord.class)); + } + + @Test + public void testHandleAppNotResponding() { + final String activityShortComponentName = "pkg.test/.A"; + final String parentShortComponentName = "pkg.test/.P"; + final ApplicationInfo appInfo = new ApplicationInfo(); + final WindowProcessController parentProcess = mock(WindowProcessController.class); + final boolean aboveSystem = false; + final String annotation = "test"; + mAnrHelper.appNotResponding(mAnrApp, activityShortComponentName, appInfo, + parentShortComponentName, parentProcess, aboveSystem, annotation); + + verify(mAnrApp, timeout(TimeUnit.SECONDS.toMillis(5))).appNotResponding( + eq(activityShortComponentName), eq(appInfo), eq(parentShortComponentName), + eq(parentProcess), eq(aboveSystem), eq(annotation), eq(false) /* onlyDumpSelf */); + } +} diff --git a/services/tests/servicestests/src/com/android/server/am/ProcessRecordTests.java b/services/tests/servicestests/src/com/android/server/am/ProcessRecordTests.java index 5b85980d3f1c..ded14b89d01c 100644 --- a/services/tests/servicestests/src/com/android/server/am/ProcessRecordTests.java +++ b/services/tests/servicestests/src/com/android/server/am/ProcessRecordTests.java @@ -27,13 +27,17 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; +import android.content.ComponentName; import android.content.Context; +import android.content.pm.PackageManagerInternal; import android.platform.test.annotations.Presubmit; import androidx.test.filters.FlakyTest; +import com.android.server.LocalServices; import com.android.server.wm.ActivityTaskManagerService; +import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -64,6 +68,17 @@ public class ProcessRecordTests { sService.mActivityTaskManager.initialize(null, null, sContext.getMainLooper()); sService.mAtmInternal = sService.mActivityTaskManager.getAtmInternal(); }); + + // Avoid NPE when initializing {@link ProcessRecord#mWindowProcessController}. + final PackageManagerInternal packageManagerInternal = mock(PackageManagerInternal.class); + LocalServices.addService(PackageManagerInternal.class, packageManagerInternal); + final ComponentName sysUiName = new ComponentName(sContext.getPackageName(), "test"); + doReturn(sysUiName).when(packageManagerInternal).getSystemUiServiceComponent(); + } + + @AfterClass + public static void tearDownOnce() { + LocalServices.removeServiceForTest(PackageManagerInternal.class); } @Before @@ -99,7 +114,7 @@ public class ProcessRecordTests { public void testAnrWhenCrash() { mProcessRecord.setCrashing(true); assertTrue(mProcessRecord.isCrashing()); - mProcessRecord.appNotResponding(null, null, null, null, false, "Test ANR when crash"); + appNotResponding(mProcessRecord, "Test ANR when crash"); assertFalse(mProcessRecord.isNotResponding()); assertFalse(mProcessRecord.killedByAm); assertFalse(mProcessRecord.killed); @@ -111,8 +126,7 @@ public class ProcessRecordTests { @Test public void testAnrWhenKilledByAm() { mProcessRecord.killedByAm = true; - mProcessRecord.appNotResponding(null, null, null, null, false, - "Test ANR when killed by AM"); + appNotResponding(mProcessRecord, "Test ANR when killed by AM"); assertFalse(mProcessRecord.isNotResponding()); assertFalse(mProcessRecord.isCrashing()); assertFalse(mProcessRecord.killed); @@ -124,7 +138,7 @@ public class ProcessRecordTests { @Test public void testAnrWhenKilled() { mProcessRecord.killed = true; - mProcessRecord.appNotResponding(null, null, null, null, false, "Test ANR when killed"); + appNotResponding(mProcessRecord, "Test ANR when killed"); assertFalse(mProcessRecord.isNotResponding()); assertFalse(mProcessRecord.isCrashing()); assertFalse(mProcessRecord.killedByAm); @@ -136,7 +150,7 @@ public class ProcessRecordTests { */ @Test public void testNonSilentAnr() { - mProcessRecord.appNotResponding(null, null, null, null, false, "Test non-silent ANR"); + appNotResponding(mProcessRecord, "Test non-silent ANR"); assertTrue(mProcessRecord.isNotResponding()); assertFalse(mProcessRecord.isCrashing()); assertFalse(mProcessRecord.killedByAm); @@ -151,10 +165,16 @@ public class ProcessRecordTests { public void testSilentAnr() { // Silent Anr will run through even without a parent process, and directly killed by AM. doReturn(true).when(mProcessRecord).isSilentAnr(); - mProcessRecord.appNotResponding(null, null, null, null, false, "Test silent ANR"); + appNotResponding(mProcessRecord, "Test silent ANR"); assertTrue(mProcessRecord.isNotResponding()); assertFalse(mProcessRecord.isCrashing()); assertTrue(mProcessRecord.killedByAm); assertTrue(mProcessRecord.killed); } + + private static void appNotResponding(ProcessRecord processRecord, String annotation) { + processRecord.appNotResponding(null /* activityShortComponentName */, null /* aInfo */, + null /* parentShortComponentName */, null /* parentProcess */, + false /* aboveSystem */, annotation, false /* onlyDumpSelf */); + } } diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java index c1bcf1fb75a6..3e5c21c67bb3 100644 --- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java +++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java @@ -68,7 +68,7 @@ public class DevicePolicyManagerServiceTestable extends DevicePolicyManagerServi public OwnersTestable(MockSystemServices services) { super(services.userManager, services.userManagerInternal, services.packageManagerInternal, services.activityTaskManagerInternal, - new MockInjector(services)); + services.activityManagerInternal, new MockInjector(services)); } static class MockInjector extends Injector { diff --git a/services/tests/servicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java index a99c982753c5..36ab1b3ef1ac 100644 --- a/services/tests/servicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java @@ -61,19 +61,12 @@ import android.os.RemoteException; import com.android.server.LocalServices; import com.android.server.location.AppForegroundHelper; -import com.android.server.location.GnssAntennaInfoProvider; -import com.android.server.location.GnssAntennaInfoProvider.GnssAntennaInfoProviderNative; -import com.android.server.location.GnssBatchingProvider; -import com.android.server.location.GnssCapabilitiesProvider; -import com.android.server.location.GnssLocationProvider; -import com.android.server.location.GnssMeasurementCorrectionsProvider; -import com.android.server.location.GnssMeasurementsProvider; -import com.android.server.location.GnssMeasurementsProvider.GnssMeasurementProviderNative; -import com.android.server.location.GnssNavigationMessageProvider; -import com.android.server.location.GnssNavigationMessageProvider.GnssNavigationMessageProviderNative; -import com.android.server.location.GnssStatusListenerHelper; +import com.android.server.location.AppOpsHelper; import com.android.server.location.LocationUsageLogger; import com.android.server.location.SettingsHelper; +import com.android.server.location.gnss.GnssAntennaInfoProvider.GnssAntennaInfoProviderNative; +import com.android.server.location.gnss.GnssMeasurementsProvider.GnssMeasurementProviderNative; +import com.android.server.location.gnss.GnssNavigationMessageProvider.GnssNavigationMessageProviderNative; import org.junit.After; import org.junit.Before; @@ -85,7 +78,7 @@ import org.mockito.MockitoAnnotations; import org.mockito.invocation.InvocationOnMock; import java.util.ArrayList; -import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -111,7 +104,8 @@ public class GnssManagerServiceTest { private GnssNavigationMessageProvider mTestGnssNavigationMessageProvider; private GnssAntennaInfoProvider mTestGnssAntennaInfoProvider; - // Managers and services + @Mock + private PackageManager mPackageManager; @Mock private AppOpsManager mAppOpsManager; @Mock @@ -139,6 +133,9 @@ public class GnssManagerServiceTest { Context.APP_OPS_SERVICE); when(mMockContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn( mAppOpsManager); + when(mMockContext.getPackageManager()).thenReturn(mPackageManager); + when(mPackageManager.getPackagesForUid(anyInt())).thenReturn( + new String[]{"com.android.server"}); enableLocationPermissions(); when(mAppForegroundHelper.isAppForeground(anyInt())).thenReturn(true); @@ -187,8 +184,11 @@ public class GnssManagerServiceTest { when(mMockGnssBatchingProvider.start(anyLong(), anyBoolean())).thenReturn(true); when(mMockGnssBatchingProvider.stop()).thenReturn(true); + // Managers and services + AppOpsHelper appOpsHelper = new AppOpsHelper(mMockContext); + // Create GnssManagerService - mGnssManagerService = new GnssManagerService(mMockContext, mSettingsHelper, + mGnssManagerService = new GnssManagerService(mMockContext, appOpsHelper, mSettingsHelper, mAppForegroundHelper, new LocationUsageLogger(), mMockGnssLocationProvider); mGnssManagerService.onSystemReady(); @@ -240,7 +240,7 @@ public class GnssManagerServiceTest { new GnssSingleSatCorrection.Builder().build(); return new GnssMeasurementCorrections.Builder().setSingleSatelliteCorrectionList( - Arrays.asList(gnssSingleSatCorrection)).build(); + Collections.singletonList(gnssSingleSatCorrection)).build(); } private static List<GnssAntennaInfo> createDummyGnssAntennaInfos() { @@ -270,7 +270,7 @@ public class GnssManagerServiceTest { signalGainCorrectionsDbi, signalGainCorrectionsUncertaintyDbi); - List<GnssAntennaInfo> gnssAntennaInfos = new ArrayList(); + List<GnssAntennaInfo> gnssAntennaInfos = new ArrayList<>(); gnssAntennaInfos.add(new GnssAntennaInfo.Builder() .setCarrierFrequencyMHz(carrierFrequencyMHz) .setPhaseCenterOffset(phaseCenterOffset) @@ -292,7 +292,7 @@ public class GnssManagerServiceTest { PackageManager.PERMISSION_GRANTED); // AppOpsManager will return true if OP_FINE_LOCATION is checked - when(mAppOpsManager.checkOp(anyInt(), anyInt(), anyString())).thenAnswer( + when(mAppOpsManager.checkOpNoThrow(anyInt(), anyInt(), anyString())).thenAnswer( (InvocationOnMock invocation) -> { int code = (int) (invocation.getArguments()[0]); if (code == AppOpsManager.OP_FINE_LOCATION) { @@ -311,7 +311,7 @@ public class GnssManagerServiceTest { Mockito.doThrow(new SecurityException()).when( mMockContext).checkPermission(anyString(), anyInt(), anyInt()); - when(mAppOpsManager.checkOp(anyInt(), anyInt(), + when(mAppOpsManager.checkOpNoThrow(anyInt(), anyInt(), anyString())).thenReturn(AppOpsManager.MODE_ERRORED); when(mLocationManagerInternal.isProviderEnabledForUser(eq(GPS_PROVIDER), anyInt())) @@ -398,8 +398,7 @@ public class GnssManagerServiceTest { when(mMockGnssCapabilitiesProvider.getGnssCapabilities()).thenReturn(mGnssCapabilities); enableLocationPermissions(); - assertThat(mGnssManagerService.getGnssCapabilities("com.android.server")).isEqualTo( - mGnssCapabilities); + assertThat(mGnssManagerService.getGnssCapabilities()).isEqualTo(mGnssCapabilities); } @Test @@ -429,7 +428,7 @@ public class GnssManagerServiceTest { assertThrows(SecurityException.class, () -> mGnssManagerService.startGnssBatch(periodNanos, wakeOnFifoFull, - "com.android.server")); + "com.android.server", null)); verify(mMockGnssBatchingProvider, times(0)).start(periodNanos, wakeOnFifoFull); } @@ -441,7 +440,7 @@ public class GnssManagerServiceTest { enableLocationPermissions(); assertThat(mGnssManagerService.startGnssBatch(periodNanos, wakeOnFifoFull, - "com.android.server")) + "com.android.server", null)) .isEqualTo( true); verify(mMockGnssBatchingProvider, times(1)).start(100L, true); @@ -455,8 +454,7 @@ public class GnssManagerServiceTest { disableLocationPermissions(); assertThrows(SecurityException.class, () -> mGnssManagerService.addGnssBatchingCallback( - mockBatchedLocationCallback, "com.android.server", "abcd123", - "TestBatchedLocationCallback")); + mockBatchedLocationCallback, "com.android.server", null)); mGnssManagerService.onReportLocation(mockLocationList); @@ -471,8 +469,8 @@ public class GnssManagerServiceTest { enableLocationPermissions(); assertThat(mGnssManagerService.addGnssBatchingCallback( - mockBatchedLocationCallback, "com.android.server", - "abcd123", "TestBatchedLocationCallback")).isEqualTo(true); + mockBatchedLocationCallback, "com.android.server", null)) + .isEqualTo(true); mGnssManagerService.onReportLocation(mockLocationList); @@ -488,11 +486,11 @@ public class GnssManagerServiceTest { enableLocationPermissions(); assertThat(mGnssManagerService.addGnssBatchingCallback( - mockBatchedLocationCallback1, "com.android.server", - "abcd123", "TestBatchedLocationCallback")).isEqualTo(true); + mockBatchedLocationCallback1, "com.android.server", null)) + .isEqualTo(true); assertThat(mGnssManagerService.addGnssBatchingCallback( - mockBatchedLocationCallback2, "com.android.server", - "abcd123", "TestBatchedLocationCallback")).isEqualTo(true); + mockBatchedLocationCallback2, "com.android.server", null)) + .isEqualTo(true); mGnssManagerService.onReportLocation(mockLocationList); @@ -525,7 +523,7 @@ public class GnssManagerServiceTest { enableLocationPermissions(); mGnssManagerService.addGnssBatchingCallback(mockBatchedLocationCallback, - "com.android.server", "abcd123", "TestBatchedLocationCallback"); + "com.android.server", null); disableLocationPermissions(); @@ -546,7 +544,7 @@ public class GnssManagerServiceTest { enableLocationPermissions(); mGnssManagerService.addGnssBatchingCallback(mockBatchedLocationCallback, - "com.android.server", "abcd123", "TestBatchedLocationCallback"); + "com.android.server", null); mGnssManagerService.removeGnssBatchingCallback(); @@ -631,7 +629,7 @@ public class GnssManagerServiceTest { assertThrows(SecurityException.class, () -> mGnssManagerService.addGnssMeasurementsListener( new GnssRequest.Builder().build(), mockGnssMeasurementsListener, - "com.android.server", "abcd123", "TestGnssMeasurementsListener")); + "com.android.server", null)); mTestGnssMeasurementsProvider.onMeasurementsAvailable(gnssMeasurementsEvent); verify(mockGnssMeasurementsListener, times(0)).onGnssMeasurementsReceived( @@ -650,8 +648,7 @@ public class GnssManagerServiceTest { assertThat(mGnssManagerService.addGnssMeasurementsListener( new GnssRequest.Builder().build(), mockGnssMeasurementsListener, - "com.android.server", "abcd123", - "TestGnssMeasurementsListener")).isEqualTo(true); + "com.android.server", null)).isEqualTo(true); mTestGnssMeasurementsProvider.onMeasurementsAvailable(gnssMeasurementsEvent); verify(mockGnssMeasurementsListener, times(1)).onGnssMeasurementsReceived( @@ -698,8 +695,7 @@ public class GnssManagerServiceTest { mGnssManagerService.addGnssMeasurementsListener(new GnssRequest.Builder().build(), mockGnssMeasurementsListener, - "com.android.server", "abcd123", - "TestGnssMeasurementsListener"); + "com.android.server", null); disableLocationPermissions(); @@ -722,8 +718,7 @@ public class GnssManagerServiceTest { mGnssManagerService.addGnssMeasurementsListener(new GnssRequest.Builder().build(), mockGnssMeasurementsListener, - "com.android.server", "abcd123", - "TestGnssMeasurementsListener"); + "com.android.server", null); disableLocationPermissions(); @@ -746,7 +741,7 @@ public class GnssManagerServiceTest { assertThrows(SecurityException.class, () -> mGnssManagerService.addGnssAntennaInfoListener( mockGnssAntennaInfoListener, - "com.android.server", "abcd123", "TestGnssAntennaInfoListener")); + "com.android.server", null)); mTestGnssAntennaInfoProvider.onGnssAntennaInfoAvailable(gnssAntennaInfos); verify(mockGnssAntennaInfoListener, times(0)) @@ -762,7 +757,7 @@ public class GnssManagerServiceTest { enableLocationPermissions(); assertThat(mGnssManagerService.addGnssAntennaInfoListener(mockGnssAntennaInfoListener, - "com.android.server", "abcd123", "TestGnssAntennaInfoListener")).isEqualTo(true); + "com.android.server", null)).isEqualTo(true); mTestGnssAntennaInfoProvider.onGnssAntennaInfoAvailable(gnssAntennaInfos); verify(mockGnssAntennaInfoListener, times(1)) @@ -779,7 +774,7 @@ public class GnssManagerServiceTest { mGnssManagerService.addGnssAntennaInfoListener( mockGnssAntennaInfoListener, - "com.android.server", "abcd123", "TestGnssAntennaInfoListener"); + "com.android.server", null); disableLocationPermissions(); @@ -801,7 +796,7 @@ public class GnssManagerServiceTest { mGnssManagerService.addGnssAntennaInfoListener( mockGnssAntennaInfoListener, - "com.android.server", "abcd123", "TestGnssAntennaInfoListener"); + "com.android.server", null); mGnssManagerService.removeGnssAntennaInfoListener( mockGnssAntennaInfoListener); @@ -821,8 +816,7 @@ public class GnssManagerServiceTest { assertThrows(SecurityException.class, () -> mGnssManagerService.addGnssNavigationMessageListener( - mockGnssNavigationMessageListener, "com.android.server", - "abcd123", "TestGnssNavigationMessageListener")); + mockGnssNavigationMessageListener, "com.android.server", null)); mTestGnssNavigationMessageProvider.onNavigationMessageAvailable(gnssNavigationMessage); @@ -839,8 +833,8 @@ public class GnssManagerServiceTest { enableLocationPermissions(); assertThat(mGnssManagerService.addGnssNavigationMessageListener( - mockGnssNavigationMessageListener, "com.android.server", - "abcd123", "TestGnssNavigationMessageListener")).isEqualTo(true); + mockGnssNavigationMessageListener, "com.android.server", null)) + .isEqualTo(true); mTestGnssNavigationMessageProvider.onNavigationMessageAvailable(gnssNavigationMessage); @@ -857,8 +851,7 @@ public class GnssManagerServiceTest { enableLocationPermissions(); mGnssManagerService.addGnssNavigationMessageListener( - mockGnssNavigationMessageListener, "com.android.server", - "abcd123", "TestGnssNavigationMessageListener"); + mockGnssNavigationMessageListener, "com.android.server", null); disableLocationPermissions(); @@ -880,8 +873,7 @@ public class GnssManagerServiceTest { enableLocationPermissions(); mGnssManagerService.addGnssNavigationMessageListener( - mockGnssNavigationMessageListener, "com.android.server", - "abcd123", "TestGnssNavigationMessageListener"); + mockGnssNavigationMessageListener, "com.android.server", null); mGnssManagerService.removeGnssNavigationMessageListener( mockGnssNavigationMessageListener); diff --git a/services/tests/servicestests/src/com/android/server/locksettings/FakeSettings.java b/services/tests/servicestests/src/com/android/server/locksettings/FakeSettings.java index c5e924be2612..2bcd653a5476 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/FakeSettings.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/FakeSettings.java @@ -23,6 +23,7 @@ public class FakeSettings { private int mDeviceProvisioned; private int mSecureFrpMode; + private int mUserSetupComplete; public void setDeviceProvisioned(boolean provisioned) { mDeviceProvisioned = provisioned ? 1 : 0; @@ -32,6 +33,10 @@ public class FakeSettings { mSecureFrpMode = secure ? 1 : 0; } + public void setUserSetupComplete(boolean complete) { + mUserSetupComplete = complete ? 1 : 0; + } + public int globalGetInt(String keyName) { switch (keyName) { case Settings.Global.DEVICE_PROVISIONED: @@ -46,6 +51,10 @@ public class FakeSettings { if (Settings.Secure.SECURE_FRP_MODE.equals(keyName) && userId == UserHandle.USER_SYSTEM) { return mSecureFrpMode; } + if (Settings.Secure.USER_SETUP_COMPLETE.equals(keyName) + && userId == UserHandle.USER_SYSTEM) { + return mUserSetupComplete; + } return defaultValue; } } diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java index 661ce113e81e..07d7830c9b0f 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java @@ -417,7 +417,8 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests { } @Test - public void testCredentialChangeNotPossibleInSecureFrpMode() { + public void testCredentialChangeNotPossibleInSecureFrpModeDuringSuw() { + mSettings.setUserSetupComplete(false); mSettings.setSecureFrpMode(true); try { mService.setLockCredential(newPassword("1234"), nonePassword(), PRIMARY_USER_ID); @@ -425,6 +426,14 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests { } catch (SecurityException e) { } } + @Test + public void testCredentialChangePossibleInSecureFrpModeAfterSuw() { + mSettings.setUserSetupComplete(true); + mSettings.setSecureFrpMode(true); + assertTrue(mService.setLockCredential(newPassword("1234"), nonePassword(), + PRIMARY_USER_ID)); + } + private void testCreateCredential(int userId, LockscreenCredential credential) throws RemoteException { assertTrue(mService.setLockCredential(credential, nonePassword(), userId)); diff --git a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java index 8982925ce42d..ba851992cbad 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java @@ -53,6 +53,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; +import java.io.File; import java.util.ArrayList; @@ -104,7 +105,7 @@ public class SyntheticPasswordTests extends BaseLockSettingsServiceTests { protected void initializeCredentialUnderSP(LockscreenCredential password, int userId) throws RemoteException { enableSyntheticPassword(); - mService.setLockCredential(password, nonePassword(), userId); + assertTrue(mService.setLockCredential(password, nonePassword(), userId)); assertEquals(CREDENTIAL_TYPE_PASSWORD, mService.getCredentialType(userId)); assertTrue(mService.isSyntheticPasswordBasedCredential(userId)); } @@ -492,6 +493,44 @@ public class SyntheticPasswordTests extends BaseLockSettingsServiceTests { verify(mAuthSecretService, never()).primaryUserCredential(any(ArrayList.class)); } + @Test + public void testUnlockUserWithToken() throws Exception { + LockscreenCredential password = newPassword("password"); + byte[] token = "some-high-entropy-secure-token".getBytes(); + initializeCredentialUnderSP(password, PRIMARY_USER_ID); + // Disregard any reportPasswordChanged() invocations as part of credential setup. + flushHandlerTasks(); + reset(mDevicePolicyManager); + + long handle = mLocalService.addEscrowToken(token, PRIMARY_USER_ID, null); + mService.verifyCredential(password, 0, PRIMARY_USER_ID).getResponseCode(); + assertTrue(mLocalService.isEscrowTokenActive(handle, PRIMARY_USER_ID)); + + mService.onCleanupUser(PRIMARY_USER_ID); + assertNull(mLocalService.getUserPasswordMetrics(PRIMARY_USER_ID)); + + assertTrue(mLocalService.unlockUserWithToken(handle, token, PRIMARY_USER_ID)); + assertEquals(PasswordMetrics.computeForCredential(password), + mLocalService.getUserPasswordMetrics(PRIMARY_USER_ID)); + } + + @Test + public void testPasswordChange_NoOrphanedFilesLeft() throws Exception { + LockscreenCredential password = newPassword("password"); + initializeCredentialUnderSP(password, PRIMARY_USER_ID); + assertTrue(mService.setLockCredential(password, password, PRIMARY_USER_ID)); + + String handleString = String.format("%016x", + mService.getSyntheticPasswordHandleLocked(PRIMARY_USER_ID)); + File directory = mStorage.getSyntheticPasswordDirectoryForUser(PRIMARY_USER_ID); + for (File file : directory.listFiles()) { + String[] parts = file.getName().split("\\."); + if (!parts[0].equals(handleString) && !parts[0].equals("0000000000000000")) { + fail("Orphaned state left: " + file.getName()); + } + } + } + // b/62213311 //TODO: add non-migration work profile case, and unify/un-unify transition. //TODO: test token after user resets password diff --git a/services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java b/services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java index 7934d33f907d..03d9ad51e6c5 100644 --- a/services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java +++ b/services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java @@ -21,15 +21,16 @@ import static com.android.server.people.data.TestUtils.timestamp; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.usage.UsageEvents; +import android.app.usage.UsageStats; import android.app.usage.UsageStatsManagerInternal; import android.content.Context; import android.content.LocusId; @@ -50,6 +51,7 @@ import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.concurrent.ScheduledExecutorService; import java.util.function.Predicate; @@ -58,7 +60,8 @@ import java.util.function.Predicate; public final class UsageStatsQueryHelperTest { private static final int USER_ID_PRIMARY = 0; - private static final String PKG_NAME = "pkg"; + private static final String PKG_NAME_1 = "pkg_1"; + private static final String PKG_NAME_2 = "pkg_2"; private static final String ACTIVITY_NAME = "TestActivity"; private static final String SHORTCUT_ID = "abc"; private static final LocusId LOCUS_ID_1 = new LocusId("locus_1"); @@ -80,7 +83,7 @@ public final class UsageStatsQueryHelperTest { File testDir = new File(ctx.getCacheDir(), "testdir"); ScheduledExecutorService scheduledExecutorService = new MockScheduledExecutorService(); - mPackageData = new TestPackageData(PKG_NAME, USER_ID_PRIMARY, pkg -> false, pkg -> false, + mPackageData = new TestPackageData(PKG_NAME_1, USER_ID_PRIMARY, pkg -> false, pkg -> false, scheduledExecutorService, testDir); mPackageData.mConversationStore.mConversationInfo = new ConversationInfo.Builder() .setShortcutId(SHORTCUT_ID) @@ -173,10 +176,72 @@ public final class UsageStatsQueryHelperTest { assertEquals(createInAppConversationEvent(130_000L, 30), events.get(2)); } + @Test + public void testQueryAppMovingToForegroundEvents() { + addUsageEvents( + createShortcutInvocationEvent(100_000L), + createActivityResumedEvent(110_000L), + createActivityStoppedEvent(120_000L), + createActivityResumedEvent(130_000L)); + + List<UsageEvents.Event> events = mHelper.queryAppMovingToForegroundEvents(USER_ID_PRIMARY, + 90_000L, + 200_000L); + + assertEquals(2, events.size()); + assertEquals(UsageEvents.Event.ACTIVITY_RESUMED, events.get(0).getEventType()); + assertEquals(110_000L, events.get(0).getTimeStamp()); + assertEquals(UsageEvents.Event.ACTIVITY_RESUMED, events.get(1).getEventType()); + assertEquals(130_000L, events.get(1).getTimeStamp()); + } + + @Test + public void testQueryAppLaunchCount() { + + UsageStats packageStats1 = createUsageStats(PKG_NAME_1, 2); + UsageStats packageStats2 = createUsageStats(PKG_NAME_1, 3); + UsageStats packageStats3 = createUsageStats(PKG_NAME_2, 1); + when(mUsageStatsManagerInternal.queryUsageStatsForUser(anyInt(), anyInt(), anyLong(), + anyLong(), anyBoolean())).thenReturn( + List.of(packageStats1, packageStats2, packageStats3)); + + Map<String, Integer> appLaunchCounts = mHelper.queryAppLaunchCount(USER_ID_PRIMARY, 90_000L, + 200_000L, Set.of(PKG_NAME_1, PKG_NAME_2)); + + assertEquals(2, appLaunchCounts.size()); + assertEquals(5, (long) appLaunchCounts.get(PKG_NAME_1)); + assertEquals(1, (long) appLaunchCounts.get(PKG_NAME_2)); + } + + @Test + public void testQueryAppLaunchCount_packageNameFiltered() { + + UsageStats packageStats1 = createUsageStats(PKG_NAME_1, 2); + UsageStats packageStats2 = createUsageStats(PKG_NAME_1, 3); + UsageStats packageStats3 = createUsageStats(PKG_NAME_2, 1); + when(mUsageStatsManagerInternal.queryUsageStatsForUser(anyInt(), anyInt(), anyLong(), + anyLong(), anyBoolean())).thenReturn( + List.of(packageStats1, packageStats2, packageStats3)); + + Map<String, Integer> appLaunchCounts = mHelper.queryAppLaunchCount(USER_ID_PRIMARY, 90_000L, + 200_000L, + Set.of(PKG_NAME_1)); + + assertEquals(1, appLaunchCounts.size()); + assertEquals(5, (long) appLaunchCounts.get(PKG_NAME_1)); + } + private void addUsageEvents(UsageEvents.Event... events) { UsageEvents usageEvents = new UsageEvents(Arrays.asList(events), new String[]{}); when(mUsageStatsManagerInternal.queryEventsForUser(anyInt(), anyLong(), anyLong(), - eq(UsageEvents.SHOW_ALL_EVENT_DATA))).thenReturn(usageEvents); + anyInt())).thenReturn(usageEvents); + } + + private static UsageStats createUsageStats(String packageName, int launchCount) { + UsageStats packageStats = new UsageStats(); + packageStats.mPackageName = packageName; + packageStats.mAppLaunchCount = launchCount; + return packageStats; } private static <T> void addLocalServiceMock(Class<T> clazz, T mock) { @@ -203,9 +268,15 @@ public final class UsageStatsQueryHelperTest { return e; } + private static UsageEvents.Event createActivityResumedEvent(long timestamp) { + UsageEvents.Event e = createUsageEvent(UsageEvents.Event.ACTIVITY_RESUMED, timestamp); + e.mClass = ACTIVITY_NAME; + return e; + } + private static UsageEvents.Event createUsageEvent(int eventType, long timestamp) { UsageEvents.Event e = new UsageEvents.Event(eventType, timestamp); - e.mPackage = PKG_NAME; + e.mPackage = PKG_NAME_1; return e; } diff --git a/services/tests/servicestests/src/com/android/server/people/prediction/ShareTargetPredictorTest.java b/services/tests/servicestests/src/com/android/server/people/prediction/ShareTargetPredictorTest.java index c6cd34732acf..1480627b9b9f 100644 --- a/services/tests/servicestests/src/com/android/server/people/prediction/ShareTargetPredictorTest.java +++ b/services/tests/servicestests/src/com/android/server/people/prediction/ShareTargetPredictorTest.java @@ -127,6 +127,9 @@ public final class ShareTargetPredictorTest { when(mEventHistory1.getEventIndex(anySet())).thenReturn(mEventIndex1); when(mEventHistory2.getEventIndex(anySet())).thenReturn(mEventIndex2); when(mEventHistory3.getEventIndex(anySet())).thenReturn(mEventIndex3); + when(mEventHistory1.getEventIndex(anyInt())).thenReturn(mEventIndex1); + when(mEventHistory2.getEventIndex(anyInt())).thenReturn(mEventIndex2); + when(mEventHistory3.getEventIndex(anyInt())).thenReturn(mEventIndex3); when(mEventIndex1.getMostRecentActiveTimeSlot()).thenReturn(new Range<>(1L, 2L)); when(mEventIndex2.getMostRecentActiveTimeSlot()).thenReturn(new Range<>(2L, 3L)); when(mEventIndex3.getMostRecentActiveTimeSlot()).thenReturn(new Range<>(3L, 4L)); @@ -183,6 +186,12 @@ public final class ShareTargetPredictorTest { when(mEventHistory4.getEventIndex(anySet())).thenReturn(mEventIndex4); when(mEventHistory5.getEventIndex(anySet())).thenReturn(mEventIndex5); when(mEventHistory6.getEventIndex(anySet())).thenReturn(mEventIndex6); + when(mEventHistory1.getEventIndex(anyInt())).thenReturn(mEventIndex1); + when(mEventHistory2.getEventIndex(anyInt())).thenReturn(mEventIndex2); + when(mEventHistory3.getEventIndex(anyInt())).thenReturn(mEventIndex3); + when(mEventHistory4.getEventIndex(anyInt())).thenReturn(mEventIndex4); + when(mEventHistory5.getEventIndex(anyInt())).thenReturn(mEventIndex5); + when(mEventHistory6.getEventIndex(anyInt())).thenReturn(mEventIndex6); when(mEventIndex1.getMostRecentActiveTimeSlot()).thenReturn(new Range<>(1L, 2L)); when(mEventIndex2.getMostRecentActiveTimeSlot()).thenReturn(new Range<>(2L, 3L)); when(mEventIndex3.getMostRecentActiveTimeSlot()).thenReturn(new Range<>(3L, 4L)); @@ -220,19 +229,19 @@ public final class ShareTargetPredictorTest { @Test public void testSortTargets() { AppTarget appTarget1 = new AppTarget.Builder( - new AppTargetId("cls1#pkg1"), PACKAGE_1, UserHandle.of(USER_ID)) + new AppTargetId("cls1#pkg1"), PACKAGE_1, UserHandle.of(USER_ID)) .setClassName(CLASS_1) .build(); AppTarget appTarget2 = new AppTarget.Builder( - new AppTargetId("cls2#pkg1"), PACKAGE_1, UserHandle.of(USER_ID)) + new AppTargetId("cls2#pkg1"), PACKAGE_1, UserHandle.of(USER_ID)) .setClassName(CLASS_2) .build(); AppTarget appTarget3 = new AppTarget.Builder( - new AppTargetId("cls1#pkg2"), PACKAGE_2, UserHandle.of(USER_ID)) + new AppTargetId("cls1#pkg2"), PACKAGE_2, UserHandle.of(USER_ID)) .setClassName(CLASS_1) .build(); AppTarget appTarget4 = new AppTarget.Builder( - new AppTargetId("cls2#pkg2"), PACKAGE_2, UserHandle.of(USER_ID)) + new AppTargetId("cls2#pkg2"), PACKAGE_2, UserHandle.of(USER_ID)) .setClassName(CLASS_2) .build(); AppTarget appTarget5 = new AppTarget.Builder( @@ -251,6 +260,10 @@ public final class ShareTargetPredictorTest { when(mEventHistory2.getEventIndex(anySet())).thenReturn(mEventIndex2); when(mEventHistory3.getEventIndex(anySet())).thenReturn(mEventIndex3); when(mEventHistory4.getEventIndex(anySet())).thenReturn(mEventIndex4); + when(mEventHistory1.getEventIndex(anyInt())).thenReturn(mEventIndex1); + when(mEventHistory2.getEventIndex(anyInt())).thenReturn(mEventIndex2); + when(mEventHistory3.getEventIndex(anyInt())).thenReturn(mEventIndex3); + when(mEventHistory4.getEventIndex(anyInt())).thenReturn(mEventIndex4); when(mEventIndex1.getMostRecentActiveTimeSlot()).thenReturn(new Range<>(1L, 2L)); when(mEventIndex2.getMostRecentActiveTimeSlot()).thenReturn(new Range<>(2L, 3L)); when(mEventIndex3.getMostRecentActiveTimeSlot()).thenReturn(new Range<>(3L, 4L)); @@ -265,14 +278,14 @@ public final class ShareTargetPredictorTest { appTarget4, appTarget3, appTarget2, appTarget1, appTarget5); } - private ShareShortcutInfo buildShareShortcut( + private static ShareShortcutInfo buildShareShortcut( String packageName, String className, String shortcutId) { ShortcutInfo shortcutInfo = buildShortcut(packageName, shortcutId); ComponentName componentName = new ComponentName(packageName, className); return new ShareShortcutInfo(shortcutInfo, componentName); } - private ShortcutInfo buildShortcut(String packageName, String shortcutId) { + private static ShortcutInfo buildShortcut(String packageName, String shortcutId) { Context mockContext = mock(Context.class); when(mockContext.getPackageName()).thenReturn(packageName); when(mockContext.getUserId()).thenReturn(USER_ID); diff --git a/services/tests/servicestests/src/com/android/server/people/prediction/SharesheetModelScorerTest.java b/services/tests/servicestests/src/com/android/server/people/prediction/SharesheetModelScorerTest.java new file mode 100644 index 000000000000..9d96d6b7d861 --- /dev/null +++ b/services/tests/servicestests/src/com/android/server/people/prediction/SharesheetModelScorerTest.java @@ -0,0 +1,406 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.people.prediction; + +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.anySet; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.app.prediction.AppTarget; +import android.app.prediction.AppTargetId; +import android.app.usage.UsageEvents; +import android.os.UserHandle; +import android.util.Range; + +import com.android.server.people.data.DataManager; +import com.android.server.people.data.Event; +import com.android.server.people.data.EventHistory; +import com.android.server.people.data.EventIndex; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.time.Duration; +import java.util.List; +import java.util.Map; + +@RunWith(JUnit4.class) +public final class SharesheetModelScorerTest { + + private static final int USER_ID = 0; + private static final String PACKAGE_1 = "pkg1"; + private static final String PACKAGE_2 = "pkg2"; + private static final String PACKAGE_3 = "pkg3"; + private static final String CLASS_1 = "cls1"; + private static final String CLASS_2 = "cls2"; + private static final double DELTA = 1e-6; + private static final long NOW = System.currentTimeMillis(); + private static final Range<Long> WITHIN_ONE_DAY = new Range( + NOW - Duration.ofHours(23).toMillis(), + NOW - Duration.ofHours(22).toMillis()); + private static final Range<Long> TWO_DAYS_AGO = new Range( + NOW - Duration.ofHours(50).toMillis(), + NOW - Duration.ofHours(49).toMillis()); + private static final Range<Long> FIVE_DAYS_AGO = new Range( + NOW - Duration.ofDays(6).toMillis(), + NOW - Duration.ofDays(5).toMillis()); + private static final Range<Long> EIGHT_DAYS_AGO = new Range( + NOW - Duration.ofDays(9).toMillis(), + NOW - Duration.ofDays(8).toMillis()); + private static final Range<Long> TWELVE_DAYS_AGO = new Range( + NOW - Duration.ofDays(13).toMillis(), + NOW - Duration.ofDays(12).toMillis()); + private static final Range<Long> TWENTY_DAYS_AGO = new Range( + NOW - Duration.ofDays(21).toMillis(), + NOW - Duration.ofDays(20).toMillis()); + private static final Range<Long> FOUR_WEEKS_AGO = new Range( + NOW - Duration.ofDays(29).toMillis(), + NOW - Duration.ofDays(28).toMillis()); + + @Mock + private DataManager mDataManager; + @Mock + private EventHistory mEventHistory1; + @Mock + private EventHistory mEventHistory2; + @Mock + private EventHistory mEventHistory3; + @Mock + private EventHistory mEventHistory4; + @Mock + private EventHistory mEventHistory5; + @Mock + private EventIndex mEventIndex1; + @Mock + private EventIndex mEventIndex2; + @Mock + private EventIndex mEventIndex3; + @Mock + private EventIndex mEventIndex4; + @Mock + private EventIndex mEventIndex5; + @Mock + private EventIndex mEventIndex6; + @Mock + private EventIndex mEventIndex7; + @Mock + private EventIndex mEventIndex8; + @Mock + private EventIndex mEventIndex9; + @Mock + private EventIndex mEventIndex10; + + private ShareTargetPredictor.ShareTarget mShareTarget1; + private ShareTargetPredictor.ShareTarget mShareTarget2; + private ShareTargetPredictor.ShareTarget mShareTarget3; + private ShareTargetPredictor.ShareTarget mShareTarget4; + private ShareTargetPredictor.ShareTarget mShareTarget5; + private ShareTargetPredictor.ShareTarget mShareTarget6; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + + mShareTarget1 = new ShareTargetPredictor.ShareTarget( + new AppTarget.Builder( + new AppTargetId("cls1#pkg1"), PACKAGE_1, UserHandle.of(USER_ID)) + .setClassName(CLASS_1).build(), + mEventHistory1, null); + mShareTarget2 = new ShareTargetPredictor.ShareTarget( + new AppTarget.Builder(new AppTargetId("cls2#pkg1"), PACKAGE_1, + UserHandle.of(USER_ID)).setClassName(CLASS_2).build(), + mEventHistory2, null); + mShareTarget3 = new ShareTargetPredictor.ShareTarget( + new AppTarget.Builder( + new AppTargetId("cls1#pkg2"), PACKAGE_2, UserHandle.of(USER_ID)) + .setClassName(CLASS_1).build(), + mEventHistory3, null); + mShareTarget4 = new ShareTargetPredictor.ShareTarget( + new AppTarget.Builder( + new AppTargetId("cls2#pkg2"), PACKAGE_2, UserHandle.of(USER_ID)) + .setClassName(CLASS_2).build(), + mEventHistory4, null); + mShareTarget5 = new ShareTargetPredictor.ShareTarget( + new AppTarget.Builder( + new AppTargetId("cls1#pkg3"), PACKAGE_3, UserHandle.of(USER_ID)) + .setClassName(CLASS_1).build(), + mEventHistory5, null); + mShareTarget6 = new ShareTargetPredictor.ShareTarget( + new AppTarget.Builder( + new AppTargetId("cls2#pkg3"), PACKAGE_3, UserHandle.of(USER_ID)) + .setClassName(CLASS_2).build(), + null, null); + } + + @Test + public void testComputeScore() { + // Frequency and recency + when(mEventHistory1.getEventIndex(anySet())).thenReturn(mEventIndex1); + when(mEventHistory2.getEventIndex(anySet())).thenReturn(mEventIndex2); + when(mEventHistory3.getEventIndex(anySet())).thenReturn(mEventIndex3); + when(mEventHistory4.getEventIndex(anySet())).thenReturn(mEventIndex4); + when(mEventHistory5.getEventIndex(anySet())).thenReturn(mEventIndex5); + + when(mEventIndex1.getActiveTimeSlots()).thenReturn( + List.of(WITHIN_ONE_DAY, TWO_DAYS_AGO, FIVE_DAYS_AGO)); + when(mEventIndex2.getActiveTimeSlots()).thenReturn(List.of(TWO_DAYS_AGO, TWELVE_DAYS_AGO)); + when(mEventIndex3.getActiveTimeSlots()).thenReturn(List.of(FIVE_DAYS_AGO, TWENTY_DAYS_AGO)); + when(mEventIndex4.getActiveTimeSlots()).thenReturn( + List.of(EIGHT_DAYS_AGO, TWELVE_DAYS_AGO, FOUR_WEEKS_AGO)); + when(mEventIndex5.getActiveTimeSlots()).thenReturn(List.of()); + + when(mEventIndex1.getMostRecentActiveTimeSlot()).thenReturn(WITHIN_ONE_DAY); + when(mEventIndex2.getMostRecentActiveTimeSlot()).thenReturn(TWO_DAYS_AGO); + when(mEventIndex3.getMostRecentActiveTimeSlot()).thenReturn(FIVE_DAYS_AGO); + when(mEventIndex4.getMostRecentActiveTimeSlot()).thenReturn(EIGHT_DAYS_AGO); + when(mEventIndex5.getMostRecentActiveTimeSlot()).thenReturn(null); + + // Frequency of the same mime type + when(mEventHistory1.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex6); + when(mEventHistory2.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex7); + when(mEventHistory3.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex8); + when(mEventHistory4.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex9); + when(mEventHistory5.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex10); + + when(mEventIndex6.getActiveTimeSlots()).thenReturn(List.of(TWO_DAYS_AGO)); + when(mEventIndex7.getActiveTimeSlots()).thenReturn(List.of(TWO_DAYS_AGO, TWELVE_DAYS_AGO)); + when(mEventIndex8.getActiveTimeSlots()).thenReturn(List.of()); + when(mEventIndex9.getActiveTimeSlots()).thenReturn(List.of(EIGHT_DAYS_AGO)); + when(mEventIndex10.getActiveTimeSlots()).thenReturn(List.of()); + + SharesheetModelScorer.computeScore( + List.of(mShareTarget1, mShareTarget2, mShareTarget3, mShareTarget4, mShareTarget5, + mShareTarget6), + Event.TYPE_SHARE_TEXT, + NOW); + + // Verification + assertEquals(0.514f, mShareTarget1.getScore(), DELTA); + assertEquals(0.475125f, mShareTarget2.getScore(), DELTA); + assertEquals(0.33f, mShareTarget3.getScore(), DELTA); + assertEquals(0.4411f, mShareTarget4.getScore(), DELTA); + assertEquals(0f, mShareTarget5.getScore(), DELTA); + assertEquals(0f, mShareTarget6.getScore(), DELTA); + } + + @Test + public void testComputeScoreForAppShare() { + // Frequency and recency + when(mEventHistory1.getEventIndex(anySet())).thenReturn(mEventIndex1); + when(mEventHistory2.getEventIndex(anySet())).thenReturn(mEventIndex2); + when(mEventHistory3.getEventIndex(anySet())).thenReturn(mEventIndex3); + when(mEventHistory4.getEventIndex(anySet())).thenReturn(mEventIndex4); + when(mEventHistory5.getEventIndex(anySet())).thenReturn(mEventIndex5); + + when(mEventIndex1.getActiveTimeSlots()).thenReturn( + List.of(WITHIN_ONE_DAY, TWO_DAYS_AGO, FIVE_DAYS_AGO)); + when(mEventIndex2.getActiveTimeSlots()).thenReturn(List.of(TWO_DAYS_AGO, TWELVE_DAYS_AGO)); + when(mEventIndex3.getActiveTimeSlots()).thenReturn(List.of(FIVE_DAYS_AGO, TWENTY_DAYS_AGO)); + when(mEventIndex4.getActiveTimeSlots()).thenReturn( + List.of(EIGHT_DAYS_AGO, TWELVE_DAYS_AGO, FOUR_WEEKS_AGO)); + when(mEventIndex5.getActiveTimeSlots()).thenReturn(List.of()); + + when(mEventIndex1.getMostRecentActiveTimeSlot()).thenReturn(WITHIN_ONE_DAY); + when(mEventIndex2.getMostRecentActiveTimeSlot()).thenReturn(TWO_DAYS_AGO); + when(mEventIndex3.getMostRecentActiveTimeSlot()).thenReturn(FIVE_DAYS_AGO); + when(mEventIndex4.getMostRecentActiveTimeSlot()).thenReturn(EIGHT_DAYS_AGO); + when(mEventIndex5.getMostRecentActiveTimeSlot()).thenReturn(null); + + // Frequency of the same mime type + when(mEventHistory1.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex6); + when(mEventHistory2.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex7); + when(mEventHistory3.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex8); + when(mEventHistory4.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex9); + when(mEventHistory5.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex10); + + when(mEventIndex6.getActiveTimeSlots()).thenReturn(List.of(TWO_DAYS_AGO)); + when(mEventIndex7.getActiveTimeSlots()).thenReturn(List.of(TWO_DAYS_AGO, TWELVE_DAYS_AGO)); + when(mEventIndex8.getActiveTimeSlots()).thenReturn(List.of()); + when(mEventIndex9.getActiveTimeSlots()).thenReturn(List.of(EIGHT_DAYS_AGO)); + when(mEventIndex10.getActiveTimeSlots()).thenReturn(List.of()); + + SharesheetModelScorer.computeScoreForAppShare( + List.of(mShareTarget1, mShareTarget2, mShareTarget3, mShareTarget4, mShareTarget5, + mShareTarget6), + Event.TYPE_SHARE_TEXT, 20, NOW, mDataManager, USER_ID); + + // Verification + assertEquals(0.514f, mShareTarget1.getScore(), DELTA); + assertEquals(0.475125f, mShareTarget2.getScore(), DELTA); + assertEquals(0.33f, mShareTarget3.getScore(), DELTA); + assertEquals(0.4411f, mShareTarget4.getScore(), DELTA); + assertEquals(0f, mShareTarget5.getScore(), DELTA); + assertEquals(0f, mShareTarget6.getScore(), DELTA); + } + + @Test + public void testComputeScoreForAppShare_promoteFrequentlyUsedApps() { + when(mEventHistory1.getEventIndex(anySet())).thenReturn(mEventIndex1); + when(mEventHistory2.getEventIndex(anySet())).thenReturn(mEventIndex2); + when(mEventHistory3.getEventIndex(anySet())).thenReturn(mEventIndex3); + when(mEventHistory4.getEventIndex(anySet())).thenReturn(mEventIndex4); + when(mEventHistory5.getEventIndex(anySet())).thenReturn(mEventIndex5); + when(mEventHistory1.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex6); + when(mEventHistory2.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex7); + when(mEventHistory3.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex8); + when(mEventHistory4.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex9); + when(mEventHistory5.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex10); + when(mDataManager.queryAppLaunchCount(anyInt(), anyLong(), anyLong(), anySet())) + .thenReturn( + Map.of(PACKAGE_1, 1, + PACKAGE_2, 2, + PACKAGE_3, 3)); + + SharesheetModelScorer.computeScoreForAppShare( + List.of(mShareTarget1, mShareTarget2, mShareTarget3, mShareTarget4, mShareTarget5, + mShareTarget6), + Event.TYPE_SHARE_TEXT, 20, NOW, mDataManager, USER_ID); + + verify(mDataManager, times(1)).queryAppLaunchCount(anyInt(), anyLong(), anyLong(), + anySet()); + assertEquals(0.9f, mShareTarget5.getScore(), DELTA); + assertEquals(0.81f, mShareTarget3.getScore(), DELTA); + assertEquals(0.729f, mShareTarget1.getScore(), DELTA); + assertEquals(0f, mShareTarget2.getScore(), DELTA); + assertEquals(0f, mShareTarget4.getScore(), DELTA); + assertEquals(0f, mShareTarget6.getScore(), DELTA); + } + + @Test + public void testComputeScoreForAppShare_skipPromoteFrequentlyUsedAppsWhenReachesLimit() { + when(mEventHistory1.getEventIndex(anySet())).thenReturn(mEventIndex1); + when(mEventHistory2.getEventIndex(anySet())).thenReturn(mEventIndex2); + when(mEventHistory3.getEventIndex(anySet())).thenReturn(mEventIndex3); + when(mEventHistory4.getEventIndex(anySet())).thenReturn(mEventIndex4); + when(mEventHistory5.getEventIndex(anySet())).thenReturn(mEventIndex5); + when(mEventHistory1.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex6); + when(mEventHistory2.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex7); + when(mEventHistory3.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex8); + when(mEventHistory4.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex9); + when(mEventHistory5.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex10); + when(mEventIndex1.getMostRecentActiveTimeSlot()).thenReturn(WITHIN_ONE_DAY); + when(mEventIndex2.getMostRecentActiveTimeSlot()).thenReturn(TWO_DAYS_AGO); + when(mEventIndex3.getMostRecentActiveTimeSlot()).thenReturn(FIVE_DAYS_AGO); + when(mEventIndex4.getMostRecentActiveTimeSlot()).thenReturn(EIGHT_DAYS_AGO); + when(mEventIndex5.getMostRecentActiveTimeSlot()).thenReturn(null); + when(mDataManager.queryAppLaunchCount(anyInt(), anyLong(), anyLong(), anySet())) + .thenReturn( + Map.of(PACKAGE_1, 1, + PACKAGE_2, 2, + PACKAGE_3, 3)); + + SharesheetModelScorer.computeScoreForAppShare( + List.of(mShareTarget1, mShareTarget2, mShareTarget3, mShareTarget4, mShareTarget5, + mShareTarget6), + Event.TYPE_SHARE_TEXT, 4, NOW, mDataManager, USER_ID); + + verify(mDataManager, never()).queryAppLaunchCount(anyInt(), anyLong(), anyLong(), anySet()); + assertEquals(0.4f, mShareTarget1.getScore(), DELTA); + assertEquals(0.35f, mShareTarget2.getScore(), DELTA); + assertEquals(0.33f, mShareTarget3.getScore(), DELTA); + assertEquals(0.31f, mShareTarget4.getScore(), DELTA); + assertEquals(0f, mShareTarget5.getScore(), DELTA); + assertEquals(0f, mShareTarget6.getScore(), DELTA); + } + + @Test + public void testComputeScoreForAppShare_promoteForegroundApp() { + when(mEventHistory1.getEventIndex(anySet())).thenReturn(mEventIndex1); + when(mEventHistory2.getEventIndex(anySet())).thenReturn(mEventIndex2); + when(mEventHistory3.getEventIndex(anySet())).thenReturn(mEventIndex3); + when(mEventHistory4.getEventIndex(anySet())).thenReturn(mEventIndex4); + when(mEventHistory5.getEventIndex(anySet())).thenReturn(mEventIndex5); + when(mEventHistory1.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex6); + when(mEventHistory2.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex7); + when(mEventHistory3.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex8); + when(mEventHistory4.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex9); + when(mEventHistory5.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex10); + when(mDataManager.queryAppMovingToForegroundEvents(anyInt(), anyLong(), + anyLong())).thenReturn( + List.of(createUsageEvent(PACKAGE_2), + createUsageEvent(PACKAGE_3), + createUsageEvent(SharesheetModelScorer.CHOOSER_ACTIVITY), + createUsageEvent(PACKAGE_3), + createUsageEvent(PACKAGE_3)) + ); + + SharesheetModelScorer.computeScoreForAppShare( + List.of(mShareTarget1, mShareTarget2, mShareTarget3, mShareTarget4, mShareTarget5, + mShareTarget6), + Event.TYPE_SHARE_TEXT, 20, NOW, mDataManager, USER_ID); + + verify(mDataManager, times(1)).queryAppMovingToForegroundEvents(anyInt(), anyLong(), + anyLong()); + assertEquals(0f, mShareTarget1.getScore(), DELTA); + assertEquals(0f, mShareTarget2.getScore(), DELTA); + assertEquals(SharesheetModelScorer.FOREGROUND_APP_WEIGHT, mShareTarget3.getScore(), DELTA); + assertEquals(0f, mShareTarget4.getScore(), DELTA); + assertEquals(0f, mShareTarget5.getScore(), DELTA); + assertEquals(0f, mShareTarget6.getScore(), DELTA); + } + + @Test + public void testComputeScoreForAppShare_skipPromoteForegroundAppWhenNoValidForegroundApp() { + when(mEventHistory1.getEventIndex(anySet())).thenReturn(mEventIndex1); + when(mEventHistory2.getEventIndex(anySet())).thenReturn(mEventIndex2); + when(mEventHistory3.getEventIndex(anySet())).thenReturn(mEventIndex3); + when(mEventHistory4.getEventIndex(anySet())).thenReturn(mEventIndex4); + when(mEventHistory5.getEventIndex(anySet())).thenReturn(mEventIndex5); + when(mEventHistory1.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex6); + when(mEventHistory2.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex7); + when(mEventHistory3.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex8); + when(mEventHistory4.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex9); + when(mEventHistory5.getEventIndex(Event.TYPE_SHARE_TEXT)).thenReturn(mEventIndex10); + when(mDataManager.queryAppMovingToForegroundEvents(anyInt(), anyLong(), + anyLong())).thenReturn( + List.of(createUsageEvent(PACKAGE_3), + createUsageEvent(PACKAGE_3), + createUsageEvent(SharesheetModelScorer.CHOOSER_ACTIVITY), + createUsageEvent(PACKAGE_3), + createUsageEvent(PACKAGE_3)) + ); + + SharesheetModelScorer.computeScoreForAppShare( + List.of(mShareTarget1, mShareTarget2, mShareTarget3, mShareTarget4, mShareTarget5, + mShareTarget6), + Event.TYPE_SHARE_TEXT, 20, NOW, mDataManager, USER_ID); + + verify(mDataManager, times(1)).queryAppMovingToForegroundEvents(anyInt(), anyLong(), + anyLong()); + assertEquals(0f, mShareTarget1.getScore(), DELTA); + assertEquals(0f, mShareTarget2.getScore(), DELTA); + assertEquals(0f, mShareTarget3.getScore(), DELTA); + assertEquals(0f, mShareTarget4.getScore(), DELTA); + assertEquals(0f, mShareTarget5.getScore(), DELTA); + assertEquals(0f, mShareTarget6.getScore(), DELTA); + } + + private static UsageEvents.Event createUsageEvent(String packageName) { + UsageEvents.Event e = new UsageEvents.Event(); + e.mPackage = packageName; + return e; + } +} diff --git a/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java index 40ada2aedd59..73e5b6ddfb1d 100644 --- a/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java @@ -21,8 +21,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; 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.mock; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -43,6 +45,7 @@ import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.runner.AndroidJUnit4; import com.android.frameworks.servicestests.R; +import com.android.server.pm.parsing.PackageParser2; import org.junit.Before; import org.junit.Test; @@ -57,24 +60,31 @@ import java.io.InputStream; @SmallTest @Presubmit @RunWith(AndroidJUnit4.class) + public class ApexManagerTest { private static final String TEST_APEX_PKG = "com.android.apex.test"; private static final int TEST_SESSION_ID = 99999999; private static final int[] TEST_CHILD_SESSION_ID = {8888, 7777}; private ApexManager mApexManager; private Context mContext; + private PackageParser2 mPackageParser2; private IApexService mApexService = mock(IApexService.class); @Before public void setUp() throws RemoteException { mContext = InstrumentationRegistry.getInstrumentation().getContext(); - mApexManager = new ApexManager.ApexManagerImpl(mApexService); + ApexManager.ApexManagerImpl managerImpl = spy(new ApexManager.ApexManagerImpl()); + doReturn(mApexService).when(managerImpl).waitForApexService(); + mApexManager = managerImpl; + mPackageParser2 = new PackageParser2(null, false, null, null, null); } @Test public void testGetPackageInfo_setFlagsMatchActivePackage() throws RemoteException { when(mApexService.getAllPackages()).thenReturn(createApexInfo(true, false)); + mApexManager.scanApexPackagesTraced(mPackageParser2, + ParallelPackageParser.makeExecutorService()); final PackageInfo activePkgPi = mApexManager.getPackageInfo(TEST_APEX_PKG, ApexManager.MATCH_ACTIVE_PACKAGE); @@ -90,6 +100,8 @@ public class ApexManagerTest { @Test public void testGetPackageInfo_setFlagsMatchFactoryPackage() throws RemoteException { when(mApexService.getAllPackages()).thenReturn(createApexInfo(false, true)); + mApexManager.scanApexPackagesTraced(mPackageParser2, + ParallelPackageParser.makeExecutorService()); PackageInfo factoryPkgPi = mApexManager.getPackageInfo(TEST_APEX_PKG, ApexManager.MATCH_FACTORY_PACKAGE); @@ -105,6 +117,8 @@ public class ApexManagerTest { @Test public void testGetPackageInfo_setFlagsNone() throws RemoteException { when(mApexService.getAllPackages()).thenReturn(createApexInfo(false, true)); + mApexManager.scanApexPackagesTraced(mPackageParser2, + ParallelPackageParser.makeExecutorService()); assertThat(mApexManager.getPackageInfo(TEST_APEX_PKG, 0)).isNull(); } @@ -112,6 +126,8 @@ public class ApexManagerTest { @Test public void testGetActivePackages() throws RemoteException { when(mApexService.getAllPackages()).thenReturn(createApexInfo(true, true)); + mApexManager.scanApexPackagesTraced(mPackageParser2, + ParallelPackageParser.makeExecutorService()); assertThat(mApexManager.getActivePackages()).isNotEmpty(); } @@ -119,6 +135,8 @@ public class ApexManagerTest { @Test public void testGetActivePackages_noneActivePackages() throws RemoteException { when(mApexService.getAllPackages()).thenReturn(createApexInfo(false, true)); + mApexManager.scanApexPackagesTraced(mPackageParser2, + ParallelPackageParser.makeExecutorService()); assertThat(mApexManager.getActivePackages()).isEmpty(); } @@ -126,6 +144,8 @@ public class ApexManagerTest { @Test public void testGetFactoryPackages() throws RemoteException { when(mApexService.getAllPackages()).thenReturn(createApexInfo(false, true)); + mApexManager.scanApexPackagesTraced(mPackageParser2, + ParallelPackageParser.makeExecutorService()); assertThat(mApexManager.getFactoryPackages()).isNotEmpty(); } @@ -133,6 +153,8 @@ public class ApexManagerTest { @Test public void testGetFactoryPackages_noneFactoryPackages() throws RemoteException { when(mApexService.getAllPackages()).thenReturn(createApexInfo(true, false)); + mApexManager.scanApexPackagesTraced(mPackageParser2, + ParallelPackageParser.makeExecutorService()); assertThat(mApexManager.getFactoryPackages()).isEmpty(); } @@ -140,6 +162,8 @@ public class ApexManagerTest { @Test public void testGetInactivePackages() throws RemoteException { when(mApexService.getAllPackages()).thenReturn(createApexInfo(false, true)); + mApexManager.scanApexPackagesTraced(mPackageParser2, + ParallelPackageParser.makeExecutorService()); assertThat(mApexManager.getInactivePackages()).isNotEmpty(); } @@ -147,6 +171,8 @@ public class ApexManagerTest { @Test public void testGetInactivePackages_noneInactivePackages() throws RemoteException { when(mApexService.getAllPackages()).thenReturn(createApexInfo(true, false)); + mApexManager.scanApexPackagesTraced(mPackageParser2, + ParallelPackageParser.makeExecutorService()); assertThat(mApexManager.getInactivePackages()).isEmpty(); } @@ -154,6 +180,8 @@ public class ApexManagerTest { @Test public void testIsApexPackage() throws RemoteException { when(mApexService.getAllPackages()).thenReturn(createApexInfo(false, true)); + mApexManager.scanApexPackagesTraced(mPackageParser2, + ParallelPackageParser.makeExecutorService()); assertThat(mApexManager.isApexPackage(TEST_APEX_PKG)).isTrue(); } diff --git a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java b/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java index 22591c6e10a7..5109de501157 100644 --- a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java @@ -17,6 +17,7 @@ package com.android.server.pm; +import static org.hamcrest.Matchers.arrayContaining; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; @@ -47,6 +48,7 @@ import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.pm.parsing.pkg.PackageImpl; import com.android.server.pm.parsing.pkg.ParsedPackage; +import org.hamcrest.Matcher; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -56,7 +58,9 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import java.security.cert.CertificateException; +import java.util.Arrays; import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.Set; @@ -635,6 +639,57 @@ public class AppsFilterTest { appsFilter.shouldFilterApplication(DUMMY_TARGET_UID, target, instrumentation, 0)); } + @Test + public void testWhoCanSee() throws Exception { + final AppsFilter appsFilter = + new AppsFilter(mFeatureConfigMock, new String[]{}, false, null); + appsFilter.onSystemReady(); + + final int systemAppId = Process.FIRST_APPLICATION_UID - 1; + final int seesNothingAppId = Process.FIRST_APPLICATION_UID; + final int hasProviderAppId = Process.FIRST_APPLICATION_UID + 1; + final int queriesProviderAppId = Process.FIRST_APPLICATION_UID + 2; + PackageSetting system = simulateAddPackage(appsFilter, pkg("some.system.pkg"), systemAppId); + PackageSetting seesNothing = simulateAddPackage(appsFilter, pkg("some.system.pkg"), + seesNothingAppId); + PackageSetting hasProvider = simulateAddPackage(appsFilter, + pkgWithProvider("com.some.package", "com.some.authority"), hasProviderAppId); + PackageSetting queriesProvider = simulateAddPackage(appsFilter, + pkgQueriesProvider("com.some.other.package", "com.some.authority"), + queriesProviderAppId); + + final int[] systemFilter = + appsFilter.getVisibilityWhitelist(system, new int[]{0}, mExisting).get(0); + assertThat(Arrays.asList(systemFilter), arrayContaining(systemAppId)); + + final int[] seesNothingFilter = + appsFilter.getVisibilityWhitelist(seesNothing, new int[]{0}, mExisting).get(0); + assertThat(Arrays.asList(seesNothingFilter), + arrayContaining(systemAppId, seesNothingAppId)); + + final int[] hasProviderFilter = + appsFilter.getVisibilityWhitelist(hasProvider, new int[]{0}, mExisting).get(0); + assertThat(Arrays.asList(hasProviderFilter), + arrayContaining(systemAppId, hasProviderAppId, queriesProviderAppId)); + + int[] queriesProviderFilter = + appsFilter.getVisibilityWhitelist(queriesProvider, new int[]{0}, mExisting).get(0); + assertThat(Arrays.asList(queriesProviderFilter), + arrayContaining(systemAppId, queriesProviderAppId)); + + // provider read + appsFilter.grantImplicitAccess(hasProviderAppId, queriesProviderAppId); + + // ensure implicit access is included in the filter + queriesProviderFilter = + appsFilter.getVisibilityWhitelist(queriesProvider, new int[]{0}, mExisting).get(0); + assertThat(Arrays.asList(queriesProviderFilter), + arrayContaining(systemAppId, hasProviderAppId, queriesProviderAppId)); + } + + private void assertThat(List<int[]> asList, Matcher<Integer[]> arrayContainingInAnyOrder) { + } + private interface WithSettingBuilder { PackageSettingBuilder withBuilder(PackageSettingBuilder builder); } diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/pm/PackageManagerServiceTest.java index 9cf6702c35d3..0a68688cef9e 100644 --- a/services/tests/servicestests/src/com/android/server/pm/PackageManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/PackageManagerServiceTest.java @@ -18,6 +18,7 @@ package com.android.server.pm; import android.content.IIntentReceiver; import android.os.Bundle; +import android.util.SparseArray; import androidx.test.runner.AndroidJUnit4; @@ -47,7 +48,7 @@ public class PackageManagerServiceTest { public void sendPackageBroadcast(final String action, final String pkg, final Bundle extras, final int flags, final String targetPkg, final IIntentReceiver finishedReceiver, final int[] userIds, - int[] instantUserIds) { + int[] instantUserIds, SparseArray<int[]> broadcastWhitelist) { } public void sendPackageAddedForNewUsers(String packageName, diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java b/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java index a19d91976307..d760629552b8 100644 --- a/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java @@ -17,11 +17,15 @@ package com.android.server.pm; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; +import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; + import android.annotation.NonNull; +import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.ConfigurationInfo; @@ -30,7 +34,6 @@ import android.content.pm.FeatureInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageParser; import android.content.pm.PackageUserState; -import android.content.pm.ProviderInfo; import android.content.pm.ServiceInfo; import android.content.pm.Signature; import android.content.pm.parsing.ParsingPackage; @@ -49,6 +52,7 @@ import android.util.ArraySet; import android.util.DisplayMetrics; import androidx.annotation.Nullable; +import androidx.test.InstrumentationRegistry; import androidx.test.filters.MediumTest; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; @@ -69,9 +73,11 @@ import org.junit.runner.RunWith; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.lang.reflect.Array; import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; @@ -90,6 +96,9 @@ public class PackageParserTest { private File mTmpDir; private static final File FRAMEWORK = new File("/system/framework/framework-res.apk"); + private static final String TEST_APP1_APK = "PackageParserTestApp1.apk"; + private static final String TEST_APP2_APK = "PackageParserTestApp2.apk"; + private static final String TEST_APP3_APK = "PackageParserTestApp3.apk"; @Before public void setUp() throws IOException { @@ -209,6 +218,61 @@ public class PackageParserTest { assertSame(deserialized.getSharedUserId(), deserialized2.getSharedUserId()); } + private static PackageParser2 makeParser() { + return new PackageParser2(null, false, null, null, null); + } + + private File extractFile(String filename) throws Exception { + final Context context = InstrumentationRegistry.getTargetContext(); + final File tmpFile = File.createTempFile(filename, ".apk"); + try (InputStream inputStream = context.getAssets().openNonAsset(filename)) { + Files.copy(inputStream, tmpFile.toPath(), REPLACE_EXISTING); + } + return tmpFile; + } + + /** + * Tests AndroidManifest.xml with no android:isolatedSplits attribute. + */ + @Test + public void testParseIsolatedSplitsDefault() throws Exception { + final File testFile = extractFile(TEST_APP1_APK); + try { + final ParsedPackage pkg = makeParser().parsePackage(testFile, 0, false); + assertFalse("isolatedSplits", pkg.isIsolatedSplitLoading()); + } finally { + testFile.delete(); + } + } + + /** + * Tests AndroidManifest.xml with an android:isolatedSplits attribute set to a constant. + */ + @Test + public void testParseIsolatedSplitsConstant() throws Exception { + final File testFile = extractFile(TEST_APP2_APK); + try { + final ParsedPackage pkg = makeParser().parsePackage(testFile, 0, false); + assertTrue("isolatedSplits", pkg.isIsolatedSplitLoading()); + } finally { + testFile.delete(); + } + } + + /** + * Tests AndroidManifest.xml with an android:isolatedSplits attribute set to a resource. + */ + @Test + public void testParseIsolatedSplitsResource() throws Exception { + final File testFile = extractFile(TEST_APP3_APK); + try { + final ParsedPackage pkg = makeParser().parsePackage(testFile, 0, false); + assertTrue("isolatedSplits", pkg.isIsolatedSplitLoading()); + } finally { + testFile.delete(); + } + } + /** * A trivial subclass of package parser that only caches the package name, and throws away * all other information. diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageUserStateTest.java b/services/tests/servicestests/src/com/android/server/pm/PackageUserStateTest.java index fc5a0ba1af7b..7c3efeb01f48 100644 --- a/services/tests/servicestests/src/com/android/server/pm/PackageUserStateTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/PackageUserStateTest.java @@ -84,6 +84,10 @@ public class PackageUserStateTest { oldUserState = new PackageUserState(); oldUserState.suspended = true; assertThat(testUserState.equals(oldUserState), is(false)); + + oldUserState = new PackageUserState(); + oldUserState.uninstallReason = PackageManager.UNINSTALL_REASON_USER_TYPE; + assertThat(testUserState.equals(oldUserState), is(false)); } @Test diff --git a/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java index 9e067304fc7f..615fa5c614f0 100644 --- a/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java @@ -17,6 +17,7 @@ package com.android.server.power; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; @@ -29,6 +30,7 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.hardware.thermal.V2_0.TemperatureThreshold; +import android.hardware.thermal.V2_0.ThrottlingSeverity; import android.os.CoolingDevice; import android.os.IBinder; import android.os.IPowerManager; @@ -91,6 +93,7 @@ public class ThermalManagerServiceTest { private static final int INIT_STATUS = Temperature.THROTTLING_NONE; private ArrayList<Temperature> mTemperatureList = new ArrayList<>(); private ArrayList<CoolingDevice> mCoolingDeviceList = new ArrayList<>(); + private ArrayList<TemperatureThreshold> mTemperatureThresholdList = initializeThresholds(); private Temperature mSkin1 = new Temperature(0, Temperature.TYPE_SKIN, "skin1", INIT_STATUS); @@ -103,6 +106,35 @@ public class ThermalManagerServiceTest { private CoolingDevice mCpu = new CoolingDevice(0, CoolingDevice.TYPE_BATTERY, "cpu"); private CoolingDevice mGpu = new CoolingDevice(0, CoolingDevice.TYPE_BATTERY, "gpu"); + private ArrayList<TemperatureThreshold> initializeThresholds() { + ArrayList<TemperatureThreshold> thresholds = new ArrayList<>(); + + TemperatureThreshold skinThreshold = new TemperatureThreshold(); + skinThreshold.type = Temperature.TYPE_SKIN; + skinThreshold.name = "skin1"; + skinThreshold.hotThrottlingThresholds = new float[7 /*ThrottlingSeverity#len*/]; + for (int i = 0; i < skinThreshold.hotThrottlingThresholds.length; ++i) { + // Sets NONE to 25.0f, SEVERE to 40.0f, and SHUTDOWN to 55.0f + skinThreshold.hotThrottlingThresholds[i] = 25.0f + 5.0f * i; + } + thresholds.add(skinThreshold); + + TemperatureThreshold cpuThreshold = new TemperatureThreshold(); + cpuThreshold.type = Temperature.TYPE_CPU; + cpuThreshold.name = "cpu"; + cpuThreshold.hotThrottlingThresholds = new float[7 /*ThrottlingSeverity#len*/]; + for (int i = 0; i < cpuThreshold.hotThrottlingThresholds.length; ++i) { + if (i == ThrottlingSeverity.SEVERE) { + cpuThreshold.hotThrottlingThresholds[i] = 95.0f; + } else { + cpuThreshold.hotThrottlingThresholds[i] = Float.NaN; + } + } + thresholds.add(cpuThreshold); + + return thresholds; + } + ThermalHalFake() { mTemperatureList.add(mSkin1); mTemperatureList.add(mSkin2); @@ -139,7 +171,14 @@ public class ThermalManagerServiceTest { @Override protected List<TemperatureThreshold> getTemperatureThresholds(boolean shouldFilter, int type) { - return new ArrayList<>(); + List<TemperatureThreshold> ret = new ArrayList<>(); + for (TemperatureThreshold threshold : mTemperatureThresholdList) { + if (shouldFilter && type != threshold.type) { + continue; + } + ret.add(threshold); + } + return ret; } @Override @@ -351,4 +390,67 @@ public class ThermalManagerServiceTest { Arrays.asList(mService.mService.getCurrentCoolingDevicesWithType( CoolingDevice.TYPE_CPU))); } + + @Test + public void testTemperatureWatcherUpdateSevereThresholds() throws RemoteException { + ThermalManagerService.TemperatureWatcher watcher = mService.mTemperatureWatcher; + watcher.mSevereThresholds.erase(); + watcher.updateSevereThresholds(); + assertEquals(1, watcher.mSevereThresholds.size()); + assertEquals("skin1", watcher.mSevereThresholds.keyAt(0)); + Float threshold = watcher.mSevereThresholds.get("skin1"); + assertNotNull(threshold); + assertEquals(40.0f, threshold, 0.0f); + } + + @Test + public void testTemperatureWatcherGetSlopeOf() throws RemoteException { + ThermalManagerService.TemperatureWatcher watcher = mService.mTemperatureWatcher; + List<ThermalManagerService.TemperatureWatcher.Sample> samples = new ArrayList<>(); + for (int i = 0; i < 30; ++i) { + samples.add(watcher.createSampleForTesting(i, (float) (i / 2 * 2))); + } + assertEquals(1.0f, watcher.getSlopeOf(samples), 0.01f); + } + + @Test + public void testTemperatureWatcherNormalizeTemperature() throws RemoteException { + ThermalManagerService.TemperatureWatcher watcher = mService.mTemperatureWatcher; + assertEquals(0.5f, watcher.normalizeTemperature(25.0f, 40.0f), 0.0f); + + // Temperatures more than 30 degrees below the SEVERE threshold should be clamped to 0.0f + assertEquals(0.0f, watcher.normalizeTemperature(0.0f, 40.0f), 0.0f); + + // Temperatures above the SEVERE threshold should not be clamped + assertEquals(2.0f, watcher.normalizeTemperature(70.0f, 40.0f), 0.0f); + } + + @Test + public void testTemperatureWatcherGetForecast() throws RemoteException { + ThermalManagerService.TemperatureWatcher watcher = mService.mTemperatureWatcher; + + ArrayList<ThermalManagerService.TemperatureWatcher.Sample> samples = new ArrayList<>(); + + // Add a single sample + samples.add(watcher.createSampleForTesting(0, 25.0f)); + watcher.mSamples.put("skin1", samples); + + // Because there are not enough samples to compute the linear regression, + // no matter how far ahead we forecast, we should receive the same value + assertEquals(0.5f, watcher.getForecast(0), 0.0f); + assertEquals(0.5f, watcher.getForecast(5), 0.0f); + + // Add some time-series data + for (int i = 1; i < 20; ++i) { + samples.add(0, watcher.createSampleForTesting(1000 * i, 25.0f + 0.5f * i)); + } + + // Now the forecast should vary depending on how far ahead we are trying to predict + assertEquals(0.9f, watcher.getForecast(4), 0.02f); + assertEquals(1.0f, watcher.getForecast(10), 0.02f); + + // If there are no thresholds, then we shouldn't receive a headroom value + watcher.mSevereThresholds.erase(); + assertTrue(Float.isNaN(watcher.getForecast(0))); + } } diff --git a/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java index 039c2b4933e9..da34e1b792c1 100644 --- a/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java @@ -76,67 +76,67 @@ public class TimeZoneDetectorServiceTest { } @Test(expected = SecurityException.class) - public void testSuggestTelephonyTime_withoutPermission() { + public void testSuggestManualTimeZone_withoutPermission() { doThrow(new SecurityException("Mock")) - .when(mMockContext).enforceCallingPermission(anyString(), any()); - TelephonyTimeZoneSuggestion timeZoneSuggestion = createTelephonyTimeZoneSuggestion(); + .when(mMockContext).enforceCallingOrSelfPermission(anyString(), any()); + ManualTimeZoneSuggestion timeZoneSuggestion = createManualTimeZoneSuggestion(); try { - mTimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion); + mTimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion); fail(); } finally { - verify(mMockContext).enforceCallingPermission( - eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), + verify(mMockContext).enforceCallingOrSelfPermission( + eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), anyString()); } } @Test - public void testSuggestTelephonyTimeZone() throws Exception { - doNothing().when(mMockContext).enforceCallingPermission(anyString(), any()); + public void testSuggestManualTimeZone() throws Exception { + doNothing().when(mMockContext).enforceCallingOrSelfPermission(anyString(), any()); - TelephonyTimeZoneSuggestion timeZoneSuggestion = createTelephonyTimeZoneSuggestion(); - mTimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion); + ManualTimeZoneSuggestion timeZoneSuggestion = createManualTimeZoneSuggestion(); + mTimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion); mTestHandler.assertTotalMessagesEnqueued(1); - verify(mMockContext).enforceCallingPermission( - eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), + verify(mMockContext).enforceCallingOrSelfPermission( + eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), anyString()); mTestHandler.waitForMessagesToBeProcessed(); - mStubbedTimeZoneDetectorStrategy.verifySuggestTelephonyTimeZoneCalled(timeZoneSuggestion); + mStubbedTimeZoneDetectorStrategy.verifySuggestManualTimeZoneCalled(timeZoneSuggestion); } @Test(expected = SecurityException.class) - public void testSuggestManualTime_withoutPermission() { + public void testSuggestTelephonyTimeZone_withoutPermission() { doThrow(new SecurityException("Mock")) - .when(mMockContext).enforceCallingOrSelfPermission(anyString(), any()); - ManualTimeZoneSuggestion timeZoneSuggestion = createManualTimeZoneSuggestion(); + .when(mMockContext).enforceCallingPermission(anyString(), any()); + TelephonyTimeZoneSuggestion timeZoneSuggestion = createTelephonyTimeZoneSuggestion(); try { - mTimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion); + mTimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion); fail(); } finally { - verify(mMockContext).enforceCallingOrSelfPermission( - eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), + verify(mMockContext).enforceCallingPermission( + eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), anyString()); } } @Test - public void testSuggestManualTimeZone() throws Exception { - doNothing().when(mMockContext).enforceCallingOrSelfPermission(anyString(), any()); + public void testSuggestTelephonyTimeZone() throws Exception { + doNothing().when(mMockContext).enforceCallingPermission(anyString(), any()); - ManualTimeZoneSuggestion timeZoneSuggestion = createManualTimeZoneSuggestion(); - mTimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion); + TelephonyTimeZoneSuggestion timeZoneSuggestion = createTelephonyTimeZoneSuggestion(); + mTimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion); mTestHandler.assertTotalMessagesEnqueued(1); - verify(mMockContext).enforceCallingOrSelfPermission( - eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), + verify(mMockContext).enforceCallingPermission( + eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), anyString()); mTestHandler.waitForMessagesToBeProcessed(); - mStubbedTimeZoneDetectorStrategy.verifySuggestManualTimeZoneCalled(timeZoneSuggestion); + mStubbedTimeZoneDetectorStrategy.verifySuggestTelephonyTimeZoneCalled(timeZoneSuggestion); } @Test @@ -165,6 +165,10 @@ public class TimeZoneDetectorServiceTest { mStubbedTimeZoneDetectorStrategy.verifyHandleAutoTimeZoneDetectionChangedCalled(); } + private static ManualTimeZoneSuggestion createManualTimeZoneSuggestion() { + return new ManualTimeZoneSuggestion("TestZoneId"); + } + private static TelephonyTimeZoneSuggestion createTelephonyTimeZoneSuggestion() { int slotIndex = 1234; return new TelephonyTimeZoneSuggestion.Builder(slotIndex) @@ -174,26 +178,22 @@ public class TimeZoneDetectorServiceTest { .build(); } - private static ManualTimeZoneSuggestion createManualTimeZoneSuggestion() { - return new ManualTimeZoneSuggestion("TestZoneId"); - } - private static class StubbedTimeZoneDetectorStrategy implements TimeZoneDetectorStrategy { // Call tracking. - private TelephonyTimeZoneSuggestion mLastTelephonySuggestion; private ManualTimeZoneSuggestion mLastManualSuggestion; + private TelephonyTimeZoneSuggestion mLastTelephonySuggestion; private boolean mHandleAutoTimeZoneDetectionChangedCalled; private boolean mDumpCalled; @Override - public void suggestTelephonyTimeZone(TelephonyTimeZoneSuggestion timeZoneSuggestion) { - mLastTelephonySuggestion = timeZoneSuggestion; + public void suggestManualTimeZone(ManualTimeZoneSuggestion timeZoneSuggestion) { + mLastManualSuggestion = timeZoneSuggestion; } @Override - public void suggestManualTimeZone(ManualTimeZoneSuggestion timeZoneSuggestion) { - mLastManualSuggestion = timeZoneSuggestion; + public void suggestTelephonyTimeZone(TelephonyTimeZoneSuggestion timeZoneSuggestion) { + mLastTelephonySuggestion = timeZoneSuggestion; } @Override @@ -207,18 +207,18 @@ public class TimeZoneDetectorServiceTest { } void resetCallTracking() { - mLastTelephonySuggestion = null; mLastManualSuggestion = null; + mLastTelephonySuggestion = null; mHandleAutoTimeZoneDetectionChangedCalled = false; mDumpCalled = false; } - void verifySuggestTelephonyTimeZoneCalled(TelephonyTimeZoneSuggestion expectedSuggestion) { - assertEquals(expectedSuggestion, mLastTelephonySuggestion); + void verifySuggestManualTimeZoneCalled(ManualTimeZoneSuggestion expectedSuggestion) { + assertEquals(expectedSuggestion, mLastManualSuggestion); } - public void verifySuggestManualTimeZoneCalled(ManualTimeZoneSuggestion expectedSuggestion) { - assertEquals(expectedSuggestion, mLastManualSuggestion); + void verifySuggestTelephonyTimeZoneCalled(TelephonyTimeZoneSuggestion expectedSuggestion) { + assertEquals(expectedSuggestion, mLastTelephonySuggestion); } void verifyHandleAutoTimeZoneDetectionChangedCalled() { @@ -229,5 +229,4 @@ public class TimeZoneDetectorServiceTest { assertTrue(mDumpCalled); } } - } diff --git a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java index 155c6ddd4507..fcbd5072ae35 100644 --- a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java @@ -34,6 +34,7 @@ import android.media.tv.tunerresourcemanager.TunerFrontendInfo; import android.media.tv.tunerresourcemanager.TunerFrontendRequest; import android.media.tv.tunerresourcemanager.TunerResourceManager; import android.os.RemoteException; +import android.platform.test.annotations.Presubmit; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; @@ -54,6 +55,7 @@ import java.util.Map; * Tests for {@link TunerResourceManagerService} class. */ @SmallTest +@Presubmit @RunWith(JUnit4.class) public class TunerResourceManagerServiceTest { private static final String TAG = "TunerResourceManagerServiceTest"; diff --git a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/UseCasePriorityHintsTest.java b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/UseCasePriorityHintsTest.java index ab5665ba99fc..2ff178eba3e1 100644 --- a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/UseCasePriorityHintsTest.java +++ b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/UseCasePriorityHintsTest.java @@ -18,6 +18,7 @@ package com.android.server.tv.tunerresourcemanager; import static com.google.common.truth.Truth.assertThat; import android.media.tv.TvInputService; +import android.platform.test.annotations.Presubmit; import android.util.Slog; import androidx.test.filters.SmallTest; @@ -36,6 +37,7 @@ import java.nio.charset.StandardCharsets; * Tests for {@link UseCasePriorityHints} class. */ @SmallTest +@Presubmit @RunWith(JUnit4.class) public class UseCasePriorityHintsTest { private static final String TAG = "UseCasePriorityHintsTest"; diff --git a/services/tests/servicestests/test-apps/PackageParserApp/Android.bp b/services/tests/servicestests/test-apps/PackageParserApp/Android.bp new file mode 100644 index 000000000000..c409438e94ae --- /dev/null +++ b/services/tests/servicestests/test-apps/PackageParserApp/Android.bp @@ -0,0 +1,53 @@ +// 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. + +android_test_helper_app { + name: "PackageParserTestApp1", + sdk_version: "current", + srcs: ["**/*.java"], + dex_preopt: { + enabled: false, + }, + optimize: { + enabled: false, + }, + manifest: "AndroidManifestApp1.xml", +} + +android_test_helper_app { + name: "PackageParserTestApp2", + sdk_version: "current", + srcs: ["**/*.java"], + dex_preopt: { + enabled: false, + }, + optimize: { + enabled: false, + }, + manifest: "AndroidManifestApp2.xml", +} + +android_test_helper_app { + name: "PackageParserTestApp3", + sdk_version: "current", + srcs: ["**/*.java"], + dex_preopt: { + enabled: false, + }, + optimize: { + enabled: false, + }, + resource_dirs: ["res"], + manifest: "AndroidManifestApp3.xml", +} diff --git a/services/tests/servicestests/test-apps/PackageParserApp/AndroidManifestApp1.xml b/services/tests/servicestests/test-apps/PackageParserApp/AndroidManifestApp1.xml new file mode 100644 index 000000000000..01d335d2cbbd --- /dev/null +++ b/services/tests/servicestests/test-apps/PackageParserApp/AndroidManifestApp1.xml @@ -0,0 +1,25 @@ +<?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. +--> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.servicestests.apps.packageparserapp" > + + <application> + <activity android:name=".TestActivity" + android:exported="true" /> + </application> + +</manifest>
\ No newline at end of file diff --git a/services/tests/servicestests/test-apps/PackageParserApp/AndroidManifestApp2.xml b/services/tests/servicestests/test-apps/PackageParserApp/AndroidManifestApp2.xml new file mode 100644 index 000000000000..567946cc70d7 --- /dev/null +++ b/services/tests/servicestests/test-apps/PackageParserApp/AndroidManifestApp2.xml @@ -0,0 +1,26 @@ +<?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. +--> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.servicestests.apps.packageparserapp" + android:isolatedSplits="true" > + + <application> + <activity android:name=".TestActivity" + android:exported="true" /> + </application> + +</manifest>
\ No newline at end of file diff --git a/services/tests/servicestests/test-apps/PackageParserApp/AndroidManifestApp3.xml b/services/tests/servicestests/test-apps/PackageParserApp/AndroidManifestApp3.xml new file mode 100644 index 000000000000..77285a805950 --- /dev/null +++ b/services/tests/servicestests/test-apps/PackageParserApp/AndroidManifestApp3.xml @@ -0,0 +1,26 @@ +<?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. +--> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.servicestests.apps.packageparserapp" + android:isolatedSplits="@bool/config_isIsolated" > + + <application> + <activity android:name=".TestActivity" + android:exported="true" /> + </application> + +</manifest>
\ No newline at end of file diff --git a/services/tests/servicestests/test-apps/PackageParserApp/res/values/values.xml b/services/tests/servicestests/test-apps/PackageParserApp/res/values/values.xml new file mode 100644 index 000000000000..6a4cc653494f --- /dev/null +++ b/services/tests/servicestests/test-apps/PackageParserApp/res/values/values.xml @@ -0,0 +1,19 @@ +<?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. +--> + +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <bool name="config_isIsolated">true</bool> +</resources>
\ No newline at end of file diff --git a/services/tests/servicestests/test-apps/PackageParserApp/src/com/android/servicestests/apps/packageparserapp/TestActivity.java b/services/tests/servicestests/test-apps/PackageParserApp/src/com/android/servicestests/apps/packageparserapp/TestActivity.java new file mode 100644 index 000000000000..2eacb96fb2aa --- /dev/null +++ b/services/tests/servicestests/test-apps/PackageParserApp/src/com/android/servicestests/apps/packageparserapp/TestActivity.java @@ -0,0 +1,28 @@ +/* + * 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.servicestests.apps.packageparserapp; + +import android.app.Activity; +import android.os.Bundle; + +public class TestActivity extends Activity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + finish(); + } +} diff --git a/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java b/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java index c7cef05ce442..0dbbbaa9cdd6 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java @@ -47,6 +47,7 @@ import org.mockito.MockitoAnnotations; public class BubbleExtractorTest extends UiServiceTestCase { @Mock RankingConfig mConfig; + @Mock BubbleExtractor.BubbleChecker mBubbleChecker; BubbleExtractor mBubbleExtractor; private String mPkg = "com.android.server.notification"; @@ -141,4 +142,33 @@ public class BubbleExtractorTest extends UiServiceTestCase { assertFalse(r.canBubble()); } + + @Test + public void testFlagBubble_true() { + when(mConfig.bubblesEnabled()).thenReturn(true); + when(mConfig.areBubblesAllowed(mPkg, mUid)).thenReturn(true); + NotificationRecord r = getNotificationRecord(true, IMPORTANCE_UNSPECIFIED); + + mBubbleExtractor.setBubbleChecker(mBubbleChecker); + when(mBubbleChecker.isNotificationAppropriateToBubble(r)).thenReturn(true); + mBubbleExtractor.process(r); + + assertTrue(r.canBubble()); + assertTrue(r.getNotification().isBubbleNotification()); + } + + @Test + public void testFlagBubble_noFlag_previouslyRemoved() { + when(mConfig.bubblesEnabled()).thenReturn(true); + when(mConfig.areBubblesAllowed(mPkg, mUid)).thenReturn(true); + NotificationRecord r = getNotificationRecord(true, IMPORTANCE_UNSPECIFIED); + r.setFlagBubbleRemoved(true); + + mBubbleExtractor.setBubbleChecker(mBubbleChecker); + when(mBubbleChecker.isNotificationAppropriateToBubble(r)).thenReturn(true); + mBubbleExtractor.process(r); + + assertTrue(r.canBubble()); + assertFalse(r.getNotification().isBubbleNotification()); + } } diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java index d2417f9d10c5..f083f0e707bd 100755 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -78,6 +78,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.ActivityManager; +import android.app.ActivityManagerInternal; import android.app.AppOpsManager; import android.app.AutomaticZenRule; import android.app.IActivityManager; @@ -131,6 +132,7 @@ import android.service.notification.NotificationListenerService; import android.service.notification.NotificationStats; import android.service.notification.StatusBarNotification; import android.service.notification.ZenPolicy; +import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableContext; @@ -154,6 +156,7 @@ import com.android.internal.logging.InstanceIdSequence; import com.android.internal.logging.InstanceIdSequenceFake; import com.android.internal.statusbar.NotificationVisibility; import com.android.internal.util.FastXmlSerializer; +import com.android.server.DeviceIdleInternal; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.UiServiceTestCase; @@ -380,12 +383,20 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { MockitoAnnotations.initMocks(this); + DeviceIdleInternal deviceIdleInternal = mock(DeviceIdleInternal.class); + when(deviceIdleInternal.getNotificationWhitelistDuration()).thenReturn(3000L); + ActivityManagerInternal activityManagerInternal = mock(ActivityManagerInternal.class); + LocalServices.removeServiceForTest(UriGrantsManagerInternal.class); LocalServices.addService(UriGrantsManagerInternal.class, mUgmInternal); LocalServices.removeServiceForTest(WindowManagerInternal.class); LocalServices.addService(WindowManagerInternal.class, mWindowManagerInternal); LocalServices.removeServiceForTest(StatusBarManagerInternal.class); LocalServices.addService(StatusBarManagerInternal.class, mStatusBar); + LocalServices.removeServiceForTest(DeviceIdleInternal.class); + LocalServices.addService(DeviceIdleInternal.class, deviceIdleInternal); + LocalServices.removeServiceForTest(ActivityManagerInternal.class); + LocalServices.addService(ActivityManagerInternal.class, activityManagerInternal); doNothing().when(mContext).sendBroadcastAsUser(any(), any(), any()); @@ -457,7 +468,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { mCompanionMgr, mSnoozeHelper, mUsageStats, mPolicyFile, mActivityManager, mGroupHelper, mAm, mAtm, mAppUsageStats, mock(DevicePolicyManagerInternal.class), mUgm, mUgmInternal, - mAppOpsManager, mUm, mHistoryManager, mStatsManager); + mAppOpsManager, mUm, mHistoryManager, mStatsManager, + mock(TelephonyManager.class)); mService.onBootPhase(SystemService.PHASE_SYSTEM_SERVICES_READY); mService.setAudioManager(mAudioManager); @@ -5592,6 +5604,67 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { } @Test + public void testNotificationBubbleIsFlagRemoved_resetOnUpdate() throws Exception { + // Bubbles are allowed! + setUpPrefsForBubbles(PKG, mUid, true /* global */, true /* app */, true /* channel */); + // Notif with bubble metadata + NotificationRecord nr = generateMessageBubbleNotifRecord(mTestNotificationChannel, + "testNotificationBubbleIsFlagRemoved_resetOnUpdate"); + + mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(), + nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId()); + waitForIdle(); + // Flag shouldn't be modified + NotificationRecord recordToCheck = mService.getNotificationRecord(nr.getSbn().getKey()); + assertFalse(recordToCheck.isFlagBubbleRemoved()); + + // Notify we're not a bubble + mService.mNotificationDelegate.onNotificationBubbleChanged(nr.getKey(), false); + waitForIdle(); + // Flag should be modified + recordToCheck = mService.getNotificationRecord(nr.getSbn().getKey()); + assertTrue(recordToCheck.isFlagBubbleRemoved()); + + + // Update the notif + mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(), + nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId()); + waitForIdle(); + // And the flag is reset + recordToCheck = mService.getNotificationRecord(nr.getSbn().getKey()); + assertFalse(recordToCheck.isFlagBubbleRemoved()); + } + + @Test + public void testNotificationBubbleIsFlagRemoved_resetOnBubbleChangedTrue() throws Exception { + // Bubbles are allowed! + setUpPrefsForBubbles(PKG, mUid, true /* global */, true /* app */, true /* channel */); + // Notif with bubble metadata + NotificationRecord nr = generateMessageBubbleNotifRecord(mTestNotificationChannel, + "testNotificationBubbleIsFlagRemoved_trueOnBubbleChangedTrue"); + + mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(), + nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId()); + waitForIdle(); + // Flag shouldn't be modified + NotificationRecord recordToCheck = mService.getNotificationRecord(nr.getSbn().getKey()); + assertFalse(recordToCheck.isFlagBubbleRemoved()); + + // Notify we're not a bubble + mService.mNotificationDelegate.onNotificationBubbleChanged(nr.getKey(), false); + waitForIdle(); + // Flag should be modified + recordToCheck = mService.getNotificationRecord(nr.getSbn().getKey()); + assertTrue(recordToCheck.isFlagBubbleRemoved()); + + // Notify we are a bubble + mService.mNotificationDelegate.onNotificationBubbleChanged(nr.getKey(), true); + waitForIdle(); + // And the flag is reset + assertFalse(recordToCheck.isFlagBubbleRemoved()); + } + + @Test public void testOnBubbleNotificationSuppressionChanged() throws Exception { // Bubbles are allowed! setUpPrefsForBubbles(PKG, mUid, true /* global */, true /* app */, true /* channel */); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerTest.java index 1e6270d78275..fd6804641d2c 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerTest.java @@ -60,16 +60,16 @@ public class NotificationRecordLoggerTest extends UiServiceTestCase { @Test public void testSmallHash() { - assertEquals(0, NotificationRecordLogger.smallHash(0)); - final int maxHash = NotificationRecordLogger.MAX_HASH; + assertEquals(0, SmallHash.hash(0)); + final int maxHash = SmallHash.MAX_HASH; assertEquals(0, - NotificationRecordLogger.smallHash(maxHash)); + SmallHash.hash(maxHash)); assertEquals(0, - NotificationRecordLogger.smallHash(17 * maxHash)); + SmallHash.hash(17 * maxHash)); assertEquals(maxHash - 1, - NotificationRecordLogger.smallHash(maxHash - 1)); + SmallHash.hash(maxHash - 1)); assertEquals(maxHash - 1, - NotificationRecordLogger.smallHash(-1)); + SmallHash.hash(-1)); } @Test @@ -78,10 +78,10 @@ public class NotificationRecordLoggerTest extends UiServiceTestCase { getNotificationRecordPair(0, null).getNotificationIdHash()); assertEquals(1, getNotificationRecordPair(1, null).getNotificationIdHash()); - assertEquals(NotificationRecordLogger.MAX_HASH - 1, + assertEquals(SmallHash.MAX_HASH - 1, getNotificationRecordPair(-1, null).getNotificationIdHash()); final String tag = "someTag"; - final int hash = NotificationRecordLogger.smallHash(tag.hashCode()); + final int hash = SmallHash.hash(tag.hashCode()); assertEquals(hash, getNotificationRecordPair(0, tag).getNotificationIdHash()); // We xor the tag and hashcode together before compressing the range. The order of // operations doesn't matter if id is small. @@ -89,19 +89,19 @@ public class NotificationRecordLoggerTest extends UiServiceTestCase { getNotificationRecordPair(1, tag).getNotificationIdHash()); // But it does matter for an id with more 1 bits than fit in the small hash. assertEquals( - NotificationRecordLogger.smallHash(-1 ^ tag.hashCode()), + SmallHash.hash(-1 ^ tag.hashCode()), getNotificationRecordPair(-1, tag).getNotificationIdHash()); assertNotEquals(-1 ^ hash, - NotificationRecordLogger.smallHash(-1 ^ tag.hashCode())); + SmallHash.hash(-1 ^ tag.hashCode())); } @Test public void testGetChannelIdHash() { assertEquals( - NotificationRecordLogger.smallHash(CHANNEL_ID.hashCode()), + SmallHash.hash(CHANNEL_ID.hashCode()), getNotificationRecordPair(0, null).getChannelIdHash()); assertNotEquals( - NotificationRecordLogger.smallHash(CHANNEL_ID.hashCode()), + SmallHash.hash(CHANNEL_ID.hashCode()), CHANNEL_ID.hashCode()); } @@ -113,7 +113,7 @@ public class NotificationRecordLoggerTest extends UiServiceTestCase { final String group = "someGroup"; p.r.setOverrideGroupKey(group); assertEquals( - NotificationRecordLogger.smallHash(group.hashCode()), + SmallHash.hash(group.hashCode()), p.getGroupIdHash()); } } diff --git a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java index 19ff683a46a1..3281c3f4cfb9 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java @@ -47,6 +47,7 @@ import android.content.pm.UserInfo; import android.os.Looper; import android.os.UserHandle; import android.os.UserManager; +import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableContext; @@ -153,7 +154,7 @@ public class RoleObserverTest extends UiServiceTestCase { mock(DevicePolicyManagerInternal.class), mock(IUriGrantsManager.class), mock(UriGrantsManagerInternal.class), mock(AppOpsManager.class), mUm, mock(NotificationHistoryManager.class), - mock(StatsManager.class)); + mock(StatsManager.class), mock(TelephonyManager.class)); } catch (SecurityException e) { if (!e.getMessage().contains("Permission Denial: not allowed to send broadcast")) { throw e; diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java index 4f84ee17b087..05604b2b9aeb 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java @@ -69,11 +69,11 @@ public class ActivityDisplayTests extends ActivityTestsBase { stack.moveToFront("moveStackToFront"); // After moving the stack to front, the previous focused should be the last focused. assertTrue(stack.isFocusedStackOnDisplay()); - assertEquals(prevFocusedStack, display.getLastFocusedStack()); + assertEquals(prevFocusedStack, display.mTaskContainers.getLastFocusedStack()); stack.moveToBack("moveStackToBack", null /* task */); // After moving the stack to back, the stack should be the last focused. - assertEquals(stack, display.getLastFocusedStack()); + assertEquals(stack, display.mTaskContainers.getLastFocusedStack()); } /** @@ -225,7 +225,7 @@ public class ActivityDisplayTests extends ActivityTestsBase { final ActivityRecord activity = new ActivityBuilder(mService).setCreateTask(true) .setStack(alwaysOnTopStack).build(); alwaysOnTopStack.setAlwaysOnTop(true); - display.positionStackAtTop(alwaysOnTopStack, false /* includingParents */); + display.mTaskContainers.positionStackAtTop(alwaysOnTopStack, false /* includingParents */); assertTrue(alwaysOnTopStack.isAlwaysOnTop()); // Ensure always on top state is synced to the children of the stack. assertTrue(alwaysOnTopStack.getTopNonFinishingActivity().isAlwaysOnTop()); @@ -239,7 +239,8 @@ public class ActivityDisplayTests extends ActivityTestsBase { final ActivityStack anotherAlwaysOnTopStack = display.createStack( WINDOWING_MODE_FREEFORM, ACTIVITY_TYPE_STANDARD, true /* onTop */); anotherAlwaysOnTopStack.setAlwaysOnTop(true); - display.positionStackAtTop(anotherAlwaysOnTopStack, false /* includingParents */); + display.mTaskContainers.positionStackAtTop(anotherAlwaysOnTopStack, + false /* includingParents */); assertTrue(anotherAlwaysOnTopStack.isAlwaysOnTop()); int topPosition = display.getStackCount() - 1; // Ensure the new alwaysOnTop stack is put below the pinned stack, but on top of the @@ -255,7 +256,8 @@ public class ActivityDisplayTests extends ActivityTestsBase { assertEquals(nonAlwaysOnTopStack, display.getStackAt(topPosition - 3)); anotherAlwaysOnTopStack.setAlwaysOnTop(false); - display.positionStackAtTop(anotherAlwaysOnTopStack, false /* includingParents */); + display.mTaskContainers.positionStackAtTop(anotherAlwaysOnTopStack, + false /* includingParents */); assertFalse(anotherAlwaysOnTopStack.isAlwaysOnTop()); // Ensure, when always on top is turned off for a stack, the stack is put just below all // other always on top stacks. @@ -300,7 +302,7 @@ public class ActivityDisplayTests extends ActivityTestsBase { // Reordering stacks while removing stacks. doAnswer(invocation -> { - display.positionStackAtTop(stack3, false); + display.mTaskContainers.positionStackAtTop(stack3, false); return true; }).when(mSupervisor).removeTask(eq(task4), anyBoolean(), anyBoolean(), any()); diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java index 52fc3de89451..71ca8781b7f9 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java @@ -27,6 +27,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECOND import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.content.pm.ActivityInfo.FLAG_RESUME_WHILE_PAUSING; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.doCallRealMethod; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock; @@ -56,7 +57,6 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; import android.app.ActivityManager; import android.app.IApplicationThread; @@ -613,7 +613,7 @@ public class ActivityStackTests extends ActivityTestsBase { // Ensure that we don't move the home stack if it is already behind the top fullscreen stack int homeStackIndex = mDefaultDisplay.getIndexOf(homeStack); assertEquals(fullscreenStack, mDefaultDisplay.getStackAbove(homeStack)); - mDefaultDisplay.moveStackBehindBottomMostVisibleStack(homeStack); + mDefaultDisplay.mTaskContainers.moveStackBehindBottomMostVisibleStack(homeStack); assertEquals(homeStackIndex, mDefaultDisplay.getIndexOf(homeStack)); } @@ -632,7 +632,7 @@ public class ActivityStackTests extends ActivityTestsBase { // Ensure that we don't move the home stack if it is already behind the top fullscreen stack int homeStackIndex = mDefaultDisplay.getIndexOf(homeStack); assertEquals(fullscreenStack, mDefaultDisplay.getStackAbove(homeStack)); - mDefaultDisplay.moveStackBehindBottomMostVisibleStack(homeStack); + mDefaultDisplay.mTaskContainers.moveStackBehindBottomMostVisibleStack(homeStack); assertEquals(homeStackIndex, mDefaultDisplay.getIndexOf(homeStack)); } @@ -651,7 +651,7 @@ public class ActivityStackTests extends ActivityTestsBase { // Ensure we don't move the home stack if it is already on top int homeStackIndex = mDefaultDisplay.getIndexOf(homeStack); assertNull(mDefaultDisplay.getStackAbove(homeStack)); - mDefaultDisplay.moveStackBehindBottomMostVisibleStack(homeStack); + mDefaultDisplay.mTaskContainers.moveStackBehindBottomMostVisibleStack(homeStack); assertEquals(homeStackIndex, mDefaultDisplay.getIndexOf(homeStack)); } @@ -677,7 +677,7 @@ public class ActivityStackTests extends ActivityTestsBase { // Ensure that we move the home stack behind the bottom most fullscreen stack, ignoring the // pinned stack assertEquals(fullscreenStack1, mDefaultDisplay.getStackAbove(homeStack)); - mDefaultDisplay.moveStackBehindBottomMostVisibleStack(homeStack); + mDefaultDisplay.mTaskContainers.moveStackBehindBottomMostVisibleStack(homeStack); assertEquals(fullscreenStack2, mDefaultDisplay.getStackAbove(homeStack)); } @@ -702,7 +702,7 @@ public class ActivityStackTests extends ActivityTestsBase { // Ensure that we move the home stack behind the bottom most non-translucent fullscreen // stack assertEquals(fullscreenStack1, mDefaultDisplay.getStackAbove(homeStack)); - mDefaultDisplay.moveStackBehindBottomMostVisibleStack(homeStack); + mDefaultDisplay.mTaskContainers.moveStackBehindBottomMostVisibleStack(homeStack); assertEquals(fullscreenStack1, mDefaultDisplay.getStackAbove(homeStack)); } @@ -725,7 +725,7 @@ public class ActivityStackTests extends ActivityTestsBase { // Ensure we don't move the home stack behind itself int homeStackIndex = mDefaultDisplay.getIndexOf(homeStack); - mDefaultDisplay.moveStackBehindStack(homeStack, homeStack); + mDefaultDisplay.mTaskContainers.moveStackBehindStack(homeStack, homeStack); assertEquals(homeStackIndex, mDefaultDisplay.getIndexOf(homeStack)); } @@ -748,13 +748,13 @@ public class ActivityStackTests extends ActivityTestsBase { final ActivityStack homeStack = createStackForShouldBeVisibleTest(mDefaultDisplay, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, true /* onTop */); - mDefaultDisplay.moveStackBehindStack(homeStack, fullscreenStack1); + mDefaultDisplay.mTaskContainers.moveStackBehindStack(homeStack, fullscreenStack1); assertEquals(fullscreenStack1, mDefaultDisplay.getStackAbove(homeStack)); - mDefaultDisplay.moveStackBehindStack(homeStack, fullscreenStack2); + mDefaultDisplay.mTaskContainers.moveStackBehindStack(homeStack, fullscreenStack2); assertEquals(fullscreenStack2, mDefaultDisplay.getStackAbove(homeStack)); - mDefaultDisplay.moveStackBehindStack(homeStack, fullscreenStack4); + mDefaultDisplay.mTaskContainers.moveStackBehindStack(homeStack, fullscreenStack4); assertEquals(fullscreenStack4, mDefaultDisplay.getStackAbove(homeStack)); - mDefaultDisplay.moveStackBehindStack(homeStack, fullscreenStack2); + mDefaultDisplay.mTaskContainers.moveStackBehindStack(homeStack, fullscreenStack2); assertEquals(fullscreenStack2, mDefaultDisplay.getStackAbove(homeStack)); } @@ -845,9 +845,10 @@ public class ActivityStackTests extends ActivityTestsBase { // Home stack and activity are created in ActivityTestsBase#setupActivityManagerService stack = mDefaultDisplay.getStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME); if (onTop) { - mDefaultDisplay.positionStackAtTop(stack, false /* includingParents */); + mDefaultDisplay.mTaskContainers.positionStackAtTop(stack, + false /* includingParents */); } else { - mDefaultDisplay.positionStackAtBottom(stack); + mDefaultDisplay.mTaskContainers.positionStackAtBottom(stack); } } else { stack = new StackBuilder(mRootWindowContainer) @@ -1090,7 +1091,7 @@ public class ActivityStackTests extends ActivityTestsBase { mDefaultDisplay.registerStackOrderChangedListener(listener); try { mStack.mReparenting = true; - mDefaultDisplay.addStack(mStack, 0); + mDefaultDisplay.mTaskContainers.addStack(mStack, 0); } finally { mDefaultDisplay.unregisterStackOrderChangedListener(listener); } @@ -1105,7 +1106,7 @@ public class ActivityStackTests extends ActivityTestsBase { mDefaultDisplay, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); mDefaultDisplay.registerStackOrderChangedListener(listener); - mDefaultDisplay.positionStackAtBottom(fullscreenStack1); + mDefaultDisplay.mTaskContainers.positionStackAtBottom(fullscreenStack1); } finally { mDefaultDisplay.unregisterStackOrderChangedListener(listener); } @@ -1157,6 +1158,34 @@ public class ActivityStackTests extends ActivityTestsBase { } @Test + public void testCheckBehindFullscreenActivity() { + final ActivityRecord bottomActivity = + new ActivityBuilder(mService).setStack(mStack).setTask(mTask).build(); + final ActivityRecord topActivity = + new ActivityBuilder(mService).setStack(mStack).setTask(mTask).build(); + doReturn(true).when(mStack).shouldBeVisible(any()); + assertTrue(mStack.checkBehindFullscreenActivity(bottomActivity, + null /* handleBehindFullscreenActivity */)); + assertFalse(mStack.checkBehindFullscreenActivity(topActivity, + null /* handleBehindFullscreenActivity */)); + + doReturn(false).when(topActivity).occludesParent(); + assertFalse(mStack.checkBehindFullscreenActivity(bottomActivity, + null /* handleBehindFullscreenActivity */)); + assertFalse(mStack.checkBehindFullscreenActivity(topActivity, + null /* handleBehindFullscreenActivity */)); + + final ActivityRecord finishingActivity = + new ActivityBuilder(mService).setStack(mStack).setTask(mTask).build(); + finishingActivity.finishing = true; + doCallRealMethod().when(finishingActivity).occludesParent(); + assertFalse(mStack.checkBehindFullscreenActivity(bottomActivity, + null /* handleBehindFullscreenActivity */)); + assertFalse(mStack.checkBehindFullscreenActivity(topActivity, + null /* handleBehindFullscreenActivity */)); + } + + @Test public void testClearUnknownAppVisibilityBehindFullscreenActivity() { final UnknownAppVisibilityController unknownAppVisibilityController = mDefaultDisplay.mDisplayContent.mUnknownAppVisibilityController; diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java index 716369d49036..9240b2222cd6 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java @@ -462,9 +462,11 @@ class ActivityTestsBase extends SystemServiceTestsBase { } ActivityStack build() { - final int stackId = mStackId >= 0 ? mStackId : mDisplay.getNextStackId(); - final ActivityStack stack = mDisplay.createStackUnchecked(mWindowingMode, - mActivityType, stackId, mOnTop, mInfo, mIntent, false /* createdByOrganizer */); + final int stackId = mStackId >= 0 ? mStackId + : mDisplay.mTaskContainers.getNextStackId(); + final ActivityStack stack = mDisplay.mTaskContainers.createStackUnchecked( + mWindowingMode, mActivityType, stackId, mOnTop, mInfo, mIntent, + false /* createdByOrganizer */); final ActivityStackSupervisor supervisor = mRootWindowContainer.mStackSupervisor; if (mCreateActivity) { diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java index c71d8194f889..08e492a7b0ff 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java @@ -28,7 +28,6 @@ import static android.view.WindowManager.TRANSIT_KEYGUARD_UNOCCLUDE; import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; -import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyBoolean; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; @@ -38,7 +37,6 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; -import android.graphics.Rect; import android.os.IBinder; import android.os.RemoteException; import android.platform.test.annotations.Presubmit; @@ -70,7 +68,7 @@ public class AppTransitionTests extends WindowTestsBase { @Before public void setUp() throws Exception { - doNothing().when(mWm.mRoot).performSurfacePlacement(anyBoolean()); + doNothing().when(mWm.mRoot).performSurfacePlacement(); mDc = mWm.getDefaultDisplayContentLocked(); } diff --git a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java index 6cc57f4dbf8c..cf3cfecbf65e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java @@ -174,7 +174,7 @@ public class AppWindowTokenTests extends WindowTestsBase { null /* freezeThisOneIfNeeded */, false /* forceUpdate */); // In this test, DC will not get config update. Set the waiting flag to false. mDisplayContent.mWaitingForConfig = false; - mWm.mRoot.performSurfacePlacement(false /* recoveringMemory */); + mWm.mRoot.performSurfacePlacement(); assertEquals(SCREEN_ORIENTATION_REVERSE_LANDSCAPE, mDisplayContent.getLastOrientation()); assertTrue(appWindow.mResizeReported); appWindow.removeImmediately(); diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaProviderTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaProviderTest.java index 31206315618e..32d7a0773b5e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaProviderTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaProviderTest.java @@ -78,7 +78,7 @@ public class DisplayAreaProviderTest { @Override public DisplayAreaPolicy instantiate(WindowManagerService wmService, DisplayContent content, DisplayArea.Root root, DisplayArea<? extends WindowContainer> imeContainer, - DisplayContent.TaskContainers taskContainers) { + TaskContainers taskContainers) { throw new RuntimeException("test stub"); } } diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java index 218c8169e7e6..5b96c4372abc 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java @@ -1088,7 +1088,7 @@ public class DisplayContentTests extends WindowTestsBase { } assertNull(defaultDisplay.getRootHomeTask()); - assertNotNull(defaultDisplay.getOrCreateRootHomeTask()); + assertNotNull(defaultDisplay.mTaskContainers.getOrCreateRootHomeTask()); } @Test @@ -1104,7 +1104,7 @@ public class DisplayContentTests extends WindowTestsBase { } assertNull(display.getRootHomeTask()); - assertNotNull(display.getOrCreateRootHomeTask()); + assertNotNull(display.mTaskContainers.getOrCreateRootHomeTask()); } @Test @@ -1113,7 +1113,7 @@ public class DisplayContentTests extends WindowTestsBase { doReturn(false).when(display).supportsSystemDecorations(); assertNull(display.getRootHomeTask()); - assertNull(display.getOrCreateRootHomeTask()); + assertNull(display.mTaskContainers.getOrCreateRootHomeTask()); } @Test @@ -1122,7 +1122,7 @@ public class DisplayContentTests extends WindowTestsBase { doReturn(true).when(display).isUntrustedVirtualDisplay(); assertNull(display.getRootHomeTask()); - assertNull(display.getOrCreateRootHomeTask()); + assertNull(display.mTaskContainers.getOrCreateRootHomeTask()); } private boolean isOptionsPanelAtRight(int displayId) { diff --git a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java index 5e30477e1e3f..b21ea796396c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java @@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMAR import static android.view.InsetsState.ITYPE_NAVIGATION_BAR; import static android.view.InsetsState.ITYPE_STATUS_BAR; import static android.view.ViewRootImpl.NEW_INSETS_MODE_FULL; +import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_SHOW_STATUS_BAR; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; @@ -29,13 +30,18 @@ import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManager.LayoutParams.TYPE_NOTIFICATION_SHADE; import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; import android.platform.test.annotations.Presubmit; import android.util.IntArray; @@ -164,45 +170,51 @@ public class InsetsPolicyTest extends WindowTestsBase { @Test public void testShowTransientBars_bothCanBeTransient_appGetsBothFakeControls() { - addWindow(TYPE_STATUS_BAR, "statusBar") + addNonFocusableWindow(TYPE_STATUS_BAR, "statusBar") .getControllableInsetProvider().getSource().setVisible(false); - addWindow(TYPE_NAVIGATION_BAR, "navBar") + addNonFocusableWindow(TYPE_NAVIGATION_BAR, "navBar") .getControllableInsetProvider().getSource().setVisible(false); - final WindowState app = addWindow(TYPE_APPLICATION, "app"); final InsetsPolicy policy = spy(mDisplayContent.getInsetsPolicy()); - doNothing().when(policy).startAnimation(anyBoolean(), any()); - policy.updateBarControlTarget(app); + + doAnswer(invocation -> { + ((InsetsState) invocation.getArgument(2)).setSourceVisible(ITYPE_STATUS_BAR, true); + ((InsetsState) invocation.getArgument(2)).setSourceVisible(ITYPE_NAVIGATION_BAR, true); + return null; + }).when(policy).startAnimation(anyBoolean(), any(), any()); + + policy.updateBarControlTarget(mAppWindow); policy.showTransient( IntArray.wrap(new int[]{ITYPE_STATUS_BAR, ITYPE_NAVIGATION_BAR})); final InsetsSourceControl[] controls = - mDisplayContent.getInsetsStateController().getControlsForDispatch(app); + mDisplayContent.getInsetsStateController().getControlsForDispatch(mAppWindow); // The app must get both fake controls. assertEquals(2, controls.length); for (int i = controls.length - 1; i >= 0; i--) { assertNull(controls[i].getLeash()); } + + assertTrue(mDisplayContent.getInsetsStateController().getRawInsetsState() + .getSource(ITYPE_STATUS_BAR).isVisible()); + assertTrue(mDisplayContent.getInsetsStateController().getRawInsetsState() + .getSource(ITYPE_NAVIGATION_BAR).isVisible()); } @Test public void testShowTransientBars_statusBarCanBeTransient_appGetsStatusBarFakeControl() { - // Adding app window before setting source visibility is to prevent the visibility from - // being cleared by InsetsSourceProvider.updateVisibility. - final WindowState app = addWindow(TYPE_APPLICATION, "app"); - - addWindow(TYPE_STATUS_BAR, "statusBar") + addNonFocusableWindow(TYPE_STATUS_BAR, "statusBar") .getControllableInsetProvider().getSource().setVisible(false); - addWindow(TYPE_NAVIGATION_BAR, "navBar") + addNonFocusableWindow(TYPE_NAVIGATION_BAR, "navBar") .getControllableInsetProvider().getSource().setVisible(true); final InsetsPolicy policy = spy(mDisplayContent.getInsetsPolicy()); - doNothing().when(policy).startAnimation(anyBoolean(), any()); - policy.updateBarControlTarget(app); + doNothing().when(policy).startAnimation(anyBoolean(), any(), any()); + policy.updateBarControlTarget(mAppWindow); policy.showTransient( IntArray.wrap(new int[]{ITYPE_STATUS_BAR, ITYPE_NAVIGATION_BAR})); final InsetsSourceControl[] controls = - mDisplayContent.getInsetsStateController().getControlsForDispatch(app); + mDisplayContent.getInsetsStateController().getControlsForDispatch(mAppWindow); // The app must get the fake control of the status bar, and must get the real control of the // navigation bar. @@ -219,19 +231,18 @@ public class InsetsPolicyTest extends WindowTestsBase { @Test public void testAbortTransientBars_bothCanBeAborted_appGetsBothRealControls() { - addWindow(TYPE_STATUS_BAR, "statusBar") + addNonFocusableWindow(TYPE_STATUS_BAR, "statusBar") .getControllableInsetProvider().getSource().setVisible(false); - addWindow(TYPE_NAVIGATION_BAR, "navBar") + addNonFocusableWindow(TYPE_NAVIGATION_BAR, "navBar") .getControllableInsetProvider().getSource().setVisible(false); - final WindowState app = addWindow(TYPE_APPLICATION, "app"); final InsetsPolicy policy = spy(mDisplayContent.getInsetsPolicy()); - doNothing().when(policy).startAnimation(anyBoolean(), any()); - policy.updateBarControlTarget(app); + doNothing().when(policy).startAnimation(anyBoolean(), any(), any()); + policy.updateBarControlTarget(mAppWindow); policy.showTransient( IntArray.wrap(new int[]{ITYPE_STATUS_BAR, ITYPE_NAVIGATION_BAR})); InsetsSourceControl[] controls = - mDisplayContent.getInsetsStateController().getControlsForDispatch(app); + mDisplayContent.getInsetsStateController().getControlsForDispatch(mAppWindow); // The app must get both fake controls. assertEquals(2, controls.length); @@ -239,12 +250,12 @@ public class InsetsPolicyTest extends WindowTestsBase { assertNull(controls[i].getLeash()); } - final InsetsState state = policy.getInsetsForDispatch(app); + final InsetsState state = policy.getInsetsForDispatch(mAppWindow); state.setSourceVisible(ITYPE_STATUS_BAR, true); state.setSourceVisible(ITYPE_NAVIGATION_BAR, true); - policy.onInsetsModified(app, state); + policy.onInsetsModified(mAppWindow, state); - controls = mDisplayContent.getInsetsStateController().getControlsForDispatch(app); + controls = mDisplayContent.getInsetsStateController().getControlsForDispatch(mAppWindow); // The app must get both real controls. assertEquals(2, controls.length); @@ -253,6 +264,33 @@ public class InsetsPolicyTest extends WindowTestsBase { } } + @Test + public void testShowTransientBars_abortsWhenControlTargetChanges() { + addNonFocusableWindow(TYPE_STATUS_BAR, "statusBar") + .getControllableInsetProvider().getSource().setVisible(false); + addNonFocusableWindow(TYPE_NAVIGATION_BAR, "navBar") + .getControllableInsetProvider().getSource().setVisible(false); + final WindowState app = addWindow(TYPE_APPLICATION, "app"); + final WindowState app2 = addWindow(TYPE_APPLICATION, "app"); + + final InsetsPolicy policy = spy(mDisplayContent.getInsetsPolicy()); + doNothing().when(policy).startAnimation(anyBoolean(), any(), any()); + policy.updateBarControlTarget(app); + policy.showTransient( + IntArray.wrap(new int[]{ITYPE_STATUS_BAR, ITYPE_NAVIGATION_BAR})); + final InsetsSourceControl[] controls = + mDisplayContent.getInsetsStateController().getControlsForDispatch(app); + policy.updateBarControlTarget(app2); + assertFalse(policy.isTransient(ITYPE_STATUS_BAR)); + assertFalse(policy.isTransient(ITYPE_NAVIGATION_BAR)); + } + + private WindowState addNonFocusableWindow(int type, String name) { + WindowState win = addWindow(type, name); + win.mAttrs.flags |= FLAG_NOT_FOCUSABLE; + return win; + } + private WindowState addWindow(int type, String name) { final WindowState win = createWindow(null, type, name); mDisplayContent.getDisplayPolicy().addWindowLw(win, win.mAttrs); diff --git a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java index 8f3ff52b8018..ae467c0c811d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java @@ -120,7 +120,7 @@ public class LaunchParamsPersisterTests extends ActivityTestsBase { .build(); mTestTask.mUserId = TEST_USER_ID; mTestTask.mLastNonFullscreenBounds = TEST_BOUNDS; - mTestTask.hasBeenVisible = true; + mTestTask.setHasBeenVisible(true); mTaskWithDifferentComponent = new TaskBuilder(mSupervisor) .setComponent(ALTERNATIVE_COMPONENT).build(); @@ -346,7 +346,7 @@ public class LaunchParamsPersisterTests extends ActivityTestsBase { .build(); anotherTaskOfTheSameUser.setWindowingMode(WINDOWING_MODE_FREEFORM); anotherTaskOfTheSameUser.setBounds(200, 300, 400, 500); - anotherTaskOfTheSameUser.hasBeenVisible = true; + anotherTaskOfTheSameUser.setHasBeenVisible(true); mTarget.saveTask(anotherTaskOfTheSameUser); stack = mTestDisplay.createStack(TEST_WINDOWING_MODE, @@ -358,7 +358,7 @@ public class LaunchParamsPersisterTests extends ActivityTestsBase { .build(); anotherTaskOfDifferentUser.setWindowingMode(WINDOWING_MODE_FREEFORM); anotherTaskOfDifferentUser.setBounds(300, 400, 500, 600); - anotherTaskOfDifferentUser.hasBeenVisible = true; + anotherTaskOfDifferentUser.setHasBeenVisible(true); mTarget.saveTask(anotherTaskOfDifferentUser); mTarget.onCleanupUser(TEST_USER_ID); diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java index 66566bc5dff5..8846fb8e0962 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java @@ -21,6 +21,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS; @@ -28,6 +29,7 @@ import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.Display.TYPE_VIRTUAL; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; @@ -54,6 +56,7 @@ import static java.lang.Integer.MAX_VALUE; import android.app.ActivityManager.RecentTaskInfo; import android.app.ActivityManager.RunningTaskInfo; +import android.app.ActivityOptions; import android.app.ActivityTaskManager; import android.app.WindowConfiguration; import android.content.ComponentName; @@ -681,24 +684,19 @@ public class RecentTasksTest extends ActivityTestsBase { * Tests that tasks on singleTaskDisplay are not visible and not trimmed/removed. */ @Test - public void testVisibleTasks_singleTaskDisplay() { + public void testVisibleTasks_alwaysOnTop() { mRecentTasks.setOnlyTestVisibleRange(); mRecentTasks.setParameters(-1 /* min */, 3 /* max */, -1 /* ms */); - final DisplayContent singleTaskDisplay = - addNewDisplayContentAt(DisplayContent.POSITION_TOP); - singleTaskDisplay.setDisplayToSingleTaskInstance(); - ActivityStack singleTaskStack = singleTaskDisplay.createStack( - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); + final DisplayContent display = mRootWindowContainer.getDefaultDisplay(); + final Task alwaysOnTopTask = display.createStack(WINDOWING_MODE_MULTI_WINDOW, + ACTIVITY_TYPE_STANDARD, true /* onTop */); + alwaysOnTopTask.setAlwaysOnTop(true); - Task excludedTask1 = createTaskBuilder(".ExcludedTask1") - .setStack(singleTaskStack) - .build(); + assertFalse("Always on top tasks should not be visible recents", + mRecentTasks.isVisibleRecentTask(alwaysOnTopTask)); - assertFalse("Tasks on singleTaskDisplay should not be visible recents", - mRecentTasks.isVisibleRecentTask(excludedTask1)); - - mRecentTasks.add(excludedTask1); + mRecentTasks.add(alwaysOnTopTask); // Add N+1 visible tasks. mRecentTasks.add(mTasks.get(0)); @@ -1115,7 +1113,6 @@ public class RecentTasksTest extends ActivityTestsBase { () -> mService.moveTaskToStack(0, INVALID_STACK_ID, true)); assertSecurityException(expectCallable, () -> mService.setTaskWindowingModeSplitScreenPrimary(0, true)); - assertSecurityException(expectCallable, () -> mService.dismissPip(true, 0)); assertSecurityException(expectCallable, () -> mService.moveTopActivityToPinnedStack(INVALID_STACK_ID, new Rect())); assertSecurityException(expectCallable, () -> mService.getAllStackInfos()); @@ -1366,12 +1363,12 @@ public class RecentTasksTest extends ActivityTestsBase { public boolean mLastAllowed; @Override - void getTasks(int maxNum, List<RunningTaskInfo> list, int ignoreActivityType, - int ignoreWindowingMode, RootWindowContainer root, - int callingUid, boolean allowed, boolean crossUser, ArraySet<Integer> profileIds) { + void getTasks(int maxNum, List<RunningTaskInfo> list, boolean filterOnlyVisibleRecents, + RootWindowContainer root, int callingUid, boolean allowed, boolean crossUser, + ArraySet<Integer> profileIds) { mLastAllowed = allowed; - super.getTasks(maxNum, list, ignoreActivityType, ignoreWindowingMode, root, - callingUid, allowed, crossUser, profileIds); + super.getTasks(maxNum, list, filterOnlyVisibleRecents, root, callingUid, allowed, + crossUser, profileIds); } } } diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java index 406affc27b0a..da07baca3ce1 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java @@ -100,7 +100,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - doNothing().when(mWm.mRoot).performSurfacePlacement(anyBoolean()); + doNothing().when(mWm.mRoot).performSurfacePlacement(); when(mMockRunner.asBinder()).thenReturn(new Binder()); mDefaultDisplay = mWm.mRoot.getDefaultDisplay(); mController = spy(new RecentsAnimationController(mWm, mMockRunner, mAnimationCallbacks, @@ -403,11 +403,11 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { wallpapers.get(0).getConfiguration().orientation); // Wallpaper's transform state is controlled by home, so the invocation should be no-op. - wallpaperWindowToken.clearFixedRotationTransform(); + wallpaperWindowToken.finishFixedRotationTransform(); assertTrue(wallpaperWindowToken.hasFixedRotationTransform()); // Wallpaper's transform state should be cleared with home. - homeActivity.clearFixedRotationTransform(); + homeActivity.finishFixedRotationTransform(); assertFalse(wallpaperWindowToken.hasFixedRotationTransform()); } diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java index b3a253029ed0..cfb5bc7d7759 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java @@ -119,7 +119,7 @@ public class RecentsAnimationTest extends ActivityTestsBase { final DisplayContent defaultDisplay = mRootWindowContainer.getDefaultDisplay(); final ActivityStack homeStack = defaultDisplay.getStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME); - defaultDisplay.positionStackAtTop(homeStack, false /* includingParents */); + defaultDisplay.mTaskContainers.positionStackAtTop(homeStack, false /* includingParents */); ActivityRecord topRunningHomeActivity = homeStack.topRunningActivity(); if (topRunningHomeActivity == null) { topRunningHomeActivity = new ActivityBuilder(mService) diff --git a/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java index e841e434ea82..dc354a73b624 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java @@ -325,7 +325,8 @@ public class RootActivityContainerTests extends ActivityTestsBase { mSupervisor.findTaskToMoveToFront(targetTask, 0, ActivityOptions.makeBasic(), reason, false); - verify(display).moveHomeStackToFront(contains(reason)); + final TaskContainers taskContainers = display.mTaskContainers; + verify(taskContainers).moveHomeStackToFront(contains(reason)); } /** @@ -352,7 +353,8 @@ public class RootActivityContainerTests extends ActivityTestsBase { mSupervisor.findTaskToMoveToFront(targetTask, 0, ActivityOptions.makeBasic(), reason, false); - verify(display, never()).moveHomeStackToFront(contains(reason)); + final TaskContainers taskContainers = display.mTaskContainers; + verify(taskContainers, never()).moveHomeStackToFront(contains(reason)); } /** @@ -367,7 +369,7 @@ public class RootActivityContainerTests extends ActivityTestsBase { ACTIVITY_TYPE_STANDARD, false /* onTop */)); final Task task = new TaskBuilder(mSupervisor).setStack(targetStack).build(); final ActivityRecord activity = new ActivityBuilder(mService).setTask(task).build(); - display.positionStackAtBottom(targetStack); + display.mTaskContainers.positionStackAtBottom(targetStack); // Assume the stack is not at the topmost position (e.g. behind always-on-top stacks) but it // is the current top focused stack. @@ -470,7 +472,7 @@ public class RootActivityContainerTests extends ActivityTestsBase { final Task task = new TaskBuilder(mSupervisor).setStack(targetStack).build(); final ActivityRecord activity = new ActivityBuilder(mService).setTask(task).build(); activity.setState(ActivityState.RESUMED, "test"); - display.positionStackAtBottom(targetStack); + display.mTaskContainers.positionStackAtBottom(targetStack); // Assume the stack is at the topmost position assertFalse(targetStack.isTopStackOnDisplay()); diff --git a/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java index 0d5565428bf2..d6a67abc9e76 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java @@ -16,9 +16,6 @@ package com.android.server.wm; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; -import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; - import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; @@ -82,9 +79,8 @@ public class RunningTasksTest extends ActivityTestsBase { // collected from all tasks across all the stacks final int numFetchTasks = 5; ArrayList<RunningTaskInfo> tasks = new ArrayList<>(); - mRunningTasks.getTasks(5, tasks, ACTIVITY_TYPE_UNDEFINED, WINDOWING_MODE_UNDEFINED, - mRootWindowContainer, -1 /* callingUid */, true /* allowed */, - true /*crossUser */, PROFILE_IDS); + mRunningTasks.getTasks(5, tasks, false /* filterOnlyVisibleRecents */, mRootWindowContainer, + -1 /* callingUid */, true /* allowed */, true /*crossUser */, PROFILE_IDS); assertThat(tasks).hasSize(numFetchTasks); for (int i = 0; i < numFetchTasks; i++) { assertEquals(numTasks - i - 1, tasks.get(i).id); @@ -93,9 +89,9 @@ public class RunningTasksTest extends ActivityTestsBase { // Ensure that requesting more than the total number of tasks only returns the subset // and does not crash tasks.clear(); - mRunningTasks.getTasks(100, tasks, ACTIVITY_TYPE_UNDEFINED, WINDOWING_MODE_UNDEFINED, - mRootWindowContainer, -1 /* callingUid */, true /* allowed */, - true /* crossUser */, PROFILE_IDS); + mRunningTasks.getTasks(100, tasks, false /* filterOnlyVisibleRecents */, + mRootWindowContainer, -1 /* callingUid */, true /* allowed */, true /* crossUser */, + PROFILE_IDS); assertThat(tasks).hasSize(numTasks); for (int i = 0; i < numTasks; i++) { assertEquals(numTasks - i - 1, tasks.get(i).id); @@ -119,9 +115,9 @@ public class RunningTasksTest extends ActivityTestsBase { final int numFetchTasks = 5; final ArrayList<RunningTaskInfo> tasks = new ArrayList<>(); - mRunningTasks.getTasks(numFetchTasks, tasks, ACTIVITY_TYPE_UNDEFINED, - WINDOWING_MODE_UNDEFINED, mRootWindowContainer, -1 /* callingUid */, - true /* allowed */, true /*crossUser */, PROFILE_IDS); + mRunningTasks.getTasks(numFetchTasks, tasks, false /* filterOnlyVisibleRecents */, + mRootWindowContainer, -1 /* callingUid */, true /* allowed */, true /*crossUser */, + PROFILE_IDS); assertThat(tasks).hasSize(numFetchTasks); for (int i = 0; i < tasks.size(); i++) { final Bundle extras = tasks.get(i).baseIntent.getExtras(); diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java index edf81ea32ad3..893a14541c48 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java @@ -481,7 +481,7 @@ public class SizeCompatTests extends ActivityTestsBase { // The letterbox needs a main window to layout. addWindowToActivity(mActivity); // Compute the frames of the window and invoke {@link ActivityRecord#layoutLetterbox}. - mActivity.mRootWindowContainer.performSurfacePlacement(false /* recoveringMemory */); + mActivity.mRootWindowContainer.performSurfacePlacement(); // The letterbox insets should be [350, 0 - 350, 0]. assertEquals(new Rect(mActivity.getBounds().left, 0, dh - mActivity.getBounds().right, 0), mActivity.getLetterboxInsets()); diff --git a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java index 091f493b4687..8c8d3f1242cb 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java +++ b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java @@ -316,7 +316,9 @@ public class SystemServicesTestRule implements TestRule { // that the default display is in fullscreen mode. display.setDisplayWindowingMode(WINDOWING_MODE_FULLSCREEN); spyOn(display); - final ActivityStack homeStack = display.getStack( + final TaskContainers taskContainer = display.mTaskContainers; + spyOn(taskContainer); + final ActivityStack homeStack = taskContainer.getStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME); spyOn(homeStack); } diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskOrganizerTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskOrganizerTests.java index ed635ce3f69e..4cc84a65fb29 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskOrganizerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskOrganizerTests.java @@ -96,10 +96,28 @@ public class TaskOrganizerTests extends WindowTestsBase { return registerMockOrganizer(WINDOWING_MODE_MULTI_WINDOW); } + Task createTask(ActivityStack stack, boolean fakeDraw) { + final Task task = createTaskInStack(stack, 0); + + if (fakeDraw) { + task.setHasBeenVisible(true); + } + return task; + } + + Task createTask(ActivityStack stack) { + // Fake draw notifications for most of our tests. + return createTask(stack, true); + } + + ActivityStack createStack() { + return createTaskStackOnDisplay(mDisplayContent); + } + @Test public void testAppearVanish() throws RemoteException { - final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stack, 0 /* userId */); + final ActivityStack stack = createStack(); + final Task task = createTask(stack); final ITaskOrganizer organizer = registerMockOrganizer(); task.setTaskOrganizer(organizer); @@ -110,9 +128,42 @@ public class TaskOrganizerTests extends WindowTestsBase { } @Test + public void testAppearWaitsForVisibility() throws RemoteException { + final ActivityStack stack = createStack(); + final Task task = createTask(stack, false); + final ITaskOrganizer organizer = registerMockOrganizer(); + + task.setTaskOrganizer(organizer); + + verify(organizer, never()).onTaskAppeared(any()); + task.setHasBeenVisible(true); + assertTrue(stack.getHasBeenVisible()); + + verify(organizer).onTaskAppeared(any()); + + task.removeImmediately(); + verify(organizer).onTaskVanished(any()); + } + + @Test + public void testNoVanishedIfNoAppear() throws RemoteException { + final ActivityStack stack = createStack(); + final Task task = createTask(stack, false /* hasBeenVisible */); + final ITaskOrganizer organizer = registerMockOrganizer(); + + // In this test we skip making the Task visible, and verify + // that even though a TaskOrganizer is set remove doesn't emit + // a vanish callback, because we never emitted appear. + task.setTaskOrganizer(organizer); + verify(organizer, never()).onTaskAppeared(any()); + task.removeImmediately(); + verify(organizer, never()).onTaskVanished(any()); + } + + @Test public void testSwapOrganizer() throws RemoteException { - final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stack, 0 /* userId */); + final ActivityStack stack = createStack(); + final Task task = createTask(stack); final ITaskOrganizer organizer = registerMockOrganizer(WINDOWING_MODE_MULTI_WINDOW); final ITaskOrganizer organizer2 = registerMockOrganizer(WINDOWING_MODE_PINNED); @@ -125,8 +176,8 @@ public class TaskOrganizerTests extends WindowTestsBase { @Test public void testSwapWindowingModes() throws RemoteException { - final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stack, 0 /* userId */); + final ActivityStack stack = createStack(); + final Task task = createTask(stack); final ITaskOrganizer organizer = registerMockOrganizer(WINDOWING_MODE_MULTI_WINDOW); final ITaskOrganizer organizer2 = registerMockOrganizer(WINDOWING_MODE_PINNED); @@ -139,8 +190,8 @@ public class TaskOrganizerTests extends WindowTestsBase { @Test public void testClearOrganizer() throws RemoteException { - final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stack, 0 /* userId */); + final ActivityStack stack = createStack(); + final Task task = createTask(stack); final ITaskOrganizer organizer = registerMockOrganizer(); stack.setTaskOrganizer(organizer); @@ -154,8 +205,8 @@ public class TaskOrganizerTests extends WindowTestsBase { @Test public void testUnregisterOrganizer() throws RemoteException { - final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stack, 0 /* userId */); + final ActivityStack stack = createStack(); + final Task task = createTask(stack); final ITaskOrganizer organizer = registerMockOrganizer(); stack.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW); @@ -169,12 +220,12 @@ public class TaskOrganizerTests extends WindowTestsBase { @Test public void testUnregisterOrganizerReturnsRegistrationToPrevious() throws RemoteException { - final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stack, 0 /* userId */); - final ActivityStack stack2 = createTaskStackOnDisplay(mDisplayContent); - final Task task2 = createTaskInStack(stack2, 0 /* userId */); - final ActivityStack stack3 = createTaskStackOnDisplay(mDisplayContent); - final Task task3 = createTaskInStack(stack3, 0 /* userId */); + final ActivityStack stack = createStack(); + final Task task = createTask(stack); + final ActivityStack stack2 = createStack(); + final Task task2 = createTask(stack2); + final ActivityStack stack3 = createStack(); + final Task task3 = createTask(stack3); final ITaskOrganizer organizer = registerMockOrganizer(WINDOWING_MODE_MULTI_WINDOW); // First organizer is registered, verify a task appears when changing windowing mode @@ -202,9 +253,9 @@ public class TaskOrganizerTests extends WindowTestsBase { public void testRegisterTaskOrganizerStackWindowingModeChanges() throws RemoteException { final ITaskOrganizer organizer = registerMockOrganizer(WINDOWING_MODE_PINNED); - final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stack, 0 /* userId */); - final Task task2 = createTaskInStack(stack, 0 /* userId */); + final ActivityStack stack = createStack(); + final Task task = createTask(stack); + final Task task2 = createTask(stack); stack.setWindowingMode(WINDOWING_MODE_PINNED); verify(organizer, times(1)).onTaskAppeared(any()); @@ -214,8 +265,8 @@ public class TaskOrganizerTests extends WindowTestsBase { @Test public void testRegisterTaskOrganizerWithExistingTasks() throws RemoteException { - final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stack, 0 /* userId */); + final ActivityStack stack = createStack(); + final Task task = createTask(stack); stack.setWindowingMode(WINDOWING_MODE_PINNED); final ITaskOrganizer organizer = registerMockOrganizer(WINDOWING_MODE_PINNED); @@ -560,8 +611,8 @@ public class TaskOrganizerTests extends WindowTestsBase { @Test public void testTrivialBLASTCallback() throws RemoteException { - final ActivityStack stackController1 = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stackController1, 0 /* userId */); + final ActivityStack stackController1 = createStack(); + final Task task = createTask(stackController1); final ITaskOrganizer organizer = registerMockOrganizer(); spyOn(task); @@ -582,8 +633,8 @@ public class TaskOrganizerTests extends WindowTestsBase { @Test public void testOverlappingBLASTCallback() throws RemoteException { - final ActivityStack stackController1 = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stackController1, 0 /* userId */); + final ActivityStack stackController1 = createStack(); + final Task task = createTask(stackController1); final ITaskOrganizer organizer = registerMockOrganizer(); spyOn(task); @@ -611,8 +662,8 @@ public class TaskOrganizerTests extends WindowTestsBase { @Test public void testBLASTCallbackWithWindow() { - final ActivityStack stackController1 = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stackController1, 0 /* userId */); + final ActivityStack stackController1 = createStack(); + final Task task = createTask(stackController1); final ITaskOrganizer organizer = registerMockOrganizer(); final WindowState w = createAppWindow(task, TYPE_APPLICATION, "Enlightened Window"); makeWindowVisible(w); @@ -635,8 +686,8 @@ public class TaskOrganizerTests extends WindowTestsBase { @Test public void testBLASTCallbackWithInvisibleWindow() { - final ActivityStack stackController1 = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stackController1, 0 /* userId */); + final ActivityStack stackController1 = createStack(); + final Task task = createTask(stackController1); final ITaskOrganizer organizer = registerMockOrganizer(); final WindowState w = createAppWindow(task, TYPE_APPLICATION, "Enlightened Window"); @@ -657,8 +708,8 @@ public class TaskOrganizerTests extends WindowTestsBase { @Test public void testBLASTCallbackWithChildWindow() { - final ActivityStack stackController1 = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stackController1, 0 /* userId */); + final ActivityStack stackController1 = createStack(); + final Task task = createTask(stackController1); final ITaskOrganizer organizer = registerMockOrganizer(); final WindowState w = createAppWindow(task, TYPE_APPLICATION, "Enlightened Window"); final WindowState child = createWindow(w, TYPE_APPLICATION, "Other Window"); @@ -708,6 +759,8 @@ public class TaskOrganizerTests extends WindowTestsBase { record.info.flags |= ActivityInfo.FLAG_SUPPORTS_PICTURE_IN_PICTURE; spyOn(record); doReturn(true).when(record).checkEnterPictureInPictureState(any(), anyBoolean()); + + record.getRootTask().setHasBeenVisible(true); return record; } @@ -755,4 +808,23 @@ public class TaskOrganizerTests extends WindowTestsBase { assertEquals(3, ratio.getNumerator()); assertEquals(4, ratio.getDenominator()); } + + @Test + public void testPreventDuplicateAppear() throws RemoteException { + final ActivityStack stack = createStack(); + final Task task = createTask(stack); + final ITaskOrganizer organizer = registerMockOrganizer(); + + task.setTaskOrganizer(organizer); + // setHasBeenVisible was already called once by the set-up code. + task.setHasBeenVisible(true); + verify(organizer, times(1)).onTaskAppeared(any()); + + task.taskOrganizerUnregistered(); + task.setTaskOrganizer(organizer); + verify(organizer, times(2)).onTaskAppeared(any()); + + task.removeImmediately(); + verify(organizer).onTaskVanished(any()); + } } diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java index 56c19a47b68a..1ad4079c5193 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java @@ -874,11 +874,11 @@ public class TaskRecordTests extends ActivityTestsBase { spyOn(persister); final Task task = getTestTask(); - task.hasBeenVisible = false; + task.setHasBeenVisible(false); task.getDisplayContent().setDisplayWindowingMode(WINDOWING_MODE_FREEFORM); task.getStack().setWindowingMode(WINDOWING_MODE_FULLSCREEN); - task.hasBeenVisible = true; + task.setHasBeenVisible(true); task.onConfigurationChanged(task.getParent().getConfiguration()); verify(persister).saveTask(task, task.getDisplayContent()); @@ -890,7 +890,7 @@ public class TaskRecordTests extends ActivityTestsBase { spyOn(persister); final Task task = getTestTask(); - task.hasBeenVisible = false; + task.setHasBeenVisible(false); task.getDisplayContent().setWindowingMode(WindowConfiguration.WINDOWING_MODE_FREEFORM); task.getStack().setWindowingMode(WINDOWING_MODE_FULLSCREEN); final DisplayContent oldDisplay = task.getDisplayContent(); @@ -900,7 +900,7 @@ public class TaskRecordTests extends ActivityTestsBase { persister.getLaunchParams(task, null, params); assertEquals(WINDOWING_MODE_UNDEFINED, params.mWindowingMode); - task.hasBeenVisible = true; + task.setHasBeenVisible(true); task.removeImmediately(); verify(persister).saveTask(task, oldDisplay); @@ -915,10 +915,10 @@ public class TaskRecordTests extends ActivityTestsBase { spyOn(persister); final Task task = getTestTask(); - task.hasBeenVisible = false; + task.setHasBeenVisible(false); task.getStack().setWindowingMode(WINDOWING_MODE_FULLSCREEN); - task.hasBeenVisible = true; + task.setHasBeenVisible(true); task.onConfigurationChanged(task.getParent().getConfiguration()); verify(persister, never()).saveTask(same(task), any()); @@ -930,11 +930,11 @@ public class TaskRecordTests extends ActivityTestsBase { spyOn(persister); final Task task = getTestTask(); - task.hasBeenVisible = false; + task.setHasBeenVisible(false); task.getDisplayContent().setDisplayWindowingMode(WINDOWING_MODE_FREEFORM); task.getStack().setWindowingMode(WINDOWING_MODE_PINNED); - task.hasBeenVisible = true; + task.setHasBeenVisible(true); task.onConfigurationChanged(task.getParent().getConfiguration()); verify(persister, never()).saveTask(same(task), any()); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java index 2164de9ea191..67d4016dbd73 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java @@ -41,6 +41,7 @@ import android.graphics.PixelFormat; import android.graphics.Point; import android.graphics.Rect; import android.platform.test.annotations.Presubmit; +import android.view.InsetsState; import android.view.Surface; import android.view.SurfaceControl; @@ -87,7 +88,7 @@ public class TaskSnapshotSurfaceTest extends WindowTestsBase { 0 /* systemUiVisibility */, false /* isTranslucent */); mSurface = new TaskSnapshotSurface(mWm, new Window(), new SurfaceControl(), snapshot, "Test", createTaskDescription(Color.WHITE, Color.RED, Color.BLUE), sysuiVis, windowFlags, 0, - taskBounds, ORIENTATION_PORTRAIT, null /* insetsState */); + taskBounds, ORIENTATION_PORTRAIT, new InsetsState()); } private static TaskDescription createTaskDescription(int background, int statusBar, diff --git a/services/tests/wmtests/src/com/android/server/wm/TestDisplayContent.java b/services/tests/wmtests/src/com/android/server/wm/TestDisplayContent.java index fc8cc96d224c..18737c2b4bb7 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TestDisplayContent.java +++ b/services/tests/wmtests/src/com/android/server/wm/TestDisplayContent.java @@ -43,6 +43,7 @@ class TestDisplayContent extends DisplayContent { // hard-code to FULLSCREEN for tests. setWindowingMode(WINDOWING_MODE_FULLSCREEN); spyOn(this); + spyOn(mTaskContainers); final DisplayRotation displayRotation = getDisplayRotation(); spyOn(displayRotation); diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerDbHelper.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerDbHelper.java index 99065854445a..71da8dd267db 100644 --- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerDbHelper.java +++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerDbHelper.java @@ -86,10 +86,11 @@ public class SoundTriggerDbHelper extends SQLiteOpenHelper { synchronized(this) { SQLiteDatabase db = getWritableDatabase(); ContentValues values = new ContentValues(); - values.put(GenericSoundModelContract.KEY_MODEL_UUID, soundModel.uuid.toString()); - values.put(GenericSoundModelContract.KEY_VENDOR_UUID, soundModel.vendorUuid.toString()); - values.put(GenericSoundModelContract.KEY_DATA, soundModel.data); - values.put(GenericSoundModelContract.KEY_MODEL_VERSION, soundModel.version); + values.put(GenericSoundModelContract.KEY_MODEL_UUID, soundModel.getUuid().toString()); + values.put(GenericSoundModelContract.KEY_VENDOR_UUID, + soundModel.getVendorUuid().toString()); + values.put(GenericSoundModelContract.KEY_DATA, soundModel.getData()); + values.put(GenericSoundModelContract.KEY_MODEL_VERSION, soundModel.getVersion()); try { return db.insertWithOnConflict(GenericSoundModelContract.TABLE, null, values, @@ -140,7 +141,7 @@ public class SoundTriggerDbHelper extends SQLiteOpenHelper { // Delete all sound models for the given keyphrase and specified user. SQLiteDatabase db = getWritableDatabase(); String soundModelClause = GenericSoundModelContract.KEY_MODEL_UUID - + "='" + soundModel.uuid.toString() + "'"; + + "='" + soundModel.getUuid().toString() + "'"; try { return db.delete(GenericSoundModelContract.TABLE, soundModelClause, null) != 0; } finally { diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java index 7099c0935ee9..6c0f2b0cd278 100644 --- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java +++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java @@ -195,7 +195,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { } // Process existing model first. - if (model != null && !model.getModelId().equals(soundModel.uuid)) { + if (model != null && !model.getModelId().equals(soundModel.getUuid())) { // The existing model has a different UUID, should be replaced. int status = cleanUpExistingKeyphraseModelLocked(model); if (status != STATUS_OK) { @@ -208,7 +208,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { // We need to create a new one: either no previous models existed for given keyphrase id // or the existing model had a different UUID and was cleaned up. if (model == null) { - model = createKeyphraseModelDataLocked(soundModel.uuid, keyphraseId); + model = createKeyphraseModelDataLocked(soundModel.getUuid(), keyphraseId); } return startRecognition(soundModel, model, callback, recognitionConfig, @@ -249,7 +249,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { return STATUS_ERROR; } if (mModule == null) { - mModule = SoundTrigger.attachModule(mModuleProperties.id, this, null); + mModule = SoundTrigger.attachModule(mModuleProperties.getId(), this, null); if (mModule == null) { Slog.w(TAG, "startRecognition cannot attach to sound trigger module"); return STATUS_ERROR; diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java index 00cb6dc7400d..170bee841e74 100644 --- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java +++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java @@ -358,7 +358,7 @@ public class SoundTriggerService extends SystemService { public int loadGenericSoundModel(GenericSoundModel soundModel) { enforceCallingPermission(Manifest.permission.MANAGE_SOUND_TRIGGER); if (!isInitialized()) return STATUS_ERROR; - if (soundModel == null || soundModel.uuid == null) { + if (soundModel == null || soundModel.getUuid() == null) { Slog.e(TAG, "Invalid sound model"); sEventLogger.log(new SoundTriggerLogger.StringEvent( @@ -367,24 +367,24 @@ public class SoundTriggerService extends SystemService { return STATUS_ERROR; } if (DEBUG) { - Slog.i(TAG, "loadGenericSoundModel(): id = " + soundModel.uuid); + Slog.i(TAG, "loadGenericSoundModel(): id = " + soundModel.getUuid()); } sEventLogger.log(new SoundTriggerLogger.StringEvent("loadGenericSoundModel(): id = " - + soundModel.uuid)); + + soundModel.getUuid())); synchronized (mLock) { - SoundModel oldModel = mLoadedModels.get(soundModel.uuid); + SoundModel oldModel = mLoadedModels.get(soundModel.getUuid()); // If the model we're loading is actually different than what we had loaded, we // should unload that other model now. We don't care about return codes since we // don't know if the other model is loaded. if (oldModel != null && !oldModel.equals(soundModel)) { - mSoundTriggerHelper.unloadGenericSoundModel(soundModel.uuid); + mSoundTriggerHelper.unloadGenericSoundModel(soundModel.getUuid()); synchronized (mCallbacksLock) { - mCallbacks.remove(soundModel.uuid); + mCallbacks.remove(soundModel.getUuid()); } } - mLoadedModels.put(soundModel.uuid, soundModel); + mLoadedModels.put(soundModel.getUuid(), soundModel); } return STATUS_OK; } @@ -393,7 +393,7 @@ public class SoundTriggerService extends SystemService { public int loadKeyphraseSoundModel(KeyphraseSoundModel soundModel) { enforceCallingPermission(Manifest.permission.MANAGE_SOUND_TRIGGER); if (!isInitialized()) return STATUS_ERROR; - if (soundModel == null || soundModel.uuid == null) { + if (soundModel == null || soundModel.getUuid() == null) { Slog.e(TAG, "Invalid sound model"); sEventLogger.log(new SoundTriggerLogger.StringEvent( @@ -401,7 +401,7 @@ public class SoundTriggerService extends SystemService { return STATUS_ERROR; } - if (soundModel.keyphrases == null || soundModel.keyphrases.length != 1) { + if (soundModel.getKeyphrases() == null || soundModel.getKeyphrases().length != 1) { Slog.e(TAG, "Only one keyphrase per model is currently supported."); sEventLogger.log(new SoundTriggerLogger.StringEvent( @@ -411,24 +411,25 @@ public class SoundTriggerService extends SystemService { return STATUS_ERROR; } if (DEBUG) { - Slog.i(TAG, "loadKeyphraseSoundModel(): id = " + soundModel.uuid); + Slog.i(TAG, "loadKeyphraseSoundModel(): id = " + soundModel.getUuid()); } sEventLogger.log(new SoundTriggerLogger.StringEvent("loadKeyphraseSoundModel(): id = " - + soundModel.uuid)); + + soundModel.getUuid())); synchronized (mLock) { - SoundModel oldModel = mLoadedModels.get(soundModel.uuid); + SoundModel oldModel = mLoadedModels.get(soundModel.getUuid()); // If the model we're loading is actually different than what we had loaded, we // should unload that other model now. We don't care about return codes since we // don't know if the other model is loaded. if (oldModel != null && !oldModel.equals(soundModel)) { - mSoundTriggerHelper.unloadKeyphraseSoundModel(soundModel.keyphrases[0].id); + mSoundTriggerHelper.unloadKeyphraseSoundModel( + soundModel.getKeyphrases()[0].getId()); synchronized (mCallbacksLock) { - mCallbacks.remove(soundModel.uuid); + mCallbacks.remove(soundModel.getUuid()); } } - mLoadedModels.put(soundModel.uuid, soundModel); + mLoadedModels.put(soundModel.getUuid(), soundModel); } return STATUS_OK; } @@ -478,9 +479,9 @@ public class SoundTriggerService extends SystemService { return STATUS_ERROR; } int ret; - switch (soundModel.type) { + switch (soundModel.getType()) { case SoundModel.TYPE_GENERIC_SOUND: - ret = mSoundTriggerHelper.startGenericRecognition(soundModel.uuid, + ret = mSoundTriggerHelper.startGenericRecognition(soundModel.getUuid(), (GenericSoundModel) soundModel, callback, config); break; default: @@ -545,9 +546,10 @@ public class SoundTriggerService extends SystemService { return STATUS_ERROR; } int ret; - switch (soundModel.type) { + switch (soundModel.getType()) { case SoundModel.TYPE_GENERIC_SOUND: - ret = mSoundTriggerHelper.stopGenericRecognition(soundModel.uuid, callback); + ret = mSoundTriggerHelper.stopGenericRecognition( + soundModel.getUuid(), callback); break; default: Slog.e(TAG, "Unknown model type"); @@ -597,13 +599,13 @@ public class SoundTriggerService extends SystemService { return STATUS_ERROR; } int ret; - switch (soundModel.type) { + switch (soundModel.getType()) { case SoundModel.TYPE_KEYPHRASE: ret = mSoundTriggerHelper.unloadKeyphraseSoundModel( - ((KeyphraseSoundModel)soundModel).keyphrases[0].id); + ((KeyphraseSoundModel) soundModel).getKeyphrases()[0].getId()); break; case SoundModel.TYPE_GENERIC_SOUND: - ret = mSoundTriggerHelper.unloadGenericSoundModel(soundModel.uuid); + ret = mSoundTriggerHelper.unloadGenericSoundModel(soundModel.getUuid()); break; default: Slog.e(TAG, "Unknown model type"); @@ -661,16 +663,16 @@ public class SoundTriggerService extends SystemService { return ret; } - switch (soundModel.type) { + switch (soundModel.getType()) { case SoundModel.TYPE_GENERIC_SOUND: - ret = mSoundTriggerHelper.getGenericModelState(soundModel.uuid); + ret = mSoundTriggerHelper.getGenericModelState(soundModel.getUuid()); break; default: // SoundModel.TYPE_KEYPHRASE is not supported to increase privacy. - Slog.e(TAG, "Unsupported model type, " + soundModel.type); + Slog.e(TAG, "Unsupported model type, " + soundModel.getType()); sEventLogger.log(new SoundTriggerLogger.StringEvent( "getModelState(): Unsupported model type, " - + soundModel.type)); + + soundModel.getType())); break; } @@ -723,7 +725,7 @@ public class SoundTriggerService extends SystemService { return STATUS_BAD_VALUE; } - return mSoundTriggerHelper.setParameter(soundModel.uuid, modelParam, value); + return mSoundTriggerHelper.setParameter(soundModel.getUuid(), modelParam, value); } } @@ -755,7 +757,7 @@ public class SoundTriggerService extends SystemService { throw new IllegalArgumentException("sound model is not loaded"); } - return mSoundTriggerHelper.getParameter(soundModel.uuid, modelParam); + return mSoundTriggerHelper.getParameter(soundModel.getUuid(), modelParam); } } @@ -786,7 +788,7 @@ public class SoundTriggerService extends SystemService { return null; } - return mSoundTriggerHelper.queryParameter(soundModel.uuid, modelParam); + return mSoundTriggerHelper.queryParameter(soundModel.getUuid(), modelParam); } } } diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/DatabaseHelper.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/DatabaseHelper.java index be0987d745ba..aaf7a9eacce6 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/DatabaseHelper.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/DatabaseHelper.java @@ -162,23 +162,26 @@ public class DatabaseHelper extends SQLiteOpenHelper { synchronized(this) { SQLiteDatabase db = getWritableDatabase(); ContentValues values = new ContentValues(); - values.put(SoundModelContract.KEY_MODEL_UUID, soundModel.uuid.toString()); - if (soundModel.vendorUuid != null) { - values.put(SoundModelContract.KEY_VENDOR_UUID, soundModel.vendorUuid.toString()); + values.put(SoundModelContract.KEY_MODEL_UUID, soundModel.getUuid().toString()); + if (soundModel.getVendorUuid() != null) { + values.put(SoundModelContract.KEY_VENDOR_UUID, + soundModel.getVendorUuid().toString()); } values.put(SoundModelContract.KEY_TYPE, SoundTrigger.SoundModel.TYPE_KEYPHRASE); - values.put(SoundModelContract.KEY_DATA, soundModel.data); - values.put(SoundModelContract.KEY_MODEL_VERSION, soundModel.version); + values.put(SoundModelContract.KEY_DATA, soundModel.getData()); + values.put(SoundModelContract.KEY_MODEL_VERSION, soundModel.getVersion()); - if (soundModel.keyphrases != null && soundModel.keyphrases.length == 1) { - values.put(SoundModelContract.KEY_KEYPHRASE_ID, soundModel.keyphrases[0].id); + if (soundModel.getKeyphrases() != null && soundModel.getKeyphrases().length == 1) { + values.put(SoundModelContract.KEY_KEYPHRASE_ID, + soundModel.getKeyphrases()[0].getId()); values.put(SoundModelContract.KEY_RECOGNITION_MODES, - soundModel.keyphrases[0].recognitionModes); + soundModel.getKeyphrases()[0].getRecognitionModes()); values.put(SoundModelContract.KEY_USERS, - getCommaSeparatedString(soundModel.keyphrases[0].users)); + getCommaSeparatedString(soundModel.getKeyphrases()[0].getUsers())); values.put(SoundModelContract.KEY_LOCALE, - soundModel.keyphrases[0].locale.toLanguageTag()); - values.put(SoundModelContract.KEY_HINT_TEXT, soundModel.keyphrases[0].text); + soundModel.getKeyphrases()[0].getLocale().toLanguageTag()); + values.put(SoundModelContract.KEY_HINT_TEXT, + soundModel.getKeyphrases()[0].getText()); try { return db.insertWithOnConflict(SoundModelContract.TABLE, null, values, SQLiteDatabase.CONFLICT_REPLACE) != -1; @@ -206,7 +209,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { // Delete all sound models for the given keyphrase and specified user. SQLiteDatabase db = getWritableDatabase(); String soundModelClause = SoundModelContract.KEY_MODEL_UUID - + "='" + soundModel.uuid.toString() + "'"; + + "='" + soundModel.getUuid().toString() + "'"; try { return db.delete(SoundModelContract.TABLE, soundModelClause, null) != 0; } finally { diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 18d581964f2a..ef282ba110c5 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -1045,12 +1045,12 @@ public class VoiceInteractionManagerService extends SystemService { return null; } - for (SoundTrigger.Keyphrase phrase : model.keyphrases) { - if (keyphrase.equals(phrase.text)) { + for (SoundTrigger.Keyphrase phrase : model.getKeyphrases()) { + if (keyphrase.equals(phrase.getText())) { ArraySet<Locale> locales = new ArraySet<>(); - locales.add(phrase.locale); - return new KeyphraseMetadata(phrase.id, phrase.text, locales, - phrase.recognitionModes); + locales.add(phrase.getLocale()); + return new KeyphraseMetadata(phrase.getId(), phrase.getText(), locales, + phrase.getRecognitionModes()); } } } finally { @@ -1093,8 +1093,8 @@ public class VoiceInteractionManagerService extends SystemService { KeyphraseSoundModel soundModel = mDbHelper.getKeyphraseSoundModel(keyphraseId, callingUid, bcp47Locale); if (soundModel == null - || soundModel.uuid == null - || soundModel.keyphrases == null) { + || soundModel.getUuid() == null + || soundModel.getKeyphrases() == null) { Slog.w(TAG, "No matching sound model found in startRecognition"); return SoundTriggerInternal.STATUS_ERROR; } else { diff --git a/startop/iorap/src/com/google/android/startop/iorap/IorapForwardingService.java b/startop/iorap/src/com/google/android/startop/iorap/IorapForwardingService.java index badff7bc2f8c..d5851d85345f 100644 --- a/startop/iorap/src/com/google/android/startop/iorap/IorapForwardingService.java +++ b/startop/iorap/src/com/google/android/startop/iorap/IorapForwardingService.java @@ -279,6 +279,8 @@ public class IorapForwardingService extends SystemService { (IIorap remote) -> remote.setTaskListener(new RemoteTaskListener()) ); registerInProcessListenersLocked(); + Log.i(TAG, "Connected to iorapd native service."); + return true; } diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index e3baa0a3cb3d..c993cfad1d05 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -193,13 +193,13 @@ public class TelecomManager { /** * Broadcast intent action indicating that the current default call screening app has changed. - * - * The string extra {@link #EXTRA_DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME} will contain the - * name of the Component of the previous or the new call screening app. - * - * The boolean extra {@link #EXTRA_IS_DEFAULT_CALL_SCREENING_APP} will indicate the component - * name in the String extra {@link #EXTRA_DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME} is default - * call screening app or not. + * <p> + * Note: This intent is NEVER actually broadcast and will be deprecated in the future. + * <p> + * An app that want to know if it holds the + * {@link android.app.role.RoleManager#ROLE_CALL_SCREENING} role can use + * {@link android.app.role.RoleManager#isRoleHeld(String)} to confirm if it holds the role or + * not. */ public static final String ACTION_DEFAULT_CALL_SCREENING_APP_CHANGED = "android.telecom.action.DEFAULT_CALL_SCREENING_APP_CHANGED"; @@ -207,6 +207,8 @@ public class TelecomManager { /** * Extra value used with {@link #ACTION_DEFAULT_CALL_SCREENING_APP_CHANGED} broadcast to * indicate the ComponentName of the call screening app which has changed. + * <p> + * Note: This extra is NOT used and will be deprecated in the future. */ public static final String EXTRA_DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME = "android.telecom.extra.DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME"; @@ -214,6 +216,8 @@ public class TelecomManager { /** * Extra value used with {@link #ACTION_DEFAULT_CALL_SCREENING_APP_CHANGED} broadcast to * indicate whether an app is the default call screening app. + * <p> + * Note: This extra is NOT used and will be deprecated in the future. */ public static final String EXTRA_IS_DEFAULT_CALL_SCREENING_APP = "android.telecom.extra.IS_DEFAULT_CALL_SCREENING_APP"; diff --git a/telephony/api/system-current.txt b/telephony/api/system-current.txt index afb75bb22bee..8ce4b0d158a3 100644 --- a/telephony/api/system-current.txt +++ b/telephony/api/system-current.txt @@ -394,8 +394,6 @@ package android.telephony { method @Deprecated @NonNull public String getDataConnectionApn(); method @Deprecated public int getDataConnectionApnTypeBitMask(); method @Deprecated public int getDataConnectionFailCause(); - method @Deprecated @Nullable public android.net.LinkProperties getDataConnectionLinkProperties(); - method @Deprecated public int getDataConnectionNetworkType(); method @Deprecated public int getDataConnectionState(); } @@ -816,9 +814,9 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoiceActivationState(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void shutdownAllRadios(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPin(String); - method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPinReportResult(String); + method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPinReportResult(String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPuk(String, String); - method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPukReportResult(String, String); + method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPukReportResult(String, String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean switchSlots(int[]); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void toggleRadioOnOff(); method @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public void updateOtaEmergencyNumberDbFilePath(@NonNull android.os.ParcelFileDescriptor); diff --git a/telephony/api/system-removed.txt b/telephony/api/system-removed.txt index ae46075c4829..c7fd30438dff 100644 --- a/telephony/api/system-removed.txt +++ b/telephony/api/system-removed.txt @@ -1,6 +1,11 @@ // Signature format: 2.0 package android.telephony { + public final class PreciseDataConnectionState implements android.os.Parcelable { + method @Deprecated @Nullable public android.net.LinkProperties getDataConnectionLinkProperties(); + method @Deprecated public int getDataConnectionNetworkType(); + } + public class TelephonyManager { method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void answerRingingCall(); method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public boolean endCall(); diff --git a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java index 7e02966779a2..1a38a42873b7 100644 --- a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java +++ b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java @@ -361,7 +361,8 @@ public final class TelephonyPermissions { TelephonyCommonStatsLog.write(TelephonyCommonStatsLog.DEVICE_IDENTIFIER_ACCESS_DENIED, callingPackage, message, /* isPreinstalled= */ false, false); } - Log.w(LOG_TAG, "reportAccessDeniedToReadIdentifiers:" + callingPackage + ":" + message); + Log.w(LOG_TAG, "reportAccessDeniedToReadIdentifiers:" + callingPackage + ":" + message + ":" + + subId); // if the target SDK is pre-Q then check if the calling package would have previously // had access to device identifiers. if (callingPackageInfo != null && ( diff --git a/telephony/java/android/telephony/AccessNetworkConstants.java b/telephony/java/android/telephony/AccessNetworkConstants.java index 558f4cd24471..39a754389254 100644 --- a/telephony/java/android/telephony/AccessNetworkConstants.java +++ b/telephony/java/android/telephony/AccessNetworkConstants.java @@ -19,9 +19,9 @@ package android.telephony; import android.annotation.IntDef; import android.annotation.SystemApi; import android.annotation.TestApi; -import android.hardware.radio.V1_1.EutranBands; import android.hardware.radio.V1_1.GeranBands; import android.hardware.radio.V1_5.AccessNetwork; +import android.hardware.radio.V1_5.EutranBands; import android.hardware.radio.V1_5.UtranBands; import java.lang.annotation.Retention; @@ -212,7 +212,8 @@ public final class AccessNetworkConstants { /** * Frequency bands for EUTRAN. - * http://www.etsi.org/deliver/etsi_ts/136100_136199/136101/14.03.00_60/ts_136101v140p.pdf + * 3GPP TS 36.101, Version 16.4.0, Table 5.5: Operating bands + * https://www.etsi.org/deliver/etsi_ts/136100_136199/136101/15.09.00_60/ts_136101v150900p.pdf */ public static final class EutranBand { public static final int BAND_1 = EutranBands.BAND_1; @@ -259,10 +260,22 @@ public final class AccessNetworkConstants { public static final int BAND_46 = EutranBands.BAND_46; public static final int BAND_47 = EutranBands.BAND_47; public static final int BAND_48 = EutranBands.BAND_48; + public static final int BAND_49 = EutranBands.BAND_49; + public static final int BAND_50 = EutranBands.BAND_50; + public static final int BAND_51 = EutranBands.BAND_51; + public static final int BAND_52 = EutranBands.BAND_52; + public static final int BAND_53 = EutranBands.BAND_53; public static final int BAND_65 = EutranBands.BAND_65; public static final int BAND_66 = EutranBands.BAND_66; public static final int BAND_68 = EutranBands.BAND_68; public static final int BAND_70 = EutranBands.BAND_70; + public static final int BAND_71 = EutranBands.BAND_71; + public static final int BAND_72 = EutranBands.BAND_72; + public static final int BAND_73 = EutranBands.BAND_73; + public static final int BAND_74 = EutranBands.BAND_74; + public static final int BAND_85 = EutranBands.BAND_85; + public static final int BAND_87 = EutranBands.BAND_87; + public static final int BAND_88 = EutranBands.BAND_88; /** @hide */ private EutranBand() {}; @@ -305,9 +318,11 @@ public final class AccessNetworkConstants { /** * Frequency bands for NGRAN + * https://www.etsi.org/deliver/etsi_ts/138100_138199/13810101/15.08.02_60/ts_13810101v150802p.pdf + * https://www.etsi.org/deliver/etsi_ts/138100_138199/13810102/15.08.00_60/ts_13810102v150800p.pdf */ public static final class NgranBands { - /** FR1 bands */ + /** 3GPP TS 38.101-1, Version 16.2.0, Table 5.2-1: FR1 bands */ public static final int BAND_1 = android.hardware.radio.V1_5.NgranBands.BAND_1; public static final int BAND_2 = android.hardware.radio.V1_5.NgranBands.BAND_2; public static final int BAND_3 = android.hardware.radio.V1_5.NgranBands.BAND_3; @@ -346,9 +361,15 @@ public final class AccessNetworkConstants { public static final int BAND_83 = android.hardware.radio.V1_5.NgranBands.BAND_83; public static final int BAND_84 = android.hardware.radio.V1_5.NgranBands.BAND_84; public static final int BAND_86 = android.hardware.radio.V1_5.NgranBands.BAND_86; + public static final int BAND_89 = android.hardware.radio.V1_5.NgranBands.BAND_89; public static final int BAND_90 = android.hardware.radio.V1_5.NgranBands.BAND_90; + public static final int BAND_91 = android.hardware.radio.V1_5.NgranBands.BAND_91; + public static final int BAND_92 = android.hardware.radio.V1_5.NgranBands.BAND_92; + public static final int BAND_93 = android.hardware.radio.V1_5.NgranBands.BAND_93; + public static final int BAND_94 = android.hardware.radio.V1_5.NgranBands.BAND_94; + public static final int BAND_95 = android.hardware.radio.V1_5.NgranBands.BAND_95; - /** FR2 bands */ + /** 3GPP TS 38.101-2, Version 16.2.0, Table 5.2-1: FR2 bands */ public static final int BAND_257 = android.hardware.radio.V1_5.NgranBands.BAND_257; public static final int BAND_258 = android.hardware.radio.V1_5.NgranBands.BAND_258; public static final int BAND_260 = android.hardware.radio.V1_5.NgranBands.BAND_260; @@ -398,7 +419,13 @@ public final class AccessNetworkConstants { BAND_83, BAND_84, BAND_86, + BAND_89, BAND_90, + BAND_91, + BAND_92, + BAND_93, + BAND_94, + BAND_95, BAND_257, BAND_258, BAND_260, @@ -495,7 +522,13 @@ public final class AccessNetworkConstants { case BAND_83: case BAND_84: case BAND_86: + case BAND_89: case BAND_90: + case BAND_91: + case BAND_92: + case BAND_93: + case BAND_94: + case BAND_95: return FREQUENCY_RANGE_GROUP_1; case BAND_257: case BAND_258: diff --git a/telephony/java/android/telephony/AccessNetworkUtils.java b/telephony/java/android/telephony/AccessNetworkUtils.java index 5d2c225f28ec..981ed450004a 100644 --- a/telephony/java/android/telephony/AccessNetworkUtils.java +++ b/telephony/java/android/telephony/AccessNetworkUtils.java @@ -34,12 +34,10 @@ public class AccessNetworkUtils { return DUPLEX_MODE_UNKNOWN; } - if (band >= EutranBand.BAND_68) { + if (band > EutranBand.BAND_88) { return DUPLEX_MODE_UNKNOWN; } else if (band >= EutranBand.BAND_65) { return DUPLEX_MODE_FDD; - } else if (band >= EutranBand.BAND_47) { - return DUPLEX_MODE_UNKNOWN; } else if (band >= EutranBand.BAND_33) { return DUPLEX_MODE_TDD; } else if (band >= EutranBand.BAND_1) { @@ -58,17 +56,53 @@ public class AccessNetworkUtils { * @return Operating band number, or {@link #INVALID_BAND} if no corresponding band exists */ public static int getOperatingBandForEarfcn(int earfcn) { - if (earfcn > 67535) { + if (earfcn > 70645) { + return INVALID_BAND; + } else if (earfcn >= 70596) { + return EutranBand.BAND_88; + } else if (earfcn >= 70546) { + return EutranBand.BAND_87; + } else if (earfcn >= 70366) { + return EutranBand.BAND_85; + } else if (earfcn > 69465) { + return INVALID_BAND; + } else if (earfcn >= 69036) { + return EutranBand.BAND_74; + } else if (earfcn >= 68986) { + return EutranBand.BAND_73; + } else if (earfcn >= 68936) { + return EutranBand.BAND_72; + } else if (earfcn >= 68586) { + return EutranBand.BAND_71; + } else if (earfcn >= 68336) { + return EutranBand.BAND_70; + } else if (earfcn > 67835) { return INVALID_BAND; + } else if (earfcn >= 67536) { + return EutranBand.BAND_68; } else if (earfcn >= 67366) { return INVALID_BAND; // band 67 only for CarrierAgg } else if (earfcn >= 66436) { return EutranBand.BAND_66; } else if (earfcn >= 65536) { return EutranBand.BAND_65; - } else if (earfcn > 54339) { + } else if (earfcn > 60254) { return INVALID_BAND; - } else if (earfcn >= 46790 /* inferred from the end range of BAND_45 */) { + } else if (earfcn >= 60140) { + return EutranBand.BAND_53; + } else if (earfcn >= 59140) { + return EutranBand.BAND_52; + } else if (earfcn >= 59090) { + return EutranBand.BAND_51; + } else if (earfcn >= 58240) { + return EutranBand.BAND_50; + } else if (earfcn >= 56740) { + return EutranBand.BAND_49; + } else if (earfcn >= 55240) { + return EutranBand.BAND_48; + } else if (earfcn >= 54540) { + return EutranBand.BAND_47; + } else if (earfcn >= 46790) { return EutranBand.BAND_46; } else if (earfcn >= 46590) { return EutranBand.BAND_45; diff --git a/telephony/java/android/telephony/CellIdentity.java b/telephony/java/android/telephony/CellIdentity.java index 0c2f1f325793..390a79ab1b88 100644 --- a/telephony/java/android/telephony/CellIdentity.java +++ b/telephony/java/android/telephony/CellIdentity.java @@ -68,6 +68,12 @@ public abstract class CellIdentity implements Parcelable { /** @hide */ protected String mAlphaShort; + // For GSM, WCDMA, TDSCDMA, LTE and NR, Cell Global ID is defined in 3GPP TS 23.003. + // For CDMA, its defined as System Id + Network Id + Basestation Id. + /** @hide */ + protected String mGlobalCellId; + + /** @hide */ protected CellIdentity(@Nullable String tag, int type, @Nullable String mcc, @Nullable String mnc, @Nullable String alphal, @Nullable String alphas) { @@ -182,6 +188,36 @@ public abstract class CellIdentity implements Parcelable { } /** + * @return Global Cell ID + * @hide + */ + @Nullable + public String getGlobalCellId() { + return mGlobalCellId; + } + + /** + * @param ci a CellIdentity to compare to the current CellIdentity. + * @return true if ci has the same technology and Global Cell ID; false, otherwise. + * @hide + */ + public boolean isSameCell(@Nullable CellIdentity ci) { + if (ci == null) return false; + if (this.getClass() != ci.getClass()) return false; + if (this.getGlobalCellId() == null || ci.getGlobalCellId() == null) return false; + return TextUtils.equals(this.getGlobalCellId(), ci.getGlobalCellId()); + } + + /** @hide */ + protected String getPlmn() { + if (mMccStr == null || mMncStr == null) return null; + return mMccStr + mMncStr; + } + + /** @hide */ + protected abstract void updateGlobalCellId(); + + /** * @return a CellLocation object for this CellIdentity * @hide */ diff --git a/telephony/java/android/telephony/CellIdentityCdma.java b/telephony/java/android/telephony/CellIdentityCdma.java index e220b07d703a..f21277cdd83c 100644 --- a/telephony/java/android/telephony/CellIdentityCdma.java +++ b/telephony/java/android/telephony/CellIdentityCdma.java @@ -75,6 +75,7 @@ public final class CellIdentityCdma extends CellIdentity { mBasestationId = CellInfo.UNAVAILABLE; mLongitude = CellInfo.UNAVAILABLE; mLatitude = CellInfo.UNAVAILABLE; + mGlobalCellId = null; } /** @@ -106,6 +107,7 @@ public final class CellIdentityCdma extends CellIdentity { } else { mLongitude = mLatitude = CellInfo.UNAVAILABLE; } + updateGlobalCellId(); } /** @hide */ @@ -136,6 +138,16 @@ public final class CellIdentityCdma extends CellIdentity { mAlphaLong, mAlphaShort); } + /** @hide */ + @Override + protected void updateGlobalCellId() { + mGlobalCellId = null; + if (mNetworkId == CellInfo.UNAVAILABLE || mSystemId == CellInfo.UNAVAILABLE + || mBasestationId == CellInfo.UNAVAILABLE) return; + + mGlobalCellId = String.format("%04x%04x%04x", mSystemId, mNetworkId, mBasestationId); + } + /** * Take the latitude and longitude in 1/4 seconds and see if * the reported location is on Null Island. diff --git a/telephony/java/android/telephony/CellIdentityGsm.java b/telephony/java/android/telephony/CellIdentityGsm.java index 203047fb111d..1a913105db2e 100644 --- a/telephony/java/android/telephony/CellIdentityGsm.java +++ b/telephony/java/android/telephony/CellIdentityGsm.java @@ -64,6 +64,7 @@ public final class CellIdentityGsm extends CellIdentity { mArfcn = CellInfo.UNAVAILABLE; mBsic = CellInfo.UNAVAILABLE; mAdditionalPlmns = new ArraySet<>(); + mGlobalCellId = null; } /** @@ -94,6 +95,7 @@ public final class CellIdentityGsm extends CellIdentity { mAdditionalPlmns.add(plmn); } } + updateGlobalCellId(); } /** @hide */ @@ -136,6 +138,18 @@ public final class CellIdentityGsm extends CellIdentity { CellInfo.UNAVAILABLE, mMccStr, mMncStr, mAlphaLong, mAlphaShort, mAdditionalPlmns); } + /** @hide */ + @Override + protected void updateGlobalCellId() { + mGlobalCellId = null; + String plmn = getPlmn(); + if (plmn == null) return; + + if (mLac == CellInfo.UNAVAILABLE || mCid == CellInfo.UNAVAILABLE) return; + + mGlobalCellId = plmn + String.format("%04x%04x", mLac, mCid); + } + /** * @return 3-digit Mobile Country Code, 0..999, * {@link android.telephony.CellInfo#UNAVAILABLE UNAVAILABLE} if unavailable. diff --git a/telephony/java/android/telephony/CellIdentityLte.java b/telephony/java/android/telephony/CellIdentityLte.java index b4ce162274fb..c37735c729a2 100644 --- a/telephony/java/android/telephony/CellIdentityLte.java +++ b/telephony/java/android/telephony/CellIdentityLte.java @@ -76,6 +76,7 @@ public final class CellIdentityLte extends CellIdentity { mBandwidth = CellInfo.UNAVAILABLE; mAdditionalPlmns = new ArraySet<>(); mCsgInfo = null; + mGlobalCellId = null; } /** @@ -130,6 +131,7 @@ public final class CellIdentityLte extends CellIdentity { } } mCsgInfo = csgInfo; + updateGlobalCellId(); } /** @hide */ @@ -172,6 +174,18 @@ public final class CellIdentityLte extends CellIdentity { return new CellIdentityLte(this); } + /** @hide */ + @Override + protected void updateGlobalCellId() { + mGlobalCellId = null; + String plmn = getPlmn(); + if (plmn == null) return; + + if (mCi == CellInfo.UNAVAILABLE) return; + + mGlobalCellId = plmn + String.format("%07x", mCi); + } + /** * @return 3-digit Mobile Country Code, 0..999, * {@link android.telephony.CellInfo#UNAVAILABLE UNAVAILABLE} if unavailable. diff --git a/telephony/java/android/telephony/CellIdentityNr.java b/telephony/java/android/telephony/CellIdentityNr.java index 69cf7e7d4814..f0d878001bf4 100644 --- a/telephony/java/android/telephony/CellIdentityNr.java +++ b/telephony/java/android/telephony/CellIdentityNr.java @@ -82,6 +82,7 @@ public final class CellIdentityNr extends CellIdentity { mAdditionalPlmns.add(plmn); } } + updateGlobalCellId(); } /** @hide */ @@ -107,6 +108,17 @@ public final class CellIdentityNr extends CellIdentity { mAdditionalPlmns); } + /** @hide */ + protected void updateGlobalCellId() { + mGlobalCellId = null; + String plmn = getPlmn(); + if (plmn == null) return; + + if (mNci == CellInfo.UNAVAILABLE_LONG) return; + + mGlobalCellId = plmn + String.format("%09x", mNci); + } + /** * @return a CellLocation object for this CellIdentity. * @hide diff --git a/telephony/java/android/telephony/CellIdentityTdscdma.java b/telephony/java/android/telephony/CellIdentityTdscdma.java index 30f98bc57458..3f95596a076e 100644 --- a/telephony/java/android/telephony/CellIdentityTdscdma.java +++ b/telephony/java/android/telephony/CellIdentityTdscdma.java @@ -66,6 +66,7 @@ public final class CellIdentityTdscdma extends CellIdentity { mUarfcn = CellInfo.UNAVAILABLE; mAdditionalPlmns = new ArraySet<>(); mCsgInfo = null; + mGlobalCellId = null; } /** @@ -100,6 +101,7 @@ public final class CellIdentityTdscdma extends CellIdentity { } } mCsgInfo = csgInfo; + updateGlobalCellId(); } private CellIdentityTdscdma(@NonNull CellIdentityTdscdma cid) { @@ -142,6 +144,18 @@ public final class CellIdentityTdscdma extends CellIdentity { return new CellIdentityTdscdma(this); } + /** @hide */ + @Override + protected void updateGlobalCellId() { + mGlobalCellId = null; + String plmn = getPlmn(); + if (plmn == null) return; + + if (mLac == CellInfo.UNAVAILABLE || mCid == CellInfo.UNAVAILABLE) return; + + mGlobalCellId = plmn + String.format("%04x%04x", mLac, mCid); + } + /** * Get Mobile Country Code in string format * @return Mobile Country Code in string format, null if unknown diff --git a/telephony/java/android/telephony/CellIdentityWcdma.java b/telephony/java/android/telephony/CellIdentityWcdma.java index 9d2cb74bac23..38c4ed482e14 100644 --- a/telephony/java/android/telephony/CellIdentityWcdma.java +++ b/telephony/java/android/telephony/CellIdentityWcdma.java @@ -68,6 +68,7 @@ public final class CellIdentityWcdma extends CellIdentity { mUarfcn = CellInfo.UNAVAILABLE; mAdditionalPlmns = new ArraySet<>(); mCsgInfo = null; + mGlobalCellId = null; } /** @@ -101,6 +102,7 @@ public final class CellIdentityWcdma extends CellIdentity { } } mCsgInfo = csgInfo; + updateGlobalCellId(); } /** @hide */ @@ -142,6 +144,18 @@ public final class CellIdentityWcdma extends CellIdentity { return new CellIdentityWcdma(this); } + /** @hide */ + @Override + protected void updateGlobalCellId() { + mGlobalCellId = null; + String plmn = getPlmn(); + if (plmn == null) return; + + if (mLac == CellInfo.UNAVAILABLE || mCid == CellInfo.UNAVAILABLE) return; + + mGlobalCellId = plmn + String.format("%04x%04x", mLac, mCid); + } + /** * @return 3-digit Mobile Country Code, 0..999, * {@link android.telephony.CellInfo#UNAVAILABLE UNAVAILABLE} if unavailable. diff --git a/telephony/java/android/telephony/PreciseDataConnectionState.java b/telephony/java/android/telephony/PreciseDataConnectionState.java index 5625642d3af5..b682bdd7aee3 100644 --- a/telephony/java/android/telephony/PreciseDataConnectionState.java +++ b/telephony/java/android/telephony/PreciseDataConnectionState.java @@ -171,6 +171,7 @@ public final class PreciseDataConnectionState implements Parcelable { * * @deprecated use {@link getNetworkType()} * @hide + * @removed Removed from the R preview SDK but was never part of the stable API surface. */ @Deprecated @SystemApi @@ -222,6 +223,7 @@ public final class PreciseDataConnectionState implements Parcelable { * * @deprecated use {@link #getLinkProperties()} * @hide + * @removed Removed from the R preview SDK but was never part of the stable API surface. */ @Deprecated @SystemApi diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java index 283e666f7ab2..2bb4eb1538bd 100644 --- a/telephony/java/android/telephony/SignalStrength.java +++ b/telephony/java/android/telephony/SignalStrength.java @@ -188,12 +188,12 @@ public class SignalStrength implements Parcelable { private CellSignalStrength getPrimary() { // This behavior is intended to replicate the legacy behavior of getLevel() by prioritizing // newer faster RATs for default/for display purposes. + if (mNr.isValid()) return mNr; if (mLte.isValid()) return mLte; if (mCdma.isValid()) return mCdma; if (mTdscdma.isValid()) return mTdscdma; if (mWcdma.isValid()) return mWcdma; if (mGsm.isValid()) return mGsm; - if (mNr.isValid()) return mNr; return mLte; } diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java index c1447465f53f..991375c5bc73 100644 --- a/telephony/java/android/telephony/SmsManager.java +++ b/telephony/java/android/telephony/SmsManager.java @@ -2520,7 +2520,6 @@ public final class SmsManager { * @param sentIntent if not NULL this <code>PendingIntent</code> is * broadcast when the message is successfully sent, or failed * @throws IllegalArgumentException if contentUri is empty - * @deprecated use {@link MmsManager#sendMultimediaMessage} instead. */ public void sendMultimediaMessage(Context context, Uri contentUri, String locationUrl, Bundle configOverrides, PendingIntent sentIntent) { @@ -2555,7 +2554,6 @@ public final class SmsManager { * @param downloadedIntent if not NULL this <code>PendingIntent</code> is * broadcast when the message is downloaded, or the download is failed * @throws IllegalArgumentException if locationUrl or contentUri is empty - * @deprecated use {@link MmsManager#downloadMultimediaMessage} instead. */ public void downloadMultimediaMessage(Context context, String locationUrl, Uri contentUri, Bundle configOverrides, PendingIntent downloadedIntent) { diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 5d3cc44ac68c..2facd5a16bc8 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -944,6 +944,18 @@ public class SubscriptionManager { if (DBG) log("onSubscriptionsChanged: NOT OVERRIDDEN"); } + /** + * Callback invoked when {@link SubscriptionManager#addOnSubscriptionsChangedListener( + * Executor, OnSubscriptionsChangedListener)} or + * {@link SubscriptionManager#addOnSubscriptionsChangedListener( + * OnSubscriptionsChangedListener)} fails to complete due to the + * {@link Context#TELEPHONY_REGISTRY_SERVICE} being unavailable. + * @hide + */ + public void onAddListenerFailed() { + Rlog.w(LOG_TAG, "onAddListenerFailed not overridden"); + } + private void log(String s) { Rlog.d(LOG_TAG, s); } @@ -1012,6 +1024,12 @@ public class SubscriptionManager { if (telephonyRegistryManager != null) { telephonyRegistryManager.addOnSubscriptionsChangedListener(listener, executor); + } else { + // If the telephony registry isn't available, we will inform the caller on their + // listener that it failed so they can try to re-register. + loge("addOnSubscriptionsChangedListener: pkgname=" + pkgName + " failed to be added " + + " due to TELEPHONY_REGISTRY_SERVICE being unavailable."); + executor.execute(() -> listener.onAddListenerFailed()); } } diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 5a7b852eeb76..4e5be5c453b7 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -5577,6 +5577,10 @@ public class TelephonyManager { * call {@link android.os.Binder#clearCallingIdentity()} before calling this method. A * {@link SecurityException} will be thrown otherwise. * + * This API should be used sparingly -- large numbers of listeners will cause system + * instability. If a process has registered too many listeners without unregistering them, it + * may encounter an {@link IllegalStateException} when trying to register more listeners. + * * @param listener The {@link PhoneStateListener} object to register * (or unregister) * @param events The telephony state(s) of interest to the listener, @@ -8679,13 +8683,9 @@ public class TelephonyManager { return false; } - /** - * @deprecated use {@link #supplyPinReportPinResult(String pin)} instead. - * - * @hide */ + /** @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) - @Deprecated public int[] supplyPinReportResult(String pin) { try { ITelephony telephony = getITelephony(); @@ -8697,13 +8697,9 @@ public class TelephonyManager { return new int[0]; } - /** - * @deprecated use {@link #supplyPukReportPinResult(String puk, String pin)} instead. - * - * @hide */ + /** @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) - @Deprecated public int[] supplyPukReportResult(String puk, String pin) { try { ITelephony telephony = getITelephony(); @@ -12268,6 +12264,17 @@ public class TelephonyManager { "android.telephony.extra.NETWORK_COUNTRY"; /** + * The extra used with an {@link #ACTION_NETWORK_COUNTRY_CHANGED} to specify the + * last known the country code in ISO-3166-1 alpha-2 format. + * <p class="note"> + * Retrieve with {@link android.content.Intent#getStringExtra(String)}. + * + * @hide + */ + public static final String EXTRA_LAST_KNOWN_NETWORK_COUNTRY = + "android.telephony.extra.LAST_KNOWN_NETWORK_COUNTRY"; + + /** * Indicate if the user is allowed to use multiple SIM cards at the same time to register * on the network (e.g. Dual Standby or Dual Active) when the device supports it, or if the * usage is restricted. This API is used to prevent usage of multiple SIM card, based on diff --git a/telephony/java/android/telephony/UiccAccessRule.java b/telephony/java/android/telephony/UiccAccessRule.java index 3e948fc75d00..12bb36647f8f 100644 --- a/telephony/java/android/telephony/UiccAccessRule.java +++ b/telephony/java/android/telephony/UiccAccessRule.java @@ -36,6 +36,8 @@ import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; +import java.util.Collections; +import java.util.List; import java.util.Objects; /** @@ -177,17 +179,8 @@ public final class UiccAccessRule implements Parcelable { * {@link TelephonyManager#CARRIER_PRIVILEGE_STATUS_NO_ACCESS}. */ public int getCarrierPrivilegeStatus(PackageInfo packageInfo) { - Signature[] signatures = packageInfo.signatures; - SigningInfo sInfo = packageInfo.signingInfo; - - if (sInfo != null) { - signatures = sInfo.getSigningCertificateHistory(); - if (sInfo.hasMultipleSigners()) { - signatures = sInfo.getApkContentsSigners(); - } - } - - if (signatures == null || signatures.length == 0) { + List<Signature> signatures = getSignatures(packageInfo); + if (signatures.isEmpty()) { throw new IllegalArgumentException( "Must use GET_SIGNING_CERTIFICATES when looking up package info"); } @@ -263,9 +256,29 @@ public final class UiccAccessRule implements Parcelable { } /** + * Gets all of the Signatures from the given PackageInfo. + * @hide + */ + @NonNull + public static List<Signature> getSignatures(PackageInfo packageInfo) { + Signature[] signatures = packageInfo.signatures; + SigningInfo signingInfo = packageInfo.signingInfo; + + if (signingInfo != null) { + signatures = signingInfo.getSigningCertificateHistory(); + if (signingInfo.hasMultipleSigners()) { + signatures = signingInfo.getApkContentsSigners(); + } + } + + return (signatures == null) ? Collections.EMPTY_LIST : Arrays.asList(signatures); + } + + /** * Converts a Signature into a Certificate hash usable for comparison. + * @hide */ - private static byte[] getCertHash(Signature signature, String algo) { + public static byte[] getCertHash(Signature signature, String algo) { try { MessageDigest md = MessageDigest.getInstance(algo); return md.digest(signature.toByteArray()); diff --git a/telephony/java/android/telephony/ims/ImsCallProfile.java b/telephony/java/android/telephony/ims/ImsCallProfile.java index 57497a260039..f31fcf4050ea 100644 --- a/telephony/java/android/telephony/ims/ImsCallProfile.java +++ b/telephony/java/android/telephony/ims/ImsCallProfile.java @@ -654,7 +654,7 @@ public final class ImsCallProfile implements Parcelable { return "{ serviceType=" + mServiceType + ", callType=" + mCallType + ", restrictCause=" + mRestrictCause - + ", mediaProfile=" + mMediaProfile.toString() + + ", mediaProfile=" + (mMediaProfile != null ? mMediaProfile.toString() : "null") + ", emergencyServiceCategories=" + mEmergencyServiceCategories + ", emergencyUrns=" + mEmergencyUrns + ", emergencyCallRouting=" + mEmergencyCallRouting diff --git a/telephony/java/com/android/internal/telephony/DctConstants.java b/telephony/java/com/android/internal/telephony/DctConstants.java index 3e1d72c7eeb8..2b1d9e58c4d5 100644 --- a/telephony/java/com/android/internal/telephony/DctConstants.java +++ b/telephony/java/com/android/internal/telephony/DctConstants.java @@ -74,7 +74,6 @@ public class DctConstants { public static final int BASE = Protocol.BASE_DATA_CONNECTION_TRACKER; public static final int EVENT_DATA_SETUP_COMPLETE = BASE + 0; public static final int EVENT_RADIO_AVAILABLE = BASE + 1; - public static final int EVENT_RECORDS_LOADED = BASE + 2; public static final int EVENT_TRY_SETUP_DATA = BASE + 3; public static final int EVENT_RADIO_OFF_OR_NOT_AVAILABLE = BASE + 6; public static final int EVENT_VOICE_CALL_STARTED = BASE + 7; @@ -94,7 +93,6 @@ public class DctConstants { public static final int EVENT_CLEAN_UP_CONNECTION = BASE + 24; public static final int EVENT_RESTART_RADIO = BASE + 26; public static final int EVENT_CLEAN_UP_ALL_CONNECTIONS = BASE + 29; - public static final int EVENT_ICC_CHANGED = BASE + 33; public static final int EVENT_DATA_SETUP_COMPLETE_ERROR = BASE + 35; public static final int CMD_SET_ENABLE_FAIL_FAST_MOBILE_DATA = BASE + 36; public static final int CMD_ENABLE_MOBILE_PROVISIONING = BASE + 37; @@ -114,7 +112,7 @@ public class DctConstants { public static final int EVENT_SERVICE_STATE_CHANGED = BASE + 52; public static final int EVENT_5G_TIMER_HYSTERESIS = BASE + 53; public static final int EVENT_5G_TIMER_WATCHDOG = BASE + 54; - public static final int EVENT_UPDATE_CARRIER_CONFIGS = BASE + 55; + public static final int EVENT_CARRIER_CONFIG_CHANGED = BASE + 55; /***** Constants *****/ diff --git a/test-mock/src/android/test/mock/MockContext.java b/test-mock/src/android/test/mock/MockContext.java index 784ee85fea34..cf3b03cae72e 100644 --- a/test-mock/src/android/test/mock/MockContext.java +++ b/test-mock/src/android/test/mock/MockContext.java @@ -928,4 +928,10 @@ public class MockContext extends Context { public Handler getMainThreadHandler() { throw new UnsupportedOperationException(); } + + /** {@hide} */ + @Override + public boolean isUiContext() { + throw new UnsupportedOperationException(); + } } diff --git a/test-runner/src/android/test/TouchUtils.java b/test-runner/src/android/test/TouchUtils.java index bb4e00ba1ef9..f2f0be73c010 100644 --- a/test-runner/src/android/test/TouchUtils.java +++ b/test-runner/src/android/test/TouchUtils.java @@ -223,7 +223,7 @@ public class TouchUtils { public static void dragViewToBottom(InstrumentationTestCase test, Activity activity, View v, int stepCount) { int screenHeight = - activity.getWindowManager().getCurrentWindowMetrics().getSize().getHeight(); + activity.getWindowManager().getCurrentWindowMetrics().getBounds().height(); int[] xy = new int[2]; v.getLocationOnScreen(xy); diff --git a/tests/ApkVerityTest/block_device_writer/Android.bp b/tests/ApkVerityTest/block_device_writer/Android.bp index 65cb3643259b..2760fe8df2d8 100644 --- a/tests/ApkVerityTest/block_device_writer/Android.bp +++ b/tests/ApkVerityTest/block_device_writer/Android.bp @@ -13,7 +13,7 @@ // limitations under the License. // This is a cc_test just because it supports test_suites. This should be converted to something -// like cc_binary_test_helper once supported. +// like cc_binary_test_helper once supported, thus auto_gen_config:false below. cc_test { // Depending on how the test runs, the executable may be uploaded to different location. // Before the bug in the file pusher is fixed, workaround by making the name unique. @@ -47,6 +47,7 @@ cc_test { }, }, + auto_gen_config: false, test_suites: ["general-tests", "pts", "vts-core"], gtest: false, } diff --git a/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java b/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java index f444b77b738e..42cee7cc5f1e 100644 --- a/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java +++ b/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java @@ -41,11 +41,16 @@ import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; +import java.time.format.DateTimeFormatter; +import java.time.ZonedDateTime; +import java.time.ZoneOffset; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -72,6 +77,7 @@ public class AppLaunch extends InstrumentationTestCase { private static final String KEY_REQUIRED_ACCOUNTS = "required_accounts"; private static final String KEY_APPS = "apps"; private static final String KEY_IORAP_TRIAL_LAUNCH = "iorap_trial_launch"; + private static final String KEY_IORAP_COMPILER_FILTERS = "iorap_compiler_filters"; private static final String KEY_TRIAL_LAUNCH = "trial_launch"; private static final String KEY_LAUNCH_ITERATIONS = "launch_iterations"; private static final String KEY_LAUNCH_ORDER = "launch_order"; @@ -153,6 +159,7 @@ public class AppLaunch extends InstrumentationTestCase { private BufferedWriter mBufferedWriter = null; private boolean mSimplePerfAppOnly = false; private String[] mCompilerFilters = null; + private List<String> mIorapCompilerFilters = null; private String mLastAppName = ""; private boolean mCycleCleanUp = false; private boolean mTraceAll = false; @@ -618,6 +625,24 @@ public class AppLaunch extends InstrumentationTestCase { return reason; } + private boolean shouldIncludeIorap(String compilerFilter) { + if (!mIorapTrialLaunch) { + return false; + } + + // No iorap compiler filters specified: treat all compiler filters as ok. + if (mIorapCompilerFilters == null) { + return true; + } + + // iorap compiler filters specified: the compilerFilter must be in the whitelist. + if (mIorapCompilerFilters.indexOf(compilerFilter) != -1) { + return true; + } + + return false; + } + /** * If launch order is "cyclic" then apps will be launched one after the * other for each iteration count. @@ -632,7 +657,7 @@ public class AppLaunch extends InstrumentationTestCase { mLaunchOrderList.add(new LaunchOrder(app, compilerFilter, TRIAL_LAUNCH, /*iorapEnabled*/false)); } } - if (mIorapTrialLaunch) { + if (shouldIncludeIorap(compilerFilter)) { for (int launchCount = 0; launchCount < IORAP_TRIAL_LAUNCH_ITERATIONS; ++launchCount) { for (String app : mNameToResultKey.keySet()) { String reason = makeReasonForIorapTrialLaunch(launchCount); @@ -646,14 +671,16 @@ public class AppLaunch extends InstrumentationTestCase { for (int launchCount = 0; launchCount < mLaunchIterations; launchCount++) { for (String app : mNameToResultKey.keySet()) { mLaunchOrderList.add(new LaunchOrder(app, compilerFilter, - String.format(LAUNCH_ITERATION, launchCount), mIorapTrialLaunch)); + String.format(LAUNCH_ITERATION, launchCount), + shouldIncludeIorap(compilerFilter))); } } if (mTraceDirectoryStr != null && !mTraceDirectoryStr.isEmpty()) { for (int traceCount = 0; traceCount < mTraceLaunchCount; traceCount++) { for (String app : mNameToResultKey.keySet()) { mLaunchOrderList.add(new LaunchOrder(app, compilerFilter, - String.format(TRACE_ITERATION, traceCount), mIorapTrialLaunch)); + String.format(TRACE_ITERATION, traceCount), + shouldIncludeIorap(compilerFilter))); } } } @@ -664,7 +691,7 @@ public class AppLaunch extends InstrumentationTestCase { if (mTrialLaunch) { mLaunchOrderList.add(new LaunchOrder(app, compilerFilter, TRIAL_LAUNCH, /*iorapEnabled*/false)); } - if (mIorapTrialLaunch) { + if (shouldIncludeIorap(compilerFilter)) { for (int launchCount = 0; launchCount < IORAP_TRIAL_LAUNCH_ITERATIONS; ++launchCount) { String reason = makeReasonForIorapTrialLaunch(launchCount); mLaunchOrderList.add( @@ -675,12 +702,14 @@ public class AppLaunch extends InstrumentationTestCase { } for (int launchCount = 0; launchCount < mLaunchIterations; launchCount++) { mLaunchOrderList.add(new LaunchOrder(app, compilerFilter, - String.format(LAUNCH_ITERATION, launchCount), mIorapTrialLaunch)); + String.format(LAUNCH_ITERATION, launchCount), + shouldIncludeIorap(compilerFilter))); } if (mTraceDirectoryStr != null && !mTraceDirectoryStr.isEmpty()) { for (int traceCount = 0; traceCount < mTraceLaunchCount; traceCount++) { mLaunchOrderList.add(new LaunchOrder(app, compilerFilter, - String.format(TRACE_ITERATION, traceCount), mIorapTrialLaunch)); + String.format(TRACE_ITERATION, traceCount), + shouldIncludeIorap(compilerFilter))); } } } @@ -713,6 +742,41 @@ public class AppLaunch extends InstrumentationTestCase { return total.contains("root"); } + private void stopIorapd() { + getInstrumentation().getUiAutomation() + .executeShellCommand("stop iorapd"); + sleep(100); // give it extra time to fully stop. + } + + private void startIorapd() { + String logcatTimeNow = getTimeNowForLogcat(); + Log.v(TAG, "startIorapd, logcat time: " + logcatTimeNow); + + getInstrumentation().getUiAutomation() + .executeShellCommand("start iorapd"); + + int maxAttempts = 100; + int attempt = 0; + do { + // Ensure that IorapForwardingService fully reconnects to iorapd before proceeding. + String needle = "Connected to iorapd native service"; + String logcatLines = getLogcatSinceTime(logcatTimeNow); + + if (logcatLines.contains(needle)) { + break; + } + + sleep(1000); + attempt++; + } while (attempt < maxAttempts); + + if (attempt == maxAttempts) { + Log.e(TAG, "Timed out after waiting for iorapd to start"); + } + // Wait a little bit longer for iorapd to settle. + sleep(1000); + } + // Delete all db rows and files associated with a package in iorapd. // Effectively deletes any raw or compiled trace files, unoptimizing the package in iorap. private void purgeIorapPackage(String packageName) { @@ -724,15 +788,65 @@ public class AppLaunch extends InstrumentationTestCase { throw new AssertionError(e); } - getInstrumentation().getUiAutomation() - .executeShellCommand("stop iorapd"); - sleep(100); // give iorapd enough time to stop. + Log.v(TAG, "Purge iorap package: " + packageName); + stopIorapd(); getInstrumentation().getUiAutomation() .executeShellCommand(String.format(IORAP_MAINTENANCE_CMD, packageName)); Log.v(TAG, "Executed: " + String.format(IORAP_MAINTENANCE_CMD, packageName)); - getInstrumentation().getUiAutomation() - .executeShellCommand("start iorapd"); - sleep(2000); // give iorapd enough time to start up. + startIorapd(); + } + + String executeShellCommandWithTempFile(String cmd) { + Log.v(TAG, "executeShellCommandWithTempFile, cmd: " + cmd); + try { + //File outputDir = + // InstrumentationRegistry.getInstrumentation().getContext().getCacheDir(); + File outputFile = File.createTempFile("exec_shell_command", ".sh"); + + try { + outputFile.setWritable(true); + outputFile.setExecutable(true, /*ownersOnly*/false); + + String scriptPath = outputFile.toString(); + + // If this works correctly, the next log-line will print 'Success'. + try (BufferedWriter writer = new BufferedWriter(new FileWriter(scriptPath))) { + writer.write(cmd); + } + + String resultString = ""; + try (ParcelFileDescriptor result = getInstrumentation().getUiAutomation(). + executeShellCommand(scriptPath); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader( + new FileInputStream(result.getFileDescriptor())))) { + String line; + while ((line = bufferedReader.readLine()) != null) { + resultString += line + "\n"; + } + } + + return resultString; + } finally { + outputFile.delete(); + } + } catch (IOException e) { + throw new AssertionError("Failed to execute shell command: " + cmd, e); + } + } + + // Get the 'now' timestamp usable with $(adb logcat -v utc -T "time string") + String getTimeNowForLogcat() { + ZonedDateTime utc = ZonedDateTime.now(ZoneOffset.UTC); + + // YYYY-MM-DD hh:mm:ss.mmm + return utc.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")); + } + + String getLogcatSinceTime(String logcatTime) { + // The time has spaces in it but must be passed as a single arg. + // Therefore use a temp script file. + return executeShellCommandWithTempFile( + String.format("logcat -d -v threadtime -v utc -T '%s'", logcatTime)); } /** @@ -759,15 +873,12 @@ public class AppLaunch extends InstrumentationTestCase { throw new AssertionError(e); } - getInstrumentation().getUiAutomation() - .executeShellCommand("stop iorapd"); + stopIorapd(); getInstrumentation().getUiAutomation() .executeShellCommand(String.format("setprop iorapd.perfetto.enable %b", enable)); getInstrumentation().getUiAutomation() .executeShellCommand(String.format("setprop iorapd.readahead.enable %b", enable)); - getInstrumentation().getUiAutomation() - .executeShellCommand("start iorapd"); - sleep(3000); // give enough time for iorapd to start back up. + startIorapd(); if (enable) { mIorapStatus = IorapStatus.ENABLED; @@ -822,6 +933,13 @@ public class AppLaunch extends InstrumentationTestCase { mCompilerFilters = new String[1]; } + String iorapCompilerFilterList = args.getString(KEY_IORAP_COMPILER_FILTERS); + if (iorapCompilerFilterList != null) { + // Passing in iorap compiler filters implies an iorap trial launch. + mIorapTrialLaunch = true; + mIorapCompilerFilters = Arrays.asList(iorapCompilerFilterList.split("\\|")); + } + // Pre-populate the results map to avoid null checks. for (String app : mNameToLaunchTime.keySet()) { HashMap<String, List<AppLaunchResult>> map = new HashMap<>(); diff --git a/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java b/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java index e255ce234c65..31532a226800 100644 --- a/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java +++ b/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java @@ -27,7 +27,6 @@ import android.graphics.Rect; import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; -import android.util.Size; import android.view.Gravity; import android.view.IWindowManager; import android.view.MotionEvent; @@ -90,8 +89,8 @@ public class MirrorSurfaceActivity extends Activity implements View.OnClickListe .getSystemService(WindowManager.class); mIWm = WindowManagerGlobal.getWindowManagerService(); - Size windowSize = mWm.getCurrentWindowMetrics().getSize(); - mWindowBounds.set(0, 0, windowSize.getWidth(), windowSize.getHeight()); + Rect windowBounds = mWm.getCurrentWindowMetrics().getBounds(); + mWindowBounds.set(0, 0, windowBounds.width(), windowBounds.height()); mScaleText = findViewById(R.id.scale); mDisplayFrameText = findViewById(R.id.displayFrame); diff --git a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java index 2957192ecf0f..d011dbbbe5db 100644 --- a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java +++ b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java @@ -1123,6 +1123,28 @@ public class PackageWatchdogTest { assertThat(testController.getSyncRequests()).isEqualTo(expectedSyncRequests); } + /** + * Ensure that the failure history of a package is preserved when making duplicate calls to + * observe the package. + */ + @Test + public void testFailureHistoryIsPreserved() { + PackageWatchdog watchdog = createWatchdog(); + TestObserver observer = new TestObserver(OBSERVER_NAME_1); + watchdog.startObservingHealth(observer, List.of(APP_A), SHORT_DURATION); + for (int i = 0; i < PackageWatchdog.DEFAULT_TRIGGER_FAILURE_COUNT - 1; i++) { + watchdog.onPackageFailure(List.of(new VersionedPackage(APP_A, VERSION_CODE)), + PackageWatchdog.FAILURE_REASON_UNKNOWN); + } + mTestLooper.dispatchAll(); + assertThat(observer.mMitigatedPackages).isEmpty(); + watchdog.startObservingHealth(observer, List.of(APP_A), LONG_DURATION); + watchdog.onPackageFailure(List.of(new VersionedPackage(APP_A, VERSION_CODE)), + PackageWatchdog.FAILURE_REASON_UNKNOWN); + mTestLooper.dispatchAll(); + assertThat(observer.mMitigatedPackages).isEqualTo(List.of(APP_A)); + } + private void adoptShellPermissions(String... permissions) { InstrumentationRegistry .getInstrumentation() diff --git a/tests/RollbackTest/lib/src/com/android/tests/rollback/host/WatchdogEventLogger.java b/tests/RollbackTest/lib/src/com/android/tests/rollback/host/WatchdogEventLogger.java index 317d67e3791e..88731504eafe 100644 --- a/tests/RollbackTest/lib/src/com/android/tests/rollback/host/WatchdogEventLogger.java +++ b/tests/RollbackTest/lib/src/com/android/tests/rollback/host/WatchdogEventLogger.java @@ -36,8 +36,10 @@ public class WatchdogEventLogger { } public void stop() { - mReceiver.stop(); - mReceiver.clear(); + if (mReceiver != null) { + mReceiver.stop(); + mReceiver.clear(); + } } /** diff --git a/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java b/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java index b185a26bb972..9324ba0b8b72 100644 --- a/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java +++ b/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java @@ -250,10 +250,12 @@ public class SoundTriggerTestService extends Service { boolean status = mSoundTriggerUtil.addOrUpdateSoundModel(soundModel); if (status) { - postToast("Successfully loaded " + modelInfo.name + ", UUID=" + soundModel.uuid); + postToast("Successfully loaded " + modelInfo.name + ", UUID=" + + soundModel.getUuid()); setModelState(modelInfo, "Loaded"); } else { - postErrorToast("Failed to load " + modelInfo.name + ", UUID=" + soundModel.uuid + "!"); + postErrorToast("Failed to load " + modelInfo.name + ", UUID=" + + soundModel.getUuid() + "!"); setModelState(modelInfo, "Failed to load"); } } @@ -275,11 +277,12 @@ public class SoundTriggerTestService extends Service { modelInfo.detector = null; boolean status = mSoundTriggerUtil.deleteSoundModel(modelUuid); if (status) { - postToast("Successfully unloaded " + modelInfo.name + ", UUID=" + soundModel.uuid); + postToast("Successfully unloaded " + modelInfo.name + ", UUID=" + + soundModel.getUuid()); setModelState(modelInfo, "Unloaded"); } else { postErrorToast("Failed to unload " + - modelInfo.name + ", UUID=" + soundModel.uuid + "!"); + modelInfo.name + ", UUID=" + soundModel.getUuid() + "!"); setModelState(modelInfo, "Failed to unload"); } } @@ -299,7 +302,8 @@ public class SoundTriggerTestService extends Service { GenericSoundModel updated = createNewSoundModel(modelInfo); boolean status = mSoundTriggerUtil.addOrUpdateSoundModel(updated); if (status) { - postToast("Successfully reloaded " + modelInfo.name + ", UUID=" + modelInfo.modelUuid); + postToast("Successfully reloaded " + modelInfo.name + ", UUID=" + + modelInfo.modelUuid); setModelState(modelInfo, "Reloaded"); } else { postErrorToast("Failed to reload " @@ -321,7 +325,8 @@ public class SoundTriggerTestService extends Service { modelUuid, new DetectorCallback(modelInfo)); } - postMessage("Starting recognition for " + modelInfo.name + ", UUID=" + modelInfo.modelUuid); + postMessage("Starting recognition for " + modelInfo.name + ", UUID=" + + modelInfo.modelUuid); if (modelInfo.detector.startRecognition(modelInfo.captureAudio ? SoundTriggerDetector.RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO : SoundTriggerDetector.RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS)) { @@ -495,7 +500,8 @@ public class SoundTriggerTestService extends Service { if (properties.containsKey("dataFile")) { File modelDataFile = new File( - getFilesDir().getPath() + "/" + properties.getProperty("dataFile")); + getFilesDir().getPath() + "/" + + properties.getProperty("dataFile")); modelInfo.modelData = new byte[(int) modelDataFile.length()]; FileInputStream input = new FileInputStream(modelDataFile); input.read(modelInfo.modelData, 0, modelInfo.modelData.length); @@ -602,12 +608,14 @@ public class SoundTriggerTestService extends Service { FileOutputStream fos = null; try { fos = new FileOutputStream( new File( - getFilesDir() + File.separator + mModelInfo.name.replace(' ', '_') + - "_capture_" + format.getChannelCount() + "ch_" + - format.getSampleRate() + "hz_" + encoding + ".pcm")); + getFilesDir() + File.separator + + mModelInfo.name.replace(' ', '_') + + "_capture_" + format.getChannelCount() + "ch_" + + format.getSampleRate() + "hz_" + encoding + ".pcm")); } catch (IOException e) { Log.e(TAG, "Failed to open output for saving PCM data", e); - postErrorToast("Failed to open output for saving PCM data: " + e.getMessage()); + postErrorToast("Failed to open output for saving PCM data: " + + e.getMessage()); } // Inform the user we're recording. @@ -690,7 +698,8 @@ public class SoundTriggerTestService extends Service { AudioFormat format = event.getCaptureAudioFormat(); result = result + "AudioFormat: " + ((format == null) ? "null" : format.toString()); byte[] triggerAudio = event.getTriggerAudio(); - result = result + ", TriggerAudio: " + (triggerAudio == null ? "null" : triggerAudio.length); + result = result + ", TriggerAudio: " + + (triggerAudio == null ? "null" : triggerAudio.length); byte[] data = event.getData(); result = result + ", Data: " + (data == null ? "null" : data.length); if (data != null) { diff --git a/tests/SoundTriggerTests/src/android/hardware/soundtrigger/SoundTriggerTest.java b/tests/SoundTriggerTests/src/android/hardware/soundtrigger/SoundTriggerTest.java index c900eaedbdae..e36f398c53ea 100644 --- a/tests/SoundTriggerTests/src/android/hardware/soundtrigger/SoundTriggerTest.java +++ b/tests/SoundTriggerTests/src/android/hardware/soundtrigger/SoundTriggerTest.java @@ -16,7 +16,6 @@ package android.hardware.soundtrigger; -import android.hardware.soundtrigger.SoundTrigger; import android.hardware.soundtrigger.SoundTrigger.ConfidenceLevel; import android.hardware.soundtrigger.SoundTrigger.Keyphrase; import android.hardware.soundtrigger.SoundTrigger.KeyphraseRecognitionEvent; @@ -51,10 +50,10 @@ public class SoundTriggerTest extends InstrumentationTestCase { Keyphrase unparceled = Keyphrase.CREATOR.createFromParcel(parcel); // Verify that they are the same - assertEquals(keyphrase.id, unparceled.id); - assertNull(unparceled.users); - assertEquals(keyphrase.locale, unparceled.locale); - assertEquals(keyphrase.text, unparceled.text); + assertEquals(keyphrase.getId(), unparceled.getId()); + assertNull(unparceled.getUsers()); + assertEquals(keyphrase.getLocale(), unparceled.getLocale()); + assertEquals(keyphrase.getText(), unparceled.getText()); } @SmallTest @@ -71,10 +70,10 @@ public class SoundTriggerTest extends InstrumentationTestCase { Keyphrase unparceled = Keyphrase.CREATOR.createFromParcel(parcel); // Verify that they are the same - assertEquals(keyphrase.id, unparceled.id); - assertTrue(Arrays.equals(keyphrase.users, unparceled.users)); - assertEquals(keyphrase.locale, unparceled.locale); - assertEquals(keyphrase.text, unparceled.text); + assertEquals(keyphrase.getId(), unparceled.getId()); + assertTrue(Arrays.equals(keyphrase.getUsers(), unparceled.getUsers())); + assertEquals(keyphrase.getLocale(), unparceled.getLocale()); + assertEquals(keyphrase.getText(), unparceled.getText()); } @SmallTest @@ -91,10 +90,10 @@ public class SoundTriggerTest extends InstrumentationTestCase { Keyphrase unparceled = Keyphrase.CREATOR.createFromParcel(parcel); // Verify that they are the same - assertEquals(keyphrase.id, unparceled.id); - assertTrue(Arrays.equals(keyphrase.users, unparceled.users)); - assertEquals(keyphrase.locale, unparceled.locale); - assertEquals(keyphrase.text, unparceled.text); + assertEquals(keyphrase.getId(), unparceled.getId()); + assertTrue(Arrays.equals(keyphrase.getUsers(), unparceled.getUsers())); + assertEquals(keyphrase.getLocale(), unparceled.getLocale()); + assertEquals(keyphrase.getText(), unparceled.getText()); } @SmallTest @@ -116,10 +115,10 @@ public class SoundTriggerTest extends InstrumentationTestCase { KeyphraseSoundModel unparceled = KeyphraseSoundModel.CREATOR.createFromParcel(parcel); // Verify that they are the same - assertEquals(ksm.uuid, unparceled.uuid); - assertNull(unparceled.data); - assertEquals(ksm.type, unparceled.type); - assertTrue(Arrays.equals(keyphrases, unparceled.keyphrases)); + assertEquals(ksm.getUuid(), unparceled.getUuid()); + assertNull(unparceled.getData()); + assertEquals(ksm.getType(), unparceled.getType()); + assertTrue(Arrays.equals(keyphrases, unparceled.getKeyphrases())); } @SmallTest @@ -141,10 +140,10 @@ public class SoundTriggerTest extends InstrumentationTestCase { KeyphraseSoundModel unparceled = KeyphraseSoundModel.CREATOR.createFromParcel(parcel); // Verify that they are the same - assertEquals(ksm.uuid, unparceled.uuid); - assertEquals(ksm.type, unparceled.type); - assertTrue(Arrays.equals(ksm.keyphrases, unparceled.keyphrases)); - assertTrue(Arrays.equals(ksm.data, unparceled.data)); + assertEquals(ksm.getUuid(), unparceled.getUuid()); + assertEquals(ksm.getType(), unparceled.getType()); + assertTrue(Arrays.equals(ksm.getKeyphrases(), unparceled.getKeyphrases())); + assertTrue(Arrays.equals(ksm.getData(), unparceled.getData())); } @SmallTest @@ -163,10 +162,10 @@ public class SoundTriggerTest extends InstrumentationTestCase { KeyphraseSoundModel unparceled = KeyphraseSoundModel.CREATOR.createFromParcel(parcel); // Verify that they are the same - assertEquals(ksm.uuid, unparceled.uuid); - assertEquals(ksm.type, unparceled.type); - assertNull(unparceled.keyphrases); - assertTrue(Arrays.equals(ksm.data, unparceled.data)); + assertEquals(ksm.getUuid(), unparceled.getUuid()); + assertEquals(ksm.getType(), unparceled.getType()); + assertNull(unparceled.getKeyphrases()); + assertTrue(Arrays.equals(ksm.getData(), unparceled.getData())); } @SmallTest @@ -185,10 +184,10 @@ public class SoundTriggerTest extends InstrumentationTestCase { KeyphraseSoundModel unparceled = KeyphraseSoundModel.CREATOR.createFromParcel(parcel); // Verify that they are the same - assertEquals(ksm.uuid, unparceled.uuid); - assertEquals(ksm.type, unparceled.type); - assertTrue(Arrays.equals(ksm.keyphrases, unparceled.keyphrases)); - assertTrue(Arrays.equals(ksm.data, unparceled.data)); + assertEquals(ksm.getUuid(), unparceled.getUuid()); + assertEquals(ksm.getType(), unparceled.getType()); + assertTrue(Arrays.equals(ksm.getKeyphrases(), unparceled.getKeyphrases())); + assertTrue(Arrays.equals(ksm.getData(), unparceled.getData())); } @LargeTest @@ -212,10 +211,10 @@ public class SoundTriggerTest extends InstrumentationTestCase { KeyphraseSoundModel unparceled = KeyphraseSoundModel.CREATOR.createFromParcel(parcel); // Verify that they are the same - assertEquals(ksm.uuid, unparceled.uuid); - assertEquals(ksm.type, unparceled.type); - assertTrue(Arrays.equals(ksm.data, unparceled.data)); - assertTrue(Arrays.equals(ksm.keyphrases, unparceled.keyphrases)); + assertEquals(ksm.getUuid(), unparceled.getUuid()); + assertEquals(ksm.getType(), unparceled.getType()); + assertTrue(Arrays.equals(ksm.getData(), unparceled.getData())); + assertTrue(Arrays.equals(ksm.getKeyphrases(), unparceled.getKeyphrases())); } @SmallTest diff --git a/tests/SoundTriggerTests/src/android/hardware/soundtrigger/stubhal/GenericSoundModelTest.java b/tests/SoundTriggerTests/src/android/hardware/soundtrigger/stubhal/GenericSoundModelTest.java index c0583ceb2fab..2c3592c640bc 100644 --- a/tests/SoundTriggerTests/src/android/hardware/soundtrigger/stubhal/GenericSoundModelTest.java +++ b/tests/SoundTriggerTests/src/android/hardware/soundtrigger/stubhal/GenericSoundModelTest.java @@ -17,7 +17,6 @@ package android.hardware.soundtrigger; import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.timeout; @@ -37,6 +36,8 @@ import android.test.suitebuilder.annotation.SmallTest; import com.android.internal.app.ISoundTriggerService; +import org.mockito.MockitoAnnotations; + import java.io.DataOutputStream; import java.net.InetAddress; import java.net.Socket; @@ -45,8 +46,6 @@ import java.util.HashSet; import java.util.Random; import java.util.UUID; -import org.mockito.MockitoAnnotations; - public class GenericSoundModelTest extends AndroidTestCase { static final int MSG_DETECTION_ERROR = -1; static final int MSG_DETECTION_RESUME = 0; @@ -96,11 +95,11 @@ public class GenericSoundModelTest extends AndroidTestCase { // Update sound model soundTriggerService.updateSoundModel(model); - loadedModelUuids.add(model.uuid); + loadedModelUuids.add(model.getUuid()); // Confirm it was updated GenericSoundModel returnedModel = - soundTriggerService.getSoundModel(new ParcelUuid(model.uuid)); + soundTriggerService.getSoundModel(new ParcelUuid(model.getUuid())); assertEquals(model, returnedModel); } @@ -110,15 +109,15 @@ public class GenericSoundModelTest extends AndroidTestCase { // Update sound model soundTriggerService.updateSoundModel(model); - loadedModelUuids.add(model.uuid); + loadedModelUuids.add(model.getUuid()); // Delete sound model - soundTriggerService.deleteSoundModel(new ParcelUuid(model.uuid)); - loadedModelUuids.remove(model.uuid); + soundTriggerService.deleteSoundModel(new ParcelUuid(model.getUuid())); + loadedModelUuids.remove(model.getUuid()); // Confirm it was deleted GenericSoundModel returnedModel = - soundTriggerService.getSoundModel(new ParcelUuid(model.uuid)); + soundTriggerService.getSoundModel(new ParcelUuid(model.getUuid())); assertEquals(null, returnedModel); } @@ -134,14 +133,14 @@ public class GenericSoundModelTest extends AndroidTestCase { // Update and start sound model recognition soundTriggerService.updateSoundModel(model); - loadedModelUuids.add(model.uuid); - int r = soundTriggerService.startRecognition(new ParcelUuid(model.uuid), spyCallback, + loadedModelUuids.add(model.getUuid()); + int r = soundTriggerService.startRecognition(new ParcelUuid(model.getUuid()), spyCallback, config); assertEquals("Could Not Start Recognition with code: " + r, android.hardware.soundtrigger.SoundTrigger.STATUS_OK, r); // Stop recognition - r = soundTriggerService.stopRecognition(new ParcelUuid(model.uuid), spyCallback); + r = soundTriggerService.stopRecognition(new ParcelUuid(model.getUuid()), spyCallback); assertEquals("Could Not Stop Recognition with code: " + r, android.hardware.soundtrigger.SoundTrigger.STATUS_OK, r); } @@ -158,13 +157,13 @@ public class GenericSoundModelTest extends AndroidTestCase { // Update and start sound model soundTriggerService.updateSoundModel(model); - loadedModelUuids.add(model.uuid); - soundTriggerService.startRecognition(new ParcelUuid(model.uuid), spyCallback, config); + loadedModelUuids.add(model.getUuid()); + soundTriggerService.startRecognition(new ParcelUuid(model.getUuid()), spyCallback, config); // Send trigger to stub HAL Socket socket = new Socket(InetAddress.getLocalHost(), 14035); DataOutputStream out = new DataOutputStream(socket.getOutputStream()); - out.writeBytes("trig " + model.uuid.toString() + "\r\n"); + out.writeBytes("trig " + model.getUuid().toString() + "\r\n"); out.flush(); socket.close(); @@ -227,11 +226,12 @@ public class GenericSoundModelTest extends AndroidTestCase { if (operation == 0 && modelInfo.status == STATUS_UNLOADED) { // Update and start sound model soundTriggerService.updateSoundModel(modelInfo.model); - loadedModelUuids.add(modelInfo.model.uuid); + loadedModelUuids.add(modelInfo.model.getUuid()); modelInfo.status = STATUS_LOADED; } else if (operation == 1 && modelInfo.status == STATUS_LOADED) { // Start the sound model - int r = soundTriggerService.startRecognition(new ParcelUuid(modelInfo.model.uuid), + int r = soundTriggerService.startRecognition(new ParcelUuid( + modelInfo.model.getUuid()), spyCallback, config); assertEquals("Could Not Start Recognition with code: " + r, android.hardware.soundtrigger.SoundTrigger.STATUS_OK, r); @@ -240,7 +240,7 @@ public class GenericSoundModelTest extends AndroidTestCase { // Send trigger to stub HAL Socket socket = new Socket(InetAddress.getLocalHost(), 14035); DataOutputStream out = new DataOutputStream(socket.getOutputStream()); - out.writeBytes("trig " + modelInfo.model.uuid + "\r\n"); + out.writeBytes("trig " + modelInfo.model.getUuid() + "\r\n"); out.flush(); socket.close(); @@ -249,19 +249,20 @@ public class GenericSoundModelTest extends AndroidTestCase { reset(spyCallback); } else if (operation == 3 && modelInfo.status == STATUS_STARTED) { // Stop recognition - int r = soundTriggerService.stopRecognition(new ParcelUuid(modelInfo.model.uuid), + int r = soundTriggerService.stopRecognition(new ParcelUuid( + modelInfo.model.getUuid()), spyCallback); assertEquals("Could Not Stop Recognition with code: " + r, android.hardware.soundtrigger.SoundTrigger.STATUS_OK, r); modelInfo.status = STATUS_LOADED; } else if (operation == 4 && modelInfo.status != STATUS_UNLOADED) { // Delete sound model - soundTriggerService.deleteSoundModel(new ParcelUuid(modelInfo.model.uuid)); - loadedModelUuids.remove(modelInfo.model.uuid); + soundTriggerService.deleteSoundModel(new ParcelUuid(modelInfo.model.getUuid())); + loadedModelUuids.remove(modelInfo.model.getUuid()); // Confirm it was deleted - GenericSoundModel returnedModel = - soundTriggerService.getSoundModel(new ParcelUuid(modelInfo.model.uuid)); + GenericSoundModel returnedModel = soundTriggerService.getSoundModel( + new ParcelUuid(modelInfo.model.getUuid())); assertEquals(null, returnedModel); modelInfo.status = STATUS_UNLOADED; } diff --git a/tests/VoiceEnrollment/src/com/android/test/voiceenrollment/EnrollmentUtil.java b/tests/VoiceEnrollment/src/com/android/test/voiceenrollment/EnrollmentUtil.java index 7927ac4cb895..287364fec8eb 100644 --- a/tests/VoiceEnrollment/src/com/android/test/voiceenrollment/EnrollmentUtil.java +++ b/tests/VoiceEnrollment/src/com/android/test/voiceenrollment/EnrollmentUtil.java @@ -159,36 +159,36 @@ public class EnrollmentUtil { Log.e(TAG, "KeyphraseSoundModel must be non-null"); return false; } - if (soundModel.uuid == null) { + if (soundModel.getUuid() == null) { Log.e(TAG, "KeyphraseSoundModel must have a UUID"); return false; } - if (soundModel.data == null) { + if (soundModel.getData() == null) { Log.e(TAG, "KeyphraseSoundModel must have data"); return false; } - if (soundModel.keyphrases == null || soundModel.keyphrases.length != 1) { + if (soundModel.getKeyphrases() == null || soundModel.getKeyphrases().length != 1) { Log.e(TAG, "Keyphrase must be exactly 1"); return false; } - Keyphrase keyphrase = soundModel.keyphrases[0]; - if (keyphrase.id <= 0) { + Keyphrase keyphrase = soundModel.getKeyphrases()[0]; + if (keyphrase.getId() <= 0) { Log.e(TAG, "Keyphrase must have a valid ID"); return false; } - if (keyphrase.recognitionModes < 0) { + if (keyphrase.getRecognitionModes() < 0) { Log.e(TAG, "Recognition modes must be valid"); return false; } - if (keyphrase.locale == null) { + if (keyphrase.getLocale() == null) { Log.e(TAG, "Locale must not be null"); return false; } - if (keyphrase.text == null) { + if (keyphrase.getText() == null) { Log.e(TAG, "Text must not be null"); return false; } - if (keyphrase.users == null || keyphrase.users.length == 0) { + if (keyphrase.getUsers() == null || keyphrase.getUsers().length == 0) { Log.e(TAG, "Keyphrase must have valid user(s)"); return false; } diff --git a/tests/VoiceEnrollment/src/com/android/test/voiceenrollment/TestEnrollmentActivity.java b/tests/VoiceEnrollment/src/com/android/test/voiceenrollment/TestEnrollmentActivity.java index b357ad076c11..e4880fd10d67 100644 --- a/tests/VoiceEnrollment/src/com/android/test/voiceenrollment/TestEnrollmentActivity.java +++ b/tests/VoiceEnrollment/src/com/android/test/voiceenrollment/TestEnrollmentActivity.java @@ -91,7 +91,7 @@ public class TestEnrollmentActivity extends Activity { } boolean status = mEnrollmentUtil.deleteSoundModel(KEYPHRASE_ID, BCP47_LOCALE); if (status) { - Toast.makeText(this, "Successfully un-enrolled, model UUID=" + soundModel.uuid, + Toast.makeText(this, "Successfully un-enrolled, model UUID=" + soundModel.getUuid(), Toast.LENGTH_SHORT) .show(); } else { @@ -112,11 +112,11 @@ public class TestEnrollmentActivity extends Activity { // Generate a fake model to push. byte[] data = new byte[2048]; mRandom.nextBytes(data); - KeyphraseSoundModel updated = new KeyphraseSoundModel(soundModel.uuid, - soundModel.vendorUuid, data, soundModel.keyphrases); + KeyphraseSoundModel updated = new KeyphraseSoundModel(soundModel.getUuid(), + soundModel.getVendorUuid(), data, soundModel.getKeyphrases()); boolean status = mEnrollmentUtil.addOrUpdateSoundModel(updated); if (status) { - Toast.makeText(this, "Successfully re-enrolled, model UUID=" + updated.uuid, + Toast.makeText(this, "Successfully re-enrolled, model UUID=" + updated.getUuid(), Toast.LENGTH_SHORT) .show(); } else { diff --git a/tests/WindowInsetsTests/src/com/google/android/test/windowinsetstests/WindowInsetsActivity.java b/tests/WindowInsetsTests/src/com/google/android/test/windowinsetstests/WindowInsetsActivity.java index 498cb7c1c710..548af0c54b03 100644 --- a/tests/WindowInsetsTests/src/com/google/android/test/windowinsetstests/WindowInsetsActivity.java +++ b/tests/WindowInsetsTests/src/com/google/android/test/windowinsetstests/WindowInsetsActivity.java @@ -18,6 +18,7 @@ package com.google.android.test.windowinsetstests; import static android.view.WindowInsets.Type.ime; import static android.view.WindowInsetsAnimation.Callback.DISPATCH_MODE_STOP; + import static java.lang.Math.max; import static java.lang.Math.min; @@ -30,7 +31,6 @@ import android.content.Context; import android.graphics.Insets; import android.os.Bundle; import android.util.AttributeSet; -import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; @@ -44,11 +44,11 @@ import android.view.WindowInsetsController.OnControllableInsetsChangedListener; import android.view.animation.LinearInterpolator; import android.widget.LinearLayout; +import androidx.appcompat.app.AppCompatActivity; + import java.util.ArrayList; import java.util.List; -import androidx.appcompat.app.AppCompatActivity; - public class WindowInsetsActivity extends AppCompatActivity { private View mRoot; @@ -191,40 +191,6 @@ public class WindowInsetsActivity extends AppCompatActivity { mTransitions.forEach(it -> it.onFinish(animation)); } }); - - findViewById(R.id.floating_action_button).setOnClickListener( - v -> v.getWindowInsetsController().controlWindowInsetsAnimation(ime(), -1, - new LinearInterpolator(), null /* cancellationSignal */, - new WindowInsetsAnimationControlListener() { - @Override - public void onReady( - WindowInsetsAnimationController controller, - int types) { - ValueAnimator anim = ValueAnimator.ofFloat(0f, 1f); - anim.setDuration(1500); - anim.addUpdateListener(animation - -> controller.setInsetsAndAlpha( - controller.getShownStateInsets(), - (float) animation.getAnimatedValue(), - anim.getAnimatedFraction())); - anim.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - super.onAnimationEnd(animation); - controller.finish(true); - } - }); - anim.start(); - } - - @Override - public void onCancelled(WindowInsetsAnimationController controller) { - } - - @Override - public void onFinished(WindowInsetsAnimationController controller) { - } - })); } @Override @@ -234,6 +200,57 @@ public class WindowInsetsActivity extends AppCompatActivity { getWindow().getDecorView().post(() -> getWindow().setDecorFitsSystemWindows(false)); } + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); + getWindow().getInsetsController().addOnControllableInsetsChangedListener( + new OnControllableInsetsChangedListener() { + + boolean hasControl = false; + @Override + public void onControllableInsetsChanged(WindowInsetsController controller, + int types) { + if ((types & ime()) != 0 && !hasControl) { + hasControl = true; + controller.controlWindowInsetsAnimation(ime(), -1, + new LinearInterpolator(), null /* cancellationSignal */, + new WindowInsetsAnimationControlListener() { + @Override + public void onReady( + WindowInsetsAnimationController controller, + int types) { + ValueAnimator anim = ValueAnimator.ofFloat(0f, 1f); + anim.setDuration(1500); + anim.addUpdateListener(animation + -> controller.setInsetsAndAlpha( + controller.getShownStateInsets(), + (float) animation.getAnimatedValue(), + anim.getAnimatedFraction())); + anim.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + controller.finish(true); + } + }); + anim.start(); + } + + @Override + public void onFinished( + WindowInsetsAnimationController controller) { + } + + @Override + public void onCancelled( + WindowInsetsAnimationController controller) { + } + }); + } + } + }); + } + static class Transition { private int mEndBottom; private int mStartBottom; diff --git a/tests/net/common/java/android/net/apf/ApfCapabilitiesTest.java b/tests/net/common/java/android/net/apf/ApfCapabilitiesTest.java index f4f804aff08d..84805442e5c7 100644 --- a/tests/net/common/java/android/net/apf/ApfCapabilitiesTest.java +++ b/tests/net/common/java/android/net/apf/ApfCapabilitiesTest.java @@ -21,17 +21,31 @@ import static com.android.testutils.ParcelUtilsKt.assertParcelSane; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import android.content.Context; + +import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import java.util.Arrays; + @RunWith(AndroidJUnit4.class) @SmallTest public class ApfCapabilitiesTest { + private Context mContext; + + @Before + public void setUp() { + mContext = InstrumentationRegistry.getContext(); + } + @Test public void testConstructAndParcel() { final ApfCapabilities caps = new ApfCapabilities(123, 456, 789); @@ -59,4 +73,27 @@ public class ApfCapabilitiesTest { caps = new ApfCapabilities(4 /* apfVersionSupported */, 5, 6); assertTrue(caps.hasDataAccess()); } + + @Test + public void testGetApfDrop8023Frames() { + // Get com.android.internal.R.bool.config_apfDrop802_3Frames. The test cannot directly + // use R.bool.config_apfDrop802_3Frames because that is not a stable resource ID. + final int resId = mContext.getResources().getIdentifier("config_apfDrop802_3Frames", + "bool", "android"); + final boolean shouldDrop8023Frames = mContext.getResources().getBoolean(resId); + final boolean actual = ApfCapabilities.getApfDrop8023Frames(); + assertEquals(shouldDrop8023Frames, actual); + } + + @Test + public void testGetApfEtherTypeBlackList() { + // Get com.android.internal.R.array.config_apfEthTypeBlackList. The test cannot directly + // use R.array.config_apfEthTypeBlackList because that is not a stable resource ID. + final int resId = mContext.getResources().getIdentifier("config_apfEthTypeBlackList", + "array", "android"); + final int[] blacklistedEtherTypeArray = mContext.getResources().getIntArray(resId); + final int[] actual = ApfCapabilities.getApfEtherTypeBlackList(); + assertNotNull(actual); + assertTrue(Arrays.equals(blacklistedEtherTypeArray, actual)); + } } diff --git a/tests/net/java/com/android/internal/net/VpnProfileTest.java b/tests/net/java/com/android/internal/net/VpnProfileTest.java index 8a4b53343c26..ceca6f028866 100644 --- a/tests/net/java/com/android/internal/net/VpnProfileTest.java +++ b/tests/net/java/com/android/internal/net/VpnProfileTest.java @@ -65,7 +65,7 @@ public class VpnProfileTest { assertTrue(p.getAllowedAlgorithms() != null && p.getAllowedAlgorithms().isEmpty()); assertFalse(p.isBypassable); assertFalse(p.isMetered); - assertEquals(1400, p.maxMtu); + assertEquals(1360, p.maxMtu); assertFalse(p.areAuthParamsInline); } diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index 4bfb51bca20e..86d8a820e4bd 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -205,6 +205,7 @@ import android.os.UserManager; import android.provider.Settings; import android.security.KeyStore; import android.system.Os; +import android.telephony.TelephonyManager; import android.test.mock.MockContentResolver; import android.text.TextUtils; import android.util.ArraySet; @@ -307,6 +308,8 @@ public class ConnectivityServiceTest { private static final long TIMESTAMP = 1234L; + private static final int NET_ID = 110; + private static final String CLAT_PREFIX = "v4-"; private static final String MOBILE_IFNAME = "test_rmnet_data0"; private static final String WIFI_IFNAME = "test_wlan0"; @@ -345,6 +348,7 @@ public class ConnectivityServiceTest { @Mock IBinder mIBinder; @Mock LocationManager mLocationManager; @Mock AppOpsManager mAppOpsManager; + @Mock TelephonyManager mTelephonyManager; private ArgumentCaptor<ResolverParamsParcel> mResolverParamsParcelCaptor = ArgumentCaptor.forClass(ResolverParamsParcel.class); @@ -431,6 +435,7 @@ public class ConnectivityServiceTest { if (Context.ALARM_SERVICE.equals(name)) return mAlarmManager; if (Context.LOCATION_SERVICE.equals(name)) return mLocationManager; if (Context.APP_OPS_SERVICE.equals(name)) return mAppOpsManager; + if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager; return super.getSystemService(name); } @@ -1015,6 +1020,7 @@ public class ConnectivityServiceTest { private int mVpnType = VpnManager.TYPE_VPN_SERVICE; private VpnInfo mVpnInfo; + private Network[] mUnderlyingNetworks; public MockVpn(int userId) { super(startHandlerThreadAndReturnLooper(), mServiceContext, mNetworkManagementService, @@ -1104,9 +1110,21 @@ public class ConnectivityServiceTest { return super.getVpnInfo(); } - private void setVpnInfo(VpnInfo vpnInfo) { + private synchronized void setVpnInfo(VpnInfo vpnInfo) { mVpnInfo = vpnInfo; } + + @Override + public synchronized Network[] getUnderlyingNetworks() { + if (mUnderlyingNetworks != null) return mUnderlyingNetworks; + + return super.getUnderlyingNetworks(); + } + + /** Don't override behavior for {@link Vpn#setUnderlyingNetworks}. */ + private synchronized void overrideUnderlyingNetworks(Network[] underlyingNetworks) { + mUnderlyingNetworks = underlyingNetworks; + } } private void mockVpn(int uid) { @@ -2896,7 +2914,7 @@ public class ConnectivityServiceTest { class ConfidentialMatchAllNetworkSpecifier extends NetworkSpecifier implements Parcelable { @Override - public boolean satisfiedBy(NetworkSpecifier other) { + public boolean canBeSatisfiedBy(NetworkSpecifier other) { return true; } @@ -2924,7 +2942,7 @@ public class ConnectivityServiceTest { } @Override - public boolean satisfiedBy(NetworkSpecifier other) { + public boolean canBeSatisfiedBy(NetworkSpecifier other) { if (other instanceof LocalStringNetworkSpecifier) { return TextUtils.equals(mString, ((LocalStringNetworkSpecifier) other).mString); @@ -3045,7 +3063,10 @@ public class ConnectivityServiceTest { }); class NonParcelableSpecifier extends NetworkSpecifier { - public boolean satisfiedBy(NetworkSpecifier other) { return false; } + @Override + public boolean canBeSatisfiedBy(NetworkSpecifier other) { + return false; + } }; class ParcelableSpecifier extends NonParcelableSpecifier implements Parcelable { @Override public int describeContents() { return 0; } @@ -6795,15 +6816,11 @@ public class ConnectivityServiceTest { mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED); - try { - assertFalse( - "Mismatched uid/package name should not pass the location permission check", - mService.checkConnectivityDiagnosticsPermissions( - Process.myPid() + 1, Process.myUid() + 1, naiWithoutUid, - mContext.getOpPackageName())); - } catch (SecurityException e) { - fail("checkConnectivityDiagnosticsPermissions shouldn't surface a SecurityException"); - } + assertFalse( + "Mismatched uid/package name should not pass the location permission check", + mService.checkConnectivityDiagnosticsPermissions( + Process.myPid() + 1, Process.myUid() + 1, naiWithoutUid, + mContext.getOpPackageName())); } @Test @@ -6824,9 +6841,10 @@ public class ConnectivityServiceTest { @Test public void testCheckConnectivityDiagnosticsPermissionsActiveVpn() throws Exception { + final Network network = new Network(NET_ID); final NetworkAgentInfo naiWithoutUid = new NetworkAgentInfo( - null, null, null, null, null, new NetworkCapabilities(), 0, + null, null, network, null, null, new NetworkCapabilities(), 0, mServiceContext, null, null, mService, null, null, null, 0); setupLocationPermissions(Build.VERSION_CODES.Q, true, AppOpsManager.OPSTR_FINE_LOCATION, @@ -6839,11 +6857,19 @@ public class ConnectivityServiceTest { info.ownerUid = Process.myUid(); info.vpnIface = "interface"; mMockVpn.setVpnInfo(info); + mMockVpn.overrideUnderlyingNetworks(new Network[] {network}); assertTrue( "Active VPN permission not applied", mService.checkConnectivityDiagnosticsPermissions( Process.myPid(), Process.myUid(), naiWithoutUid, mContext.getOpPackageName())); + + mMockVpn.overrideUnderlyingNetworks(null); + assertFalse( + "VPN shouldn't receive callback on non-underlying network", + mService.checkConnectivityDiagnosticsPermissions( + Process.myPid(), Process.myUid(), naiWithoutUid, + mContext.getOpPackageName())); } @Test diff --git a/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java b/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java index 71b72b84de81..23098ec067d2 100644 --- a/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java +++ b/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java @@ -46,6 +46,7 @@ import android.net.LinkAddress; import android.net.Network; import android.net.NetworkUtils; import android.os.Binder; +import android.os.INetworkManagementService; import android.os.ParcelFileDescriptor; import android.system.Os; import android.test.mock.MockContext; @@ -135,6 +136,7 @@ public class IpSecServiceParameterizedTest { }; INetd mMockNetd; + INetworkManagementService mNetworkManager; PackageManager mMockPkgMgr; IpSecService.IpSecServiceConfiguration mMockIpSecSrvConfig; IpSecService mIpSecService; @@ -160,9 +162,10 @@ public class IpSecServiceParameterizedTest { @Before public void setUp() throws Exception { mMockNetd = mock(INetd.class); + mNetworkManager = mock(INetworkManagementService.class); mMockPkgMgr = mock(PackageManager.class); mMockIpSecSrvConfig = mock(IpSecService.IpSecServiceConfiguration.class); - mIpSecService = new IpSecService(mMockContext, mMockIpSecSrvConfig); + mIpSecService = new IpSecService(mMockContext, mNetworkManager, mMockIpSecSrvConfig); // Injecting mock netd when(mMockIpSecSrvConfig.getNetdInstance()).thenReturn(mMockNetd); @@ -609,6 +612,7 @@ public class IpSecServiceParameterizedTest { anyInt(), anyInt(), anyInt()); + verify(mNetworkManager).setInterfaceUp(createTunnelResp.interfaceName); } @Test diff --git a/tests/net/java/com/android/server/IpSecServiceRefcountedResourceTest.java b/tests/net/java/com/android/server/IpSecServiceRefcountedResourceTest.java index 22a2c94fc194..788e4efe097e 100644 --- a/tests/net/java/com/android/server/IpSecServiceRefcountedResourceTest.java +++ b/tests/net/java/com/android/server/IpSecServiceRefcountedResourceTest.java @@ -31,6 +31,7 @@ import static org.mockito.Mockito.verify; import android.content.Context; import android.os.Binder; import android.os.IBinder; +import android.os.INetworkManagementService; import android.os.RemoteException; import androidx.test.filters.SmallTest; @@ -61,7 +62,8 @@ public class IpSecServiceRefcountedResourceTest { public void setUp() throws Exception { mMockContext = mock(Context.class); mMockIpSecSrvConfig = mock(IpSecService.IpSecServiceConfiguration.class); - mIpSecService = new IpSecService(mMockContext, mMockIpSecSrvConfig); + mIpSecService = new IpSecService( + mMockContext, mock(INetworkManagementService.class), mMockIpSecSrvConfig); } private void assertResourceState( diff --git a/tests/net/java/com/android/server/IpSecServiceTest.java b/tests/net/java/com/android/server/IpSecServiceTest.java index 4a35015044ff..536e98327e1f 100644 --- a/tests/net/java/com/android/server/IpSecServiceTest.java +++ b/tests/net/java/com/android/server/IpSecServiceTest.java @@ -42,6 +42,7 @@ import android.net.IpSecManager; import android.net.IpSecSpiResponse; import android.net.IpSecUdpEncapResponse; import android.os.Binder; +import android.os.INetworkManagementService; import android.os.ParcelFileDescriptor; import android.os.Process; import android.system.ErrnoException; @@ -115,6 +116,7 @@ public class IpSecServiceTest { } Context mMockContext; + INetworkManagementService mMockNetworkManager; INetd mMockNetd; IpSecService.IpSecServiceConfiguration mMockIpSecSrvConfig; IpSecService mIpSecService; @@ -122,9 +124,10 @@ public class IpSecServiceTest { @Before public void setUp() throws Exception { mMockContext = mock(Context.class); + mMockNetworkManager = mock(INetworkManagementService.class); mMockNetd = mock(INetd.class); mMockIpSecSrvConfig = mock(IpSecService.IpSecServiceConfiguration.class); - mIpSecService = new IpSecService(mMockContext, mMockIpSecSrvConfig); + mIpSecService = new IpSecService(mMockContext, mMockNetworkManager, mMockIpSecSrvConfig); // Injecting mock netd when(mMockIpSecSrvConfig.getNetdInstance()).thenReturn(mMockNetd); @@ -132,7 +135,7 @@ public class IpSecServiceTest { @Test public void testIpSecServiceCreate() throws InterruptedException { - IpSecService ipSecSrv = IpSecService.create(mMockContext); + IpSecService ipSecSrv = IpSecService.create(mMockContext, mMockNetworkManager); assertNotNull(ipSecSrv); } @@ -604,8 +607,8 @@ public class IpSecServiceTest { @Test public void testOpenUdpEncapSocketTagsSocket() throws Exception { IpSecService.UidFdTagger mockTagger = mock(IpSecService.UidFdTagger.class); - IpSecService testIpSecService = - new IpSecService(mMockContext, mMockIpSecSrvConfig, mockTagger); + IpSecService testIpSecService = new IpSecService( + mMockContext, mMockNetworkManager, mMockIpSecSrvConfig, mockTagger); IpSecUdpEncapResponse udpEncapResp = testIpSecService.openUdpEncapsulationSocket(0, new Binder()); diff --git a/tests/permission/src/com/android/framework/permission/tests/PmPermissionsTests.java b/tests/permission/src/com/android/framework/permission/tests/PmPermissionsTests.java index b39db61794de..299d8d003d9c 100644 --- a/tests/permission/src/com/android/framework/permission/tests/PmPermissionsTests.java +++ b/tests/permission/src/com/android/framework/permission/tests/PmPermissionsTests.java @@ -43,8 +43,8 @@ public class PmPermissionsTests extends AndroidTestCase { try { mPm.getPackageSizeInfo(mPkgName, null); fail("PackageManager.getPackageSizeInfo" + - "did not throw SecurityException as expected"); - } catch (SecurityException e) { + "did not throw UnsupportedOperationException as expected"); + } catch (UnsupportedOperationException e) { // expected } } @@ -130,4 +130,4 @@ public class PmPermissionsTests extends AndroidTestCase { // expected } } -}
\ No newline at end of file +} diff --git a/tools/aapt2/java/AnnotationProcessor.cpp b/tools/aapt2/java/AnnotationProcessor.cpp index a4610b2575b9..cec59e75831d 100644 --- a/tools/aapt2/java/AnnotationProcessor.cpp +++ b/tools/aapt2/java/AnnotationProcessor.cpp @@ -18,6 +18,7 @@ #include <algorithm> #include <array> +#include <regex> #include "text/Unicode.h" #include "text/Utf8Iterator.h" @@ -65,14 +66,26 @@ void AnnotationProcessor::AppendCommentLine(std::string comment) { // Treat deprecated specially, since we don't remove it from the source comment. if (comment.find(sDeprecated) != std::string::npos) { - annotation_bit_mask_ |= AnnotationRule::kDeprecated; + annotation_parameter_map_[AnnotationRule::kDeprecated] = ""; } for (const AnnotationRule& rule : sAnnotationRules) { std::string::size_type idx = comment.find(rule.doc_str.data()); if (idx != std::string::npos) { - annotation_bit_mask_ |= rule.bit_mask; - comment.erase(comment.begin() + idx, comment.begin() + idx + rule.doc_str.size()); + // Captures all parameters associated with the specified annotation rule + // by matching the first pair of parantheses after the rule. + std::regex re(rule.doc_str.to_string() + "\\s*\\((.+)\\)"); + std::smatch match_result; + const bool is_match = std::regex_search(comment, match_result, re); + // We currently only capture and preserve parameters for SystemApi. + if (is_match && rule.bit_mask == AnnotationRule::kSystemApi) { + annotation_parameter_map_[rule.bit_mask] = match_result[1].str(); + comment.erase(comment.begin() + match_result.position(), + comment.begin() + match_result.position() + match_result.length()); + } else { + annotation_parameter_map_[rule.bit_mask] = ""; + comment.erase(comment.begin() + idx, comment.begin() + idx + rule.doc_str.size()); + } } } @@ -119,13 +132,19 @@ void AnnotationProcessor::Print(Printer* printer) const { printer->Println(" */"); } - if (annotation_bit_mask_ & AnnotationRule::kDeprecated) { + if (annotation_parameter_map_.find(AnnotationRule::kDeprecated) != + annotation_parameter_map_.end()) { printer->Println("@Deprecated"); } for (const AnnotationRule& rule : sAnnotationRules) { - if (annotation_bit_mask_ & rule.bit_mask) { - printer->Println(rule.annotation); + const auto& it = annotation_parameter_map_.find(rule.bit_mask); + if (it != annotation_parameter_map_.end()) { + printer->Print(rule.annotation); + if (!it->second.empty()) { + printer->Print("(").Print(it->second).Print(")"); + } + printer->Print("\n"); } } } diff --git a/tools/aapt2/java/AnnotationProcessor.h b/tools/aapt2/java/AnnotationProcessor.h index ae7bdb0c3ae2..fdb58468d995 100644 --- a/tools/aapt2/java/AnnotationProcessor.h +++ b/tools/aapt2/java/AnnotationProcessor.h @@ -19,6 +19,7 @@ #include <sstream> #include <string> +#include <unordered_map> #include "androidfw/StringPiece.h" @@ -70,7 +71,7 @@ class AnnotationProcessor { std::stringstream comment_; std::stringstream mAnnotations; bool has_comments_ = false; - uint32_t annotation_bit_mask_ = 0; + std::unordered_map<uint32_t, std::string> annotation_parameter_map_; void AppendCommentLine(std::string line); }; diff --git a/tools/aapt2/java/AnnotationProcessor_test.cpp b/tools/aapt2/java/AnnotationProcessor_test.cpp index 69f49c8b97c3..7d0a4e9af632 100644 --- a/tools/aapt2/java/AnnotationProcessor_test.cpp +++ b/tools/aapt2/java/AnnotationProcessor_test.cpp @@ -61,6 +61,21 @@ TEST(AnnotationProcessorTest, EmitsSystemApiAnnotationAndRemovesFromComment) { EXPECT_THAT(annotations, HasSubstr("This is a system API")); } +TEST(AnnotationProcessorTest, EmitsSystemApiAnnotationParamsAndRemovesFromComment) { + AnnotationProcessor processor; + processor.AppendComment("@SystemApi (p1=k1,p2=k2) This is a system API"); + + std::string annotations; + StringOutputStream out(&annotations); + Printer printer(&out); + processor.Print(&printer); + out.Flush(); + + EXPECT_THAT(annotations, HasSubstr("@android.annotation.SystemApi(p1=k1,p2=k2)")); + EXPECT_THAT(annotations, Not(HasSubstr("@SystemApi"))); + EXPECT_THAT(annotations, HasSubstr("This is a system API")); +} + TEST(AnnotationProcessorTest, EmitsTestApiAnnotationAndRemovesFromComment) { AnnotationProcessor processor; processor.AppendComment("@TestApi This is a test API"); diff --git a/tools/stats_log_api_gen/Collation.cpp b/tools/stats_log_api_gen/Collation.cpp index bf390935455a..1387bb5f7bc6 100644 --- a/tools/stats_log_api_gen/Collation.cpp +++ b/tools/stats_log_api_gen/Collation.cpp @@ -454,16 +454,12 @@ bool get_non_chained_node(const Descriptor* atom, AtomDecl* atomDecl, return has_attribution_node; } -static void populateFieldNumberToAnnotations(const AtomDecl& atomDecl, - FieldNumberToAnnotations* fieldNumberToAnnotations) { - for (FieldNumberToAnnotations::const_iterator it = atomDecl.fieldNumberToAnnotations.begin(); - it != atomDecl.fieldNumberToAnnotations.end(); it++) { +static void populateFieldNumberToAtomDeclSet(const shared_ptr<AtomDecl>& atomDecl, + FieldNumberToAtomDeclSet* fieldNumberToAtomDeclSet) { + for (FieldNumberToAnnotations::const_iterator it = atomDecl->fieldNumberToAnnotations.begin(); + it != atomDecl->fieldNumberToAnnotations.end(); it++) { const int fieldNumber = it->first; - const set<shared_ptr<Annotation>>& insertAnnotationsSource = it->second; - set<shared_ptr<Annotation>>& insertAnnotationsTarget = - (*fieldNumberToAnnotations)[fieldNumber]; - insertAnnotationsTarget.insert(insertAnnotationsSource.begin(), - insertAnnotationsSource.end()); + (*fieldNumberToAtomDeclSet)[fieldNumber].insert(atomDecl); } } @@ -513,18 +509,19 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms* } const Descriptor* atom = atomField->message_type(); - AtomDecl atomDecl(atomField->number(), atomField->name(), atom->name()); + shared_ptr<AtomDecl> atomDecl = + make_shared<AtomDecl>(atomField->number(), atomField->name(), atom->name()); if (atomField->options().GetExtension(os::statsd::allow_from_any_uid) == true) { - atomDecl.whitelisted = true; + atomDecl->whitelisted = true; if (dbg) { printf("%s is whitelisted\n", atomField->name().c_str()); } } - if (atomDecl.code < PULL_ATOM_START_ID && + if (atomDecl->code < PULL_ATOM_START_ID && atomField->options().GetExtension(os::statsd::truncate_timestamp)) { - addAnnotationToAtomDecl(&atomDecl, ATOM_ID_FIELD_NUMBER, + addAnnotationToAtomDecl(atomDecl.get(), ATOM_ID_FIELD_NUMBER, ANNOTATION_ID_TRUNCATE_TIMESTAMP, ANNOTATION_TYPE_BOOL, AnnotationValue(true)); if (dbg) { @@ -533,29 +530,33 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms* } vector<java_type_t> signature; - errorCount += collate_atom(atom, &atomDecl, &signature); - if (atomDecl.primaryFields.size() != 0 && atomDecl.exclusiveField == 0) { + errorCount += collate_atom(atom, atomDecl.get(), &signature); + if (atomDecl->primaryFields.size() != 0 && atomDecl->exclusiveField == 0) { print_error(atomField, "Cannot have a primary field without an exclusive field: %s\n", atomField->name().c_str()); errorCount++; continue; } + FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = atoms->signatureInfoMap[signature]; + populateFieldNumberToAtomDeclSet(atomDecl, &fieldNumberToAtomDeclSet); + atoms->decls.insert(atomDecl); - FieldNumberToAnnotations& fieldNumberToAnnotations = atoms->signatureInfoMap[signature]; - populateFieldNumberToAnnotations(atomDecl, &fieldNumberToAnnotations); - AtomDecl nonChainedAtomDecl(atomField->number(), atomField->name(), atom->name()); + shared_ptr<AtomDecl> nonChainedAtomDecl = + make_shared<AtomDecl>(atomField->number(), atomField->name(), atom->name()); vector<java_type_t> nonChainedSignature; - if (get_non_chained_node(atom, &nonChainedAtomDecl, &nonChainedSignature)) { - atoms->non_chained_decls.insert(nonChainedAtomDecl); - FieldNumberToAnnotations& fieldNumberToAnnotations = + if (get_non_chained_node(atom, nonChainedAtomDecl.get(), &nonChainedSignature)) { + FieldNumberToAtomDeclSet& nonChainedFieldNumberToAtomDeclSet = atoms->nonChainedSignatureInfoMap[nonChainedSignature]; - populateFieldNumberToAnnotations(atomDecl, &fieldNumberToAnnotations); + populateFieldNumberToAtomDeclSet(nonChainedAtomDecl, + &nonChainedFieldNumberToAtomDeclSet); + + atoms->non_chained_decls.insert(nonChainedAtomDecl); } - if (atomDecl.code < PULL_ATOM_START_ID && atomDecl.code > maxPushedAtomId) { - maxPushedAtomId = atomDecl.code; + if (atomDecl->code < PULL_ATOM_START_ID && atomDecl->code > maxPushedAtomId) { + maxPushedAtomId = atomDecl->code; } } @@ -563,8 +564,7 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms* if (dbg) { printf("signatures = [\n"); - for (map<vector<java_type_t>, FieldNumberToAnnotations>::const_iterator it = - atoms->signatureInfoMap.begin(); + for (SignatureInfoMap::const_iterator it = atoms->signatureInfoMap.begin(); it != atoms->signatureInfoMap.end(); it++) { printf(" "); for (vector<java_type_t>::const_iterator jt = it->first.begin(); jt != it->first.end(); diff --git a/tools/stats_log_api_gen/Collation.h b/tools/stats_log_api_gen/Collation.h index 2aedb216b9c1..b1cf1347a98d 100644 --- a/tools/stats_log_api_gen/Collation.h +++ b/tools/stats_log_api_gen/Collation.h @@ -110,7 +110,16 @@ struct Annotation { } }; -using FieldNumberToAnnotations = map<int, set<shared_ptr<Annotation>>>; +struct SharedComparator { + template <typename T> + inline bool operator()(const shared_ptr<T>& lhs, const shared_ptr<T>& rhs) const { + return (*lhs) < (*rhs); + } +}; + +using AnnotationSet = set<shared_ptr<Annotation>, SharedComparator>; + +using FieldNumberToAnnotations = map<int, AnnotationSet>; /** * The name and type for an atom field. @@ -169,11 +178,19 @@ struct AtomDecl { } }; +using AtomDeclSet = set<shared_ptr<AtomDecl>, SharedComparator>; + +// Maps a field number to a set of atoms that have annotation(s) for their field with that field +// number. +using FieldNumberToAtomDeclSet = map<int, AtomDeclSet>; + +using SignatureInfoMap = map<vector<java_type_t>, FieldNumberToAtomDeclSet>; + struct Atoms { - map<vector<java_type_t>, FieldNumberToAnnotations> signatureInfoMap; - set<AtomDecl> decls; - set<AtomDecl> non_chained_decls; - map<vector<java_type_t>, FieldNumberToAnnotations> nonChainedSignatureInfoMap; + SignatureInfoMap signatureInfoMap; + AtomDeclSet decls; + AtomDeclSet non_chained_decls; + SignatureInfoMap nonChainedSignatureInfoMap; int maxPushedAtomId; }; diff --git a/tools/stats_log_api_gen/atoms_info_writer.cpp b/tools/stats_log_api_gen/atoms_info_writer.cpp index 69447527efc8..862fed4656b4 100644 --- a/tools/stats_log_api_gen/atoms_info_writer.cpp +++ b/tools/stats_log_api_gen/atoms_info_writer.cpp @@ -62,11 +62,11 @@ static void write_atoms_info_cpp_body(FILE* out, const Atoms& atoms) { fprintf(out, "const std::set<int> " "AtomsInfo::kTruncatingTimestampAtomBlackList = {\n"); - for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); atom != atoms.decls.end(); - atom++) { - if (kTruncatingAtomNames.find(atom->name) != kTruncatingAtomNames.end()) { - const string constant = make_constant_name(atom->name); - fprintf(out, " %d, // %s\n", atom->code, constant.c_str()); + for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); + atomIt++) { + if (kTruncatingAtomNames.find((*atomIt)->name) != kTruncatingAtomNames.end()) { + const string constant = make_constant_name((*atomIt)->name); + fprintf(out, " %d, // %s\n", (*atomIt)->code, constant.c_str()); } } @@ -74,13 +74,13 @@ static void write_atoms_info_cpp_body(FILE* out, const Atoms& atoms) { fprintf(out, "\n"); fprintf(out, "const std::set<int> AtomsInfo::kAtomsWithAttributionChain = {\n"); - for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); atom != atoms.decls.end(); - atom++) { - for (vector<AtomField>::const_iterator field = atom->fields.begin(); - field != atom->fields.end(); field++) { + for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); + atomIt++) { + for (vector<AtomField>::const_iterator field = (*atomIt)->fields.begin(); + field != (*atomIt)->fields.end(); field++) { if (field->javaType == JAVA_TYPE_ATTRIBUTION_CHAIN) { - const string constant = make_constant_name(atom->name); - fprintf(out, " %d, // %s\n", atom->code, constant.c_str()); + const string constant = make_constant_name((*atomIt)->name); + fprintf(out, " %d, // %s\n", (*atomIt)->code, constant.c_str()); break; } } @@ -90,11 +90,11 @@ static void write_atoms_info_cpp_body(FILE* out, const Atoms& atoms) { fprintf(out, "\n"); fprintf(out, "const std::set<int> AtomsInfo::kWhitelistedAtoms = {\n"); - for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); atom != atoms.decls.end(); - atom++) { - if (atom->whitelisted) { - const string constant = make_constant_name(atom->name); - fprintf(out, " %d, // %s\n", atom->code, constant.c_str()); + for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); + atomIt++) { + if ((*atomIt)->whitelisted) { + const string constant = make_constant_name((*atomIt)->name); + fprintf(out, " %d, // %s\n", (*atomIt)->code, constant.c_str()); } } @@ -103,17 +103,17 @@ static void write_atoms_info_cpp_body(FILE* out, const Atoms& atoms) { fprintf(out, "static std::map<int, int> getAtomUidField() {\n"); fprintf(out, " std::map<int, int> uidField;\n"); - for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); atom != atoms.decls.end(); - atom++) { - if (atom->uidField == 0) { + for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); + atomIt++) { + if ((*atomIt)->uidField == 0) { continue; } fprintf(out, "\n // Adding uid field for atom " "(%d)%s\n", - atom->code, atom->name.c_str()); - fprintf(out, " uidField[%d /* %s */] = %d;\n", atom->code, - make_constant_name(atom->name).c_str(), atom->uidField); + (*atomIt)->code, (*atomIt)->name.c_str()); + fprintf(out, " uidField[%d /* %s */] = %d;\n", (*atomIt)->code, + make_constant_name((*atomIt)->name).c_str(), (*atomIt)->uidField); } fprintf(out, " return uidField;\n"); @@ -128,35 +128,35 @@ static void write_atoms_info_cpp_body(FILE* out, const Atoms& atoms) { "getStateAtomFieldOptions() {\n"); fprintf(out, " std::map<int, StateAtomFieldOptions> options;\n"); fprintf(out, " StateAtomFieldOptions* opt;\n"); - for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); atom != atoms.decls.end(); - atom++) { - if (atom->primaryFields.size() == 0 && atom->exclusiveField == 0) { + for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); + atomIt++) { + if ((*atomIt)->primaryFields.size() == 0 && (*atomIt)->exclusiveField == 0) { continue; } fprintf(out, "\n // Adding primary and exclusive fields for atom " "(%d)%s\n", - atom->code, atom->name.c_str()); - fprintf(out, " opt = &(options[%d /* %s */]);\n", atom->code, - make_constant_name(atom->name).c_str()); - fprintf(out, " opt->primaryFields.reserve(%lu);\n", atom->primaryFields.size()); - for (const auto& field : atom->primaryFields) { + (*atomIt)->code, (*atomIt)->name.c_str()); + fprintf(out, " opt = &(options[%d /* %s */]);\n", (*atomIt)->code, + make_constant_name((*atomIt)->name).c_str()); + fprintf(out, " opt->primaryFields.reserve(%lu);\n", (*atomIt)->primaryFields.size()); + for (const auto& field : (*atomIt)->primaryFields) { fprintf(out, " opt->primaryFields.push_back(%d);\n", field); } - fprintf(out, " opt->exclusiveField = %d;\n", atom->exclusiveField); - if (atom->defaultState != INT_MAX) { - fprintf(out, " opt->defaultState = %d;\n", atom->defaultState); + fprintf(out, " opt->exclusiveField = %d;\n", (*atomIt)->exclusiveField); + if ((*atomIt)->defaultState != INT_MAX) { + fprintf(out, " opt->defaultState = %d;\n", (*atomIt)->defaultState); } else { fprintf(out, " opt->defaultState = UNSET_VALUE;\n"); } - if (atom->resetState != INT_MAX) { - fprintf(out, " opt->resetState = %d;\n", atom->resetState); + if ((*atomIt)->resetState != INT_MAX) { + fprintf(out, " opt->resetState = %d;\n", (*atomIt)->resetState); } else { fprintf(out, " opt->resetState = UNSET_VALUE;\n"); } - fprintf(out, " opt->nested = %d;\n", atom->nested); + fprintf(out, " opt->nested = %d;\n", (*atomIt)->nested); } fprintf(out, " return options;\n"); diff --git a/tools/stats_log_api_gen/java_writer.cpp b/tools/stats_log_api_gen/java_writer.cpp index 5a22b5c4cd6b..3eabb14e3fd4 100644 --- a/tools/stats_log_api_gen/java_writer.cpp +++ b/tools/stats_log_api_gen/java_writer.cpp @@ -22,9 +22,8 @@ namespace android { namespace stats_log_api_gen { -static int write_java_q_logger_class( - FILE* out, const map<vector<java_type_t>, FieldNumberToAnnotations>& signatureInfoMap, - const AtomDecl& attributionDecl) { +static int write_java_q_logger_class(FILE* out, const SignatureInfoMap& signatureInfoMap, + const AtomDecl& attributionDecl) { fprintf(out, "\n"); fprintf(out, " // Write logging helper methods for statsd in Q and earlier.\n"); fprintf(out, " private static class QLogger {\n"); @@ -41,47 +40,64 @@ static int write_java_q_logger_class( } static void write_annotations(FILE* out, int argIndex, - const FieldNumberToAnnotations& fieldNumberToAnnotations) { - auto it = fieldNumberToAnnotations.find(argIndex); - if (it == fieldNumberToAnnotations.end()) { + const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet) { + FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt = + fieldNumberToAtomDeclSet.find(argIndex); + if (fieldNumberToAtomDeclSet.end() == fieldNumberToAtomDeclSetIt) { return; } - const set<shared_ptr<Annotation>>& annotations = it->second; - for (auto& annotation : annotations) { - // TODO(b/151744250): Group annotations for same atoms. - // TODO(b/151786433): Write atom constant name instead of atom id literal. - fprintf(out, " if (code == %d) {\n", annotation->atomId); - switch (annotation->type) { - case ANNOTATION_TYPE_INT: + const AtomDeclSet& atomDeclSet = fieldNumberToAtomDeclSetIt->second; + for (const shared_ptr<AtomDecl>& atomDecl : atomDeclSet) { + fprintf(out, " if (code == %d) {\n", atomDecl->code); + const AnnotationSet& annotations = atomDecl->fieldNumberToAnnotations.at(argIndex); + int resetState = -1; + int defaultState = -1; + for (const shared_ptr<Annotation>& annotation : annotations) { + // TODO(b/151786433): Write atom constant name instead of atom id literal. + switch (annotation->type) { // TODO(b/151776731): Check for reset state annotation and only include // reset state when field value == default state annotation value. - // TODO(b/151786433): Write annotation constant name instead of - // annotation id literal. - fprintf(out, " builder.addIntAnnotation((byte) %d, %d);\n", - annotation->annotationId, annotation->value.intValue); - break; - case ANNOTATION_TYPE_BOOL: - // TODO(b/151786433): Write annotation constant name instead of - // annotation id literal. - fprintf(out, " builder.addBooleanAnnotation((byte) %d, %s);\n", - annotation->annotationId, annotation->value.boolValue ? "true" : "false"); - break; - default: - break; + case ANNOTATION_TYPE_INT: + // TODO(b/151786433): Write annotation constant name instead of + // annotation id literal. + if (ANNOTATION_ID_RESET_STATE == annotation->annotationId) { + resetState = annotation->value.intValue; + } else if (ANNOTATION_ID_DEFAULT_STATE == annotation->annotationId) { + defaultState = annotation->value.intValue; + } else { + fprintf(out, " builder.addIntAnnotation((byte) %d, %d);\n", + annotation->annotationId, annotation->value.intValue); + } + break; + case ANNOTATION_TYPE_BOOL: + // TODO(b/151786433): Write annotation constant name instead of + // annotation id literal. + fprintf(out, " builder.addBooleanAnnotation((byte) %d, %s);\n", + annotation->annotationId, + annotation->value.boolValue ? "true" : "false"); + break; + default: + break; + } + } + if (defaultState != -1 && resetState != -1) { + fprintf(out, " if (arg%d == %d) {\n", argIndex, resetState); + fprintf(out, " builder.addIntAnnotation((byte) %d, %d);\n", + ANNOTATION_ID_RESET_STATE, defaultState); + fprintf(out, " }\n"); } fprintf(out, " }\n"); } } -static int write_java_methods( - FILE* out, const map<vector<java_type_t>, FieldNumberToAnnotations>& signatureInfoMap, - const AtomDecl& attributionDecl, const bool supportQ) { +static int write_java_methods(FILE* out, const SignatureInfoMap& signatureInfoMap, + const AtomDecl& attributionDecl, const bool supportQ) { for (auto signatureInfoMapIt = signatureInfoMap.begin(); signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) { // Print method signature. fprintf(out, " public static void write(int code"); const vector<java_type_t>& signature = signatureInfoMapIt->first; - const FieldNumberToAnnotations& fieldNumberToAnnotations = signatureInfoMapIt->second; + const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second; int argIndex = 1; for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end(); arg++) { @@ -120,7 +136,7 @@ static int write_java_methods( // Write atom code. fprintf(out, "%s builder.setAtomId(code);\n", indent.c_str()); - write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAnnotations); + write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAtomDeclSet); // Write the args. argIndex = 1; @@ -231,7 +247,7 @@ static int write_java_methods( fprintf(stderr, "Encountered unsupported type."); return 1; } - write_annotations(out, argIndex, fieldNumberToAnnotations); + write_annotations(out, argIndex, fieldNumberToAtomDeclSet); argIndex++; } diff --git a/tools/stats_log_api_gen/java_writer_q.cpp b/tools/stats_log_api_gen/java_writer_q.cpp index 7d225834aba2..d21e2708b724 100644 --- a/tools/stats_log_api_gen/java_writer_q.cpp +++ b/tools/stats_log_api_gen/java_writer_q.cpp @@ -53,9 +53,8 @@ void write_java_q_logging_constants(FILE* out, const string& indent) { fprintf(out, "%sprivate static final int LIST_TYPE_OVERHEAD = 2;\n", indent.c_str()); } -int write_java_methods_q_schema( - FILE* out, const map<vector<java_type_t>, FieldNumberToAnnotations>& signatureInfoMap, - const AtomDecl& attributionDecl, const string& indent) { +int write_java_methods_q_schema(FILE* out, const SignatureInfoMap& signatureInfoMap, + const AtomDecl& attributionDecl, const string& indent) { int requiredHelpers = 0; for (auto signatureInfoMapIt = signatureInfoMap.begin(); signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) { diff --git a/tools/stats_log_api_gen/java_writer_q.h b/tools/stats_log_api_gen/java_writer_q.h index f1cfc44494e5..c511a8436416 100644 --- a/tools/stats_log_api_gen/java_writer_q.h +++ b/tools/stats_log_api_gen/java_writer_q.h @@ -32,9 +32,8 @@ using namespace std; void write_java_q_logging_constants(FILE* out, const string& indent); -int write_java_methods_q_schema( - FILE* out, const map<vector<java_type_t>, FieldNumberToAnnotations>& signatureInfoMap, - const AtomDecl& attributionDecl, const string& indent); +int write_java_methods_q_schema(FILE* out, const SignatureInfoMap& signatureInfoMap, + const AtomDecl& attributionDecl, const string& indent); void write_java_helpers_for_q_schema_methods(FILE* out, const AtomDecl& attributionDecl, const int requiredHelpers, const string& indent); diff --git a/tools/stats_log_api_gen/native_writer.cpp b/tools/stats_log_api_gen/native_writer.cpp index 0cf3225e7708..c0d73fa6261f 100644 --- a/tools/stats_log_api_gen/native_writer.cpp +++ b/tools/stats_log_api_gen/native_writer.cpp @@ -22,35 +22,53 @@ namespace android { namespace stats_log_api_gen { static void write_annotations(FILE* out, int argIndex, - const FieldNumberToAnnotations& fieldNumberToAnnotations, + const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet, const string& methodPrefix, const string& methodSuffix) { - auto fieldNumberToAnnotationsIt = fieldNumberToAnnotations.find(argIndex); - if (fieldNumberToAnnotationsIt == fieldNumberToAnnotations.end()) { + FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt = + fieldNumberToAtomDeclSet.find(argIndex); + if (fieldNumberToAtomDeclSet.end() == fieldNumberToAtomDeclSetIt) { return; } - const set<shared_ptr<Annotation>>& annotations = fieldNumberToAnnotationsIt->second; - for (const shared_ptr<Annotation>& annotation : annotations) { - // TODO(b/151744250): Group annotations for same atoms. - // TODO(b/151786433): Write atom constant name instead of atom id literal. - fprintf(out, " if (code == %d) {\n", annotation->atomId); - switch (annotation->type) { - // TODO(b/151776731): Check for reset state annotation and only include - // reset state when field value == default state annotation value. - case ANNOTATION_TYPE_INT: - // TODO(b/151786433): Write annotation constant name instead of - // annotation id literal. - fprintf(out, " %saddInt32Annotation(%s%d, %d);\n", methodPrefix.c_str(), - methodSuffix.c_str(), annotation->annotationId, annotation->value.intValue); - break; - case ANNOTATION_TYPE_BOOL: - // TODO(b/151786433): Write annotation constant name instead of - // annotation id literal. - fprintf(out, " %saddBoolAnnotation(%s%d, %s);\n", methodPrefix.c_str(), - methodSuffix.c_str(), annotation->annotationId, - annotation->value.boolValue ? "true" : "false"); - break; - default: - break; + const AtomDeclSet& atomDeclSet = fieldNumberToAtomDeclSetIt->second; + for (const shared_ptr<AtomDecl>& atomDecl : atomDeclSet) { + fprintf(out, " if (code == %d) {\n", atomDecl->code); + const AnnotationSet& annotations = atomDecl->fieldNumberToAnnotations.at(argIndex); + int resetState = -1; + int defaultState = -1; + for (const shared_ptr<Annotation>& annotation : annotations) { + // TODO(b/151786433): Write atom constant name instead of atom id literal. + switch (annotation->type) { + // TODO(b/151776731): Check for reset state annotation and only include + // reset state when field value == default state annotation value. + case ANNOTATION_TYPE_INT: + // TODO(b/151786433): Write annotation constant name instead of + // annotation id literal. + if (ANNOTATION_ID_RESET_STATE == annotation->annotationId) { + resetState = annotation->value.intValue; + } else if (ANNOTATION_ID_DEFAULT_STATE == annotation->annotationId) { + defaultState = annotation->value.intValue; + } else { + fprintf(out, " %saddInt32Annotation(%s%d, %d);\n", + methodPrefix.c_str(), methodSuffix.c_str(), + annotation->annotationId, annotation->value.intValue); + } + break; + case ANNOTATION_TYPE_BOOL: + // TODO(b/151786433): Write annotation constant name instead of + // annotation id literal. + fprintf(out, " %saddBoolAnnotation(%s%d, %s);\n", methodPrefix.c_str(), + methodSuffix.c_str(), annotation->annotationId, + annotation->value.boolValue ? "true" : "false"); + break; + default: + break; + } + } + if (defaultState != -1 && resetState != -1) { + fprintf(out, " if (arg%d == %d) {\n", argIndex, resetState); + fprintf(out, " %saddInt32Annotation(%s%d, %d);\n", methodPrefix.c_str(), + methodSuffix.c_str(), ANNOTATION_ID_RESET_STATE, defaultState); + fprintf(out, " }\n"); } fprintf(out, " }\n"); } @@ -62,7 +80,7 @@ static int write_native_stats_write_methods(FILE* out, const Atoms& atoms, for (auto signatureInfoMapIt = atoms.signatureInfoMap.begin(); signatureInfoMapIt != atoms.signatureInfoMap.end(); signatureInfoMapIt++) { vector<java_type_t> signature = signatureInfoMapIt->first; - const FieldNumberToAnnotations& fieldNumberToAnnotations = signatureInfoMapIt->second; + const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second; // Key value pairs not supported in native. if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) { continue; @@ -73,7 +91,7 @@ static int write_native_stats_write_methods(FILE* out, const Atoms& atoms, if (supportQ) { fprintf(out, " StatsEventCompat event;\n"); fprintf(out, " event.setAtomId(code);\n"); - write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAnnotations, "event.", ""); + write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAtomDeclSet, "event.", ""); for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end(); arg++) { switch (*arg) { @@ -109,14 +127,14 @@ static int write_native_stats_write_methods(FILE* out, const Atoms& atoms, fprintf(stderr, "Encountered unsupported type."); return 1; } - write_annotations(out, argIndex, fieldNumberToAnnotations, "event.", ""); + write_annotations(out, argIndex, fieldNumberToAtomDeclSet, "event.", ""); argIndex++; } fprintf(out, " return event.writeToSocket();\n"); } else { fprintf(out, " AStatsEvent* event = AStatsEvent_obtain();\n"); fprintf(out, " AStatsEvent_setAtomId(event, code);\n"); - write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAnnotations, "AStatsEvent_", + write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAtomDeclSet, "AStatsEvent_", "event, "); for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end(); arg++) { @@ -159,7 +177,7 @@ static int write_native_stats_write_methods(FILE* out, const Atoms& atoms, fprintf(stderr, "Encountered unsupported type."); return 1; } - write_annotations(out, argIndex, fieldNumberToAnnotations, "AStatsEvent_", + write_annotations(out, argIndex, fieldNumberToAtomDeclSet, "AStatsEvent_", "event, "); argIndex++; } @@ -209,10 +227,9 @@ static void write_native_stats_write_non_chained_methods(FILE* out, const Atoms& } } -static void write_native_method_header( - FILE* out, const string& methodName, - const map<vector<java_type_t>, FieldNumberToAnnotations>& signatureInfoMap, - const AtomDecl& attributionDecl) { +static void write_native_method_header(FILE* out, const string& methodName, + const SignatureInfoMap& signatureInfoMap, + const AtomDecl& attributionDecl) { for (auto signatureInfoMapIt = signatureInfoMap.begin(); signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) { vector<java_type_t> signature = signatureInfoMapIt->first; @@ -278,16 +295,17 @@ int write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl& attrib fprintf(out, "//\n"); fprintf(out, "// Constants for enum values\n"); fprintf(out, "//\n\n"); - for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); atom != atoms.decls.end(); - atom++) { - for (vector<AtomField>::const_iterator field = atom->fields.begin(); - field != atom->fields.end(); field++) { + for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); + atomIt++) { + for (vector<AtomField>::const_iterator field = (*atomIt)->fields.begin(); + field != (*atomIt)->fields.end(); field++) { if (field->javaType == JAVA_TYPE_ENUM) { - fprintf(out, "// Values for %s.%s\n", atom->message.c_str(), field->name.c_str()); + fprintf(out, "// Values for %s.%s\n", (*atomIt)->message.c_str(), + field->name.c_str()); for (map<int, string>::const_iterator value = field->enumValues.begin(); value != field->enumValues.end(); value++) { fprintf(out, "const int32_t %s__%s__%s = %d;\n", - make_constant_name(atom->message).c_str(), + make_constant_name((*atomIt)->message).c_str(), make_constant_name(field->name).c_str(), make_constant_name(value->second).c_str(), value->first); } diff --git a/tools/stats_log_api_gen/test_collation.cpp b/tools/stats_log_api_gen/test_collation.cpp index 9878926bb045..c654a1b03051 100644 --- a/tools/stats_log_api_gen/test_collation.cpp +++ b/tools/stats_log_api_gen/test_collation.cpp @@ -30,8 +30,7 @@ using std::vector; /** * Return whether the map contains a vector of the elements provided. */ -static bool map_contains_vector(const map<vector<java_type_t>, FieldNumberToAnnotations>& s, - int count, ...) { +static bool map_contains_vector(const SignatureInfoMap& s, int count, ...) { va_list args; vector<java_type_t> v; @@ -110,35 +109,37 @@ TEST(CollationTest, CollateStats) { JAVA_TYPE_LONG // sint64 ); - set<AtomDecl>::const_iterator atom = atoms.decls.begin(); - EXPECT_EQ(1, atom->code); - EXPECT_EQ("int_atom", atom->name); - EXPECT_EQ("IntAtom", atom->message); - EXPECT_NO_ENUM_FIELD(atom); - atom++; - - EXPECT_EQ(2, atom->code); - EXPECT_EQ("out_of_order_atom", atom->name); - EXPECT_EQ("OutOfOrderAtom", atom->message); - EXPECT_NO_ENUM_FIELD(atom); - atom++; - - EXPECT_EQ(3, atom->code); - EXPECT_EQ("another_int_atom", atom->name); - EXPECT_EQ("AnotherIntAtom", atom->message); - EXPECT_NO_ENUM_FIELD(atom); - atom++; - - EXPECT_EQ(4, atom->code); - EXPECT_EQ("all_types_atom", atom->name); - EXPECT_EQ("AllTypesAtom", atom->message); + EXPECT_EQ(4ul, atoms.decls.size()); + + AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); + EXPECT_EQ(1, (*atomIt)->code); + EXPECT_EQ("int_atom", (*atomIt)->name); + EXPECT_EQ("IntAtom", (*atomIt)->message); + EXPECT_NO_ENUM_FIELD((*atomIt)); + atomIt++; + + EXPECT_EQ(2, (*atomIt)->code); + EXPECT_EQ("out_of_order_atom", (*atomIt)->name); + EXPECT_EQ("OutOfOrderAtom", (*atomIt)->message); + EXPECT_NO_ENUM_FIELD((*atomIt)); + atomIt++; + + EXPECT_EQ(3, (*atomIt)->code); + EXPECT_EQ("another_int_atom", (*atomIt)->name); + EXPECT_EQ("AnotherIntAtom", (*atomIt)->message); + EXPECT_NO_ENUM_FIELD((*atomIt)); + atomIt++; + + EXPECT_EQ(4, (*atomIt)->code); + EXPECT_EQ("all_types_atom", (*atomIt)->name); + EXPECT_EQ("AllTypesAtom", (*atomIt)->message); map<int, string> enumValues; enumValues[0] = "VALUE0"; enumValues[1] = "VALUE1"; - EXPECT_HAS_ENUM_FIELD(atom, "enum_field", enumValues); - atom++; + EXPECT_HAS_ENUM_FIELD((*atomIt), "enum_field", enumValues); + atomIt++; - EXPECT_TRUE(atom == atoms.decls.end()); + EXPECT_EQ(atoms.decls.end(), atomIt); } /** @@ -235,10 +236,10 @@ TEST(CollationTest, RecogniseWhitelistedAtom) { Atoms atoms; collate_atoms(ListedAtoms::descriptor(), DEFAULT_MODULE_NAME, &atoms); for (const auto& atomDecl : atoms.decls) { - if (atomDecl.code == 1) { - EXPECT_TRUE(atomDecl.whitelisted); + if (atomDecl->code == 1) { + EXPECT_TRUE(atomDecl->whitelisted); } else { - EXPECT_FALSE(atomDecl.whitelisted); + EXPECT_FALSE(atomDecl->whitelisted); } } } @@ -258,33 +259,66 @@ TEST(CollationTest, RecognizeModuleAtom) { EXPECT_EQ(atoms.signatureInfoMap.size(), 2u); EXPECT_MAP_CONTAINS_SIGNATURE(atoms.signatureInfoMap, JAVA_TYPE_INT); EXPECT_MAP_CONTAINS_SIGNATURE(atoms.signatureInfoMap, JAVA_TYPE_STRING); - for (auto signatureInfoMapIt : atoms.signatureInfoMap) { - vector<java_type_t> signature = signatureInfoMapIt.first; - const FieldNumberToAnnotations& fieldNumberToAnnotations = signatureInfoMapIt.second; - if (signature[0] == JAVA_TYPE_STRING) { - EXPECT_EQ(0u, fieldNumberToAnnotations.size()); - } else if (signature[0] == JAVA_TYPE_INT) { - EXPECT_EQ(1u, fieldNumberToAnnotations.size()); - EXPECT_NE(fieldNumberToAnnotations.end(), fieldNumberToAnnotations.find(1)); - const set<shared_ptr<Annotation>>& annotations = fieldNumberToAnnotations.at(1); - EXPECT_EQ(2u, annotations.size()); - for (const shared_ptr<Annotation> annotation : annotations) { - EXPECT_TRUE(annotation->annotationId == ANNOTATION_ID_IS_UID || - annotation->annotationId == ANNOTATION_ID_STATE_OPTION); - if (ANNOTATION_ID_IS_UID == annotation->annotationId) { - EXPECT_EQ(1, annotation->atomId); - EXPECT_EQ(ANNOTATION_TYPE_BOOL, annotation->type); - EXPECT_TRUE(annotation->value.boolValue); - } - - if (ANNOTATION_ID_STATE_OPTION == annotation->annotationId) { - EXPECT_EQ(3, annotation->atomId); - EXPECT_EQ(ANNOTATION_TYPE_INT, annotation->type); - EXPECT_EQ(os::statsd::StateField::EXCLUSIVE_STATE, annotation->value.intValue); - } - } - } - } + + SignatureInfoMap::const_iterator signatureInfoMapIt; + const vector<java_type_t>* signature; + const FieldNumberToAtomDeclSet* fieldNumberToAtomDeclSet; + FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt; + const AtomDeclSet* atomDeclSet; + AtomDeclSet::const_iterator atomDeclSetIt; + AtomDecl* atomDecl; + FieldNumberToAnnotations* fieldNumberToAnnotations; + FieldNumberToAnnotations::const_iterator fieldNumberToAnnotationsIt; + const AnnotationSet* annotationSet; + AnnotationSet::const_iterator annotationSetIt; + Annotation* annotation; + + signatureInfoMapIt = atoms.signatureInfoMap.begin(); + signature = &(signatureInfoMapIt->first); + fieldNumberToAtomDeclSet = &signatureInfoMapIt->second; + EXPECT_EQ(1ul, signature->size()); + EXPECT_EQ(JAVA_TYPE_INT, signature->at(0)); + EXPECT_EQ(1ul, fieldNumberToAtomDeclSet->size()); + fieldNumberToAtomDeclSetIt = fieldNumberToAtomDeclSet->begin(); + EXPECT_EQ(1, fieldNumberToAtomDeclSetIt->first); + atomDeclSet = &fieldNumberToAtomDeclSetIt->second; + EXPECT_EQ(2ul, atomDeclSet->size()); + atomDeclSetIt = atomDeclSet->begin(); + atomDecl = atomDeclSetIt->get(); + EXPECT_EQ(1, atomDecl->code); + fieldNumberToAnnotations = &atomDecl->fieldNumberToAnnotations; + fieldNumberToAnnotationsIt = fieldNumberToAnnotations->find(1); + EXPECT_NE(fieldNumberToAnnotations->end(), fieldNumberToAnnotationsIt); + annotationSet = &fieldNumberToAnnotationsIt->second; + EXPECT_EQ(1ul, annotationSet->size()); + annotationSetIt = annotationSet->begin(); + annotation = annotationSetIt->get(); + EXPECT_EQ(ANNOTATION_ID_IS_UID, annotation->annotationId); + EXPECT_EQ(1, annotation->atomId); + EXPECT_EQ(ANNOTATION_TYPE_BOOL, annotation->type); + EXPECT_TRUE(annotation->value.boolValue); + + atomDeclSetIt++; + atomDecl = atomDeclSetIt->get(); + EXPECT_EQ(3, atomDecl->code); + fieldNumberToAnnotations = &atomDecl->fieldNumberToAnnotations; + fieldNumberToAnnotationsIt = fieldNumberToAnnotations->find(1); + EXPECT_NE(fieldNumberToAnnotations->end(), fieldNumberToAnnotationsIt); + annotationSet = &fieldNumberToAnnotationsIt->second; + EXPECT_EQ(1ul, annotationSet->size()); + annotationSetIt = annotationSet->begin(); + annotation = annotationSetIt->get(); + EXPECT_EQ(ANNOTATION_ID_STATE_OPTION, annotation->annotationId); + EXPECT_EQ(3, annotation->atomId); + EXPECT_EQ(ANNOTATION_TYPE_INT, annotation->type); + EXPECT_EQ(os::statsd::StateField::EXCLUSIVE_STATE, annotation->value.intValue); + + signatureInfoMapIt++; + signature = &signatureInfoMapIt->first; + fieldNumberToAtomDeclSet = &signatureInfoMapIt->second; + EXPECT_EQ(1ul, signature->size()); + EXPECT_EQ(JAVA_TYPE_STRING, signature->at(0)); + EXPECT_EQ(0ul, fieldNumberToAtomDeclSet->size()); } TEST(CollationTest, RecognizeModule1Atom) { @@ -295,31 +329,59 @@ TEST(CollationTest, RecognizeModule1Atom) { EXPECT_EQ(atoms.decls.size(), 2ul); EXPECT_EQ(atoms.signatureInfoMap.size(), 1u); EXPECT_MAP_CONTAINS_SIGNATURE(atoms.signatureInfoMap, JAVA_TYPE_INT); - for (auto signatureInfoMapIt : atoms.signatureInfoMap) { - vector<java_type_t> signature = signatureInfoMapIt.first; - const FieldNumberToAnnotations& fieldNumberToAnnotations = signatureInfoMapIt.second; - EXPECT_EQ(JAVA_TYPE_INT, signature[0]); - EXPECT_EQ(1u, fieldNumberToAnnotations.size()); - int fieldNumber = 1; - EXPECT_NE(fieldNumberToAnnotations.end(), fieldNumberToAnnotations.find(fieldNumber)); - const set<shared_ptr<Annotation>>& annotations = fieldNumberToAnnotations.at(fieldNumber); - EXPECT_EQ(2u, annotations.size()); - for (const shared_ptr<Annotation> annotation : annotations) { - EXPECT_TRUE(annotation->annotationId == ANNOTATION_ID_IS_UID || - annotation->annotationId == ANNOTATION_ID_STATE_OPTION); - if (ANNOTATION_ID_IS_UID == annotation->annotationId) { - EXPECT_EQ(1, annotation->atomId); - EXPECT_EQ(ANNOTATION_TYPE_BOOL, annotation->type); - EXPECT_TRUE(annotation->value.boolValue); - } - - if (ANNOTATION_ID_STATE_OPTION == annotation->annotationId) { - EXPECT_EQ(3, annotation->atomId); - EXPECT_EQ(ANNOTATION_TYPE_INT, annotation->type); - EXPECT_EQ(os::statsd::StateField::EXCLUSIVE_STATE, annotation->value.intValue); - } - } - } + + SignatureInfoMap::const_iterator signatureInfoMapIt; + const vector<java_type_t>* signature; + const FieldNumberToAtomDeclSet* fieldNumberToAtomDeclSet; + FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt; + const AtomDeclSet* atomDeclSet; + AtomDeclSet::const_iterator atomDeclSetIt; + AtomDecl* atomDecl; + FieldNumberToAnnotations* fieldNumberToAnnotations; + FieldNumberToAnnotations::const_iterator fieldNumberToAnnotationsIt; + const AnnotationSet* annotationSet; + AnnotationSet::const_iterator annotationSetIt; + Annotation* annotation; + + signatureInfoMapIt = atoms.signatureInfoMap.begin(); + signature = &(signatureInfoMapIt->first); + fieldNumberToAtomDeclSet = &signatureInfoMapIt->second; + EXPECT_EQ(1ul, signature->size()); + EXPECT_EQ(JAVA_TYPE_INT, signature->at(0)); + EXPECT_EQ(1ul, fieldNumberToAtomDeclSet->size()); + fieldNumberToAtomDeclSetIt = fieldNumberToAtomDeclSet->begin(); + EXPECT_EQ(1, fieldNumberToAtomDeclSetIt->first); + atomDeclSet = &fieldNumberToAtomDeclSetIt->second; + EXPECT_EQ(2ul, atomDeclSet->size()); + atomDeclSetIt = atomDeclSet->begin(); + atomDecl = atomDeclSetIt->get(); + EXPECT_EQ(1, atomDecl->code); + fieldNumberToAnnotations = &atomDecl->fieldNumberToAnnotations; + fieldNumberToAnnotationsIt = fieldNumberToAnnotations->find(1); + EXPECT_NE(fieldNumberToAnnotations->end(), fieldNumberToAnnotationsIt); + annotationSet = &fieldNumberToAnnotationsIt->second; + EXPECT_EQ(1ul, annotationSet->size()); + annotationSetIt = annotationSet->begin(); + annotation = annotationSetIt->get(); + EXPECT_EQ(ANNOTATION_ID_IS_UID, annotation->annotationId); + EXPECT_EQ(1, annotation->atomId); + EXPECT_EQ(ANNOTATION_TYPE_BOOL, annotation->type); + EXPECT_TRUE(annotation->value.boolValue); + + atomDeclSetIt++; + atomDecl = atomDeclSetIt->get(); + EXPECT_EQ(3, atomDecl->code); + fieldNumberToAnnotations = &atomDecl->fieldNumberToAnnotations; + fieldNumberToAnnotationsIt = fieldNumberToAnnotations->find(1); + EXPECT_NE(fieldNumberToAnnotations->end(), fieldNumberToAnnotationsIt); + annotationSet = &fieldNumberToAnnotationsIt->second; + EXPECT_EQ(1ul, annotationSet->size()); + annotationSetIt = annotationSet->begin(); + annotation = annotationSetIt->get(); + EXPECT_EQ(ANNOTATION_ID_STATE_OPTION, annotation->annotationId); + EXPECT_EQ(3, annotation->atomId); + EXPECT_EQ(ANNOTATION_TYPE_INT, annotation->type); + EXPECT_EQ(os::statsd::StateField::EXCLUSIVE_STATE, annotation->value.intValue); } } // namespace stats_log_api_gen diff --git a/tools/stats_log_api_gen/utils.cpp b/tools/stats_log_api_gen/utils.cpp index 0262488e8501..abb89133e58e 100644 --- a/tools/stats_log_api_gen/utils.cpp +++ b/tools/stats_log_api_gen/utils.cpp @@ -22,10 +22,10 @@ namespace android { namespace stats_log_api_gen { static void build_non_chained_decl_map(const Atoms& atoms, - std::map<int, set<AtomDecl>::const_iterator>* decl_map) { - for (set<AtomDecl>::const_iterator atom = atoms.non_chained_decls.begin(); - atom != atoms.non_chained_decls.end(); atom++) { - decl_map->insert(std::make_pair(atom->code, atom)); + std::map<int, AtomDeclSet::const_iterator>* decl_map) { + for (AtomDeclSet::const_iterator atomIt = atoms.non_chained_decls.begin(); + atomIt != atoms.non_chained_decls.end(); atomIt++) { + decl_map->insert(std::make_pair((*atomIt)->code, atomIt)); } } @@ -117,11 +117,11 @@ void write_closing_namespace(FILE* out, const string& cppNamespaces) { } static void write_cpp_usage(FILE* out, const string& method_name, const string& atom_code_name, - const AtomDecl& atom, const AtomDecl& attributionDecl) { + const shared_ptr<AtomDecl> atom, const AtomDecl& attributionDecl) { fprintf(out, " * Usage: %s(StatsLog.%s", method_name.c_str(), atom_code_name.c_str()); - for (vector<AtomField>::const_iterator field = atom.fields.begin(); field != atom.fields.end(); - field++) { + for (vector<AtomField>::const_iterator field = atom->fields.begin(); + field != atom->fields.end(); field++) { if (field->javaType == JAVA_TYPE_ATTRIBUTION_CHAIN) { for (auto chainField : attributionDecl.fields) { if (chainField.javaType == JAVA_TYPE_STRING) { @@ -154,27 +154,27 @@ void write_native_atom_constants(FILE* out, const Atoms& atoms, const AtomDecl& fprintf(out, " */\n"); fprintf(out, "enum {\n"); - std::map<int, set<AtomDecl>::const_iterator> atom_code_to_non_chained_decl_map; + std::map<int, AtomDeclSet::const_iterator> atom_code_to_non_chained_decl_map; build_non_chained_decl_map(atoms, &atom_code_to_non_chained_decl_map); size_t i = 0; // Print atom constants - for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); atom != atoms.decls.end(); - atom++) { - string constant = make_constant_name(atom->name); + for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); + atomIt++) { + string constant = make_constant_name((*atomIt)->name); fprintf(out, "\n"); fprintf(out, " /**\n"); - fprintf(out, " * %s %s\n", atom->message.c_str(), atom->name.c_str()); - write_cpp_usage(out, "stats_write", constant, *atom, attributionDecl); + fprintf(out, " * %s %s\n", (*atomIt)->message.c_str(), (*atomIt)->name.c_str()); + write_cpp_usage(out, "stats_write", constant, *atomIt, attributionDecl); - auto non_chained_decl = atom_code_to_non_chained_decl_map.find(atom->code); + auto non_chained_decl = atom_code_to_non_chained_decl_map.find((*atomIt)->code); if (non_chained_decl != atom_code_to_non_chained_decl_map.end()) { write_cpp_usage(out, "stats_write_non_chained", constant, *non_chained_decl->second, attributionDecl); } fprintf(out, " */\n"); char const* const comma = (i == atoms.decls.size() - 1) ? "" : ","; - fprintf(out, " %s = %d%s\n", constant.c_str(), atom->code, comma); + fprintf(out, " %s = %d%s\n", constant.c_str(), (*atomIt)->code, comma); i++; } fprintf(out, "\n"); @@ -245,40 +245,40 @@ void write_native_method_call(FILE* out, const string& methodName, void write_java_atom_codes(FILE* out, const Atoms& atoms) { fprintf(out, " // Constants for atom codes.\n"); - std::map<int, set<AtomDecl>::const_iterator> atom_code_to_non_chained_decl_map; + std::map<int, AtomDeclSet::const_iterator> atom_code_to_non_chained_decl_map; build_non_chained_decl_map(atoms, &atom_code_to_non_chained_decl_map); // Print constants for the atom codes. - for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); atom != atoms.decls.end(); - atom++) { - string constant = make_constant_name(atom->name); + for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); + atomIt++) { + string constant = make_constant_name((*atomIt)->name); fprintf(out, "\n"); fprintf(out, " /**\n"); - fprintf(out, " * %s %s<br>\n", atom->message.c_str(), atom->name.c_str()); - write_java_usage(out, "write", constant, *atom); - auto non_chained_decl = atom_code_to_non_chained_decl_map.find(atom->code); + fprintf(out, " * %s %s<br>\n", (*atomIt)->message.c_str(), (*atomIt)->name.c_str()); + write_java_usage(out, "write", constant, **atomIt); + auto non_chained_decl = atom_code_to_non_chained_decl_map.find((*atomIt)->code); if (non_chained_decl != atom_code_to_non_chained_decl_map.end()) { - write_java_usage(out, "write_non_chained", constant, *non_chained_decl->second); + write_java_usage(out, "write_non_chained", constant, **(non_chained_decl->second)); } fprintf(out, " */\n"); - fprintf(out, " public static final int %s = %d;\n", constant.c_str(), atom->code); + fprintf(out, " public static final int %s = %d;\n", constant.c_str(), (*atomIt)->code); } fprintf(out, "\n"); } void write_java_enum_values(FILE* out, const Atoms& atoms) { fprintf(out, " // Constants for enum values.\n\n"); - for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); atom != atoms.decls.end(); - atom++) { - for (vector<AtomField>::const_iterator field = atom->fields.begin(); - field != atom->fields.end(); field++) { + for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); + atomIt++) { + for (vector<AtomField>::const_iterator field = (*atomIt)->fields.begin(); + field != (*atomIt)->fields.end(); field++) { if (field->javaType == JAVA_TYPE_ENUM) { - fprintf(out, " // Values for %s.%s\n", atom->message.c_str(), + fprintf(out, " // Values for %s.%s\n", (*atomIt)->message.c_str(), field->name.c_str()); for (map<int, string>::const_iterator value = field->enumValues.begin(); value != field->enumValues.end(); value++) { fprintf(out, " public static final int %s__%s__%s = %d;\n", - make_constant_name(atom->message).c_str(), + make_constant_name((*atomIt)->message).c_str(), make_constant_name(field->name).c_str(), make_constant_name(value->second).c_str(), value->first); } @@ -307,8 +307,7 @@ void write_java_usage(FILE* out, const string& method_name, const string& atom_c fprintf(out, ");<br>\n"); } -int write_java_non_chained_methods( - FILE* out, const map<vector<java_type_t>, FieldNumberToAnnotations>& signatureInfoMap) { +int write_java_non_chained_methods(FILE* out, const SignatureInfoMap& signatureInfoMap) { for (auto signatureInfoMapIt = signatureInfoMap.begin(); signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) { // Print method signature. @@ -351,8 +350,7 @@ int write_java_non_chained_methods( return 0; } -int write_java_work_source_methods( - FILE* out, const map<vector<java_type_t>, FieldNumberToAnnotations>& signatureInfoMap) { +int write_java_work_source_methods(FILE* out, const SignatureInfoMap& signatureInfoMap) { fprintf(out, " // WorkSource methods.\n"); for (auto signatureInfoMapIt = signatureInfoMap.begin(); signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) { diff --git a/tools/stats_log_api_gen/utils.h b/tools/stats_log_api_gen/utils.h index 468f3233d77f..57b6f6254562 100644 --- a/tools/stats_log_api_gen/utils.h +++ b/tools/stats_log_api_gen/utils.h @@ -67,11 +67,9 @@ void write_java_enum_values(FILE* out, const Atoms& atoms); void write_java_usage(FILE* out, const string& method_name, const string& atom_code_name, const AtomDecl& atom); -int write_java_non_chained_methods( - FILE* out, const map<vector<java_type_t>, FieldNumberToAnnotations>& signatureInfoMap); +int write_java_non_chained_methods(FILE* out, const SignatureInfoMap& signatureInfoMap); -int write_java_work_source_methods( - FILE* out, const map<vector<java_type_t>, FieldNumberToAnnotations>& signatureInfoMap); +int write_java_work_source_methods(FILE* out, const SignatureInfoMap& signatureInfoMap); } // namespace stats_log_api_gen } // namespace android diff --git a/wifi/Android.bp b/wifi/Android.bp index d0f1a26f7dbf..2029479fb09f 100644 --- a/wifi/Android.bp +++ b/wifi/Android.bp @@ -81,7 +81,6 @@ java_library { libs: [ "framework-annotations-lib", "unsupportedappusage", // for android.compat.annotation.UnsupportedAppUsage - "unsupportedappusage-annotation", // for dalvik.annotation.compat.UnsupportedAppUsage "framework-telephony-stubs", ], srcs: [ @@ -131,7 +130,10 @@ stubs_defaults { ":framework-wifi-updatable-sources", ":framework-wifi-util-lib-aidls", ], - libs: [ "framework-annotations-lib" ], + libs: [ + "framework-annotations-lib", + "framework-wifi-util-lib", + ], sdk_version: "module_current", } @@ -171,8 +173,6 @@ java_library { name: "framework-wifi-stubs-publicapi", srcs: [":framework-wifi-stubs-srcs-publicapi"], defaults: ["framework-module-stubs-lib-defaults-publicapi"], - // TODO(b/151134996): remove this - sdk_version: "current", } java_library { diff --git a/wifi/api/system-current.txt b/wifi/api/system-current.txt index e39e148ca2b4..07793c1eb02a 100644 --- a/wifi/api/system-current.txt +++ b/wifi/api/system-current.txt @@ -23,16 +23,16 @@ package android.net.wifi { method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public android.net.wifi.RttManager.RttCapabilities getRttCapabilities(); method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startRanging(android.net.wifi.RttManager.RttParams[], android.net.wifi.RttManager.RttListener); method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void stopRanging(android.net.wifi.RttManager.RttListener); - field @Deprecated public static final int BASE; - field @Deprecated public static final int CMD_OP_ABORTED; - field @Deprecated public static final int CMD_OP_DISABLE_RESPONDER; - field @Deprecated public static final int CMD_OP_ENABLE_RESPONDER; - field @Deprecated public static final int CMD_OP_ENALBE_RESPONDER_FAILED; - field @Deprecated public static final int CMD_OP_ENALBE_RESPONDER_SUCCEEDED; - field @Deprecated public static final int CMD_OP_FAILED; - field @Deprecated public static final int CMD_OP_START_RANGING; - field @Deprecated public static final int CMD_OP_STOP_RANGING; - field @Deprecated public static final int CMD_OP_SUCCEEDED; + field @Deprecated public static final int BASE = 160256; // 0x27200 + field @Deprecated public static final int CMD_OP_ABORTED = 160260; // 0x27204 + field @Deprecated public static final int CMD_OP_DISABLE_RESPONDER = 160262; // 0x27206 + field @Deprecated public static final int CMD_OP_ENABLE_RESPONDER = 160261; // 0x27205 + field @Deprecated public static final int CMD_OP_ENALBE_RESPONDER_FAILED = 160264; // 0x27208 + field @Deprecated public static final int CMD_OP_ENALBE_RESPONDER_SUCCEEDED = 160263; // 0x27207 + field @Deprecated public static final int CMD_OP_FAILED = 160258; // 0x27202 + field @Deprecated public static final int CMD_OP_START_RANGING = 160256; // 0x27200 + field @Deprecated public static final int CMD_OP_STOP_RANGING = 160257; // 0x27201 + field @Deprecated public static final int CMD_OP_SUCCEEDED = 160259; // 0x27203 field @Deprecated public static final String DESCRIPTION_KEY = "android.net.wifi.RttManager.Description"; field @Deprecated public static final int PREAMBLE_HT = 2; // 0x2 field @Deprecated public static final int PREAMBLE_LEGACY = 1; // 0x1 diff --git a/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java b/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java index 6632c162fcf9..0d13805a08d8 100644 --- a/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java +++ b/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java @@ -74,7 +74,7 @@ public final class WifiNetworkAgentSpecifier extends NetworkSpecifier implements } @Override - public boolean satisfiedBy(@Nullable NetworkSpecifier other) { + public boolean canBeSatisfiedBy(@Nullable NetworkSpecifier other) { if (this == other) { return true; } diff --git a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java index 3d946c9f887d..ed54ad13e5e1 100644 --- a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java +++ b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java @@ -552,7 +552,7 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc /** @hide */ @Override - public boolean satisfiedBy(NetworkSpecifier other) { + public boolean canBeSatisfiedBy(NetworkSpecifier other) { if (this == other) { return true; } diff --git a/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java b/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java index a4b3e86398a8..9ae3bd0c93c0 100644 --- a/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java +++ b/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java @@ -120,7 +120,7 @@ public class WifiAwareAgentNetworkSpecifier extends NetworkSpecifier implements } @Override - public boolean satisfiedBy(NetworkSpecifier other) { + public boolean canBeSatisfiedBy(NetworkSpecifier other) { if (!(other instanceof WifiAwareAgentNetworkSpecifier)) { return false; } diff --git a/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java b/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java index 65ac1ab26064..3547750896b3 100644 --- a/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java +++ b/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java @@ -212,7 +212,7 @@ public final class WifiAwareNetworkSpecifier extends NetworkSpecifier implements /** @hide */ @Override - public boolean satisfiedBy(NetworkSpecifier other) { + public boolean canBeSatisfiedBy(NetworkSpecifier other) { // MatchAllNetworkSpecifier is taken care in NetworkCapabilities#satisfiedBySpecifier. if (other instanceof WifiAwareAgentNetworkSpecifier) { return ((WifiAwareAgentNetworkSpecifier) other).satisfiesAwareNetworkSpecifier(this); diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java index 0233ee2e2785..d479aacdd296 100644 --- a/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java +++ b/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java @@ -155,8 +155,8 @@ public class WifiNetworkAgentSpecifierTest { public void testWifiNetworkAgentSpecifierSatisifiesNullAndAllMatch() { WifiNetworkAgentSpecifier specifier = createDefaultNetworkAgentSpecifier(); - assertTrue(specifier.satisfiedBy(null)); - assertTrue(specifier.satisfiedBy(new MatchAllNetworkSpecifier())); + assertTrue(specifier.canBeSatisfiedBy(null)); + assertTrue(specifier.canBeSatisfiedBy(new MatchAllNetworkSpecifier())); } /** @@ -170,7 +170,7 @@ public class WifiNetworkAgentSpecifierTest { WifiNetworkAgentSpecifier specifier1 = createDefaultNetworkAgentSpecifier(); WifiNetworkAgentSpecifier specifier2 = createDefaultNetworkAgentSpecifier(); - assertTrue(specifier2.satisfiedBy(specifier1)); + assertTrue(specifier2.canBeSatisfiedBy(specifier1)); } /** @@ -196,8 +196,8 @@ public class WifiNetworkAgentSpecifierTest { bssidPattern, wificonfigurationNetworkSpecifier); - assertTrue(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier)); - assertTrue(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier)); + assertTrue(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier)); + assertTrue(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier)); } /** @@ -224,8 +224,8 @@ public class WifiNetworkAgentSpecifierTest { bssidPattern, wificonfigurationNetworkSpecifier); - assertTrue(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier)); - assertTrue(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier)); + assertTrue(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier)); + assertTrue(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier)); } /** @@ -252,8 +252,8 @@ public class WifiNetworkAgentSpecifierTest { bssidPattern, wificonfigurationNetworkSpecifier); - assertTrue(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier)); - assertTrue(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier)); + assertTrue(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier)); + assertTrue(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier)); } /** @@ -283,8 +283,8 @@ public class WifiNetworkAgentSpecifierTest { bssidPattern, wificonfigurationNetworkSpecifier); - assertFalse(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier)); - assertFalse(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier)); + assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier)); + assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier)); } /** @@ -315,8 +315,8 @@ public class WifiNetworkAgentSpecifierTest { bssidPattern, wificonfigurationNetworkSpecifier); - assertFalse(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier)); - assertFalse(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier)); + assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier)); + assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier)); } /** @@ -347,8 +347,8 @@ public class WifiNetworkAgentSpecifierTest { bssidPattern, wificonfigurationNetworkSpecifier); - assertFalse(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier)); - assertFalse(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier)); + assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier)); + assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier)); } /** @@ -374,8 +374,8 @@ public class WifiNetworkAgentSpecifierTest { bssidPattern, wificonfigurationNetworkSpecifier); - assertFalse(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier)); - assertFalse(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier)); + assertFalse(wifiNetworkSpecifier.canBeSatisfiedBy(wifiNetworkAgentSpecifier)); + assertFalse(wifiNetworkAgentSpecifier.canBeSatisfiedBy(wifiNetworkSpecifier)); } diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java index 3b6723613c50..53a7d032da42 100644 --- a/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java +++ b/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java @@ -396,8 +396,8 @@ public class WifiNetworkSpecifierTest { MacAddress.fromString(TEST_BSSID_OUI_MASK)), wifiConfiguration); - assertTrue(specifier.satisfiedBy(null)); - assertTrue(specifier.satisfiedBy(new MatchAllNetworkSpecifier())); + assertTrue(specifier.canBeSatisfiedBy(null)); + assertTrue(specifier.canBeSatisfiedBy(new MatchAllNetworkSpecifier())); } /** @@ -424,7 +424,7 @@ public class WifiNetworkSpecifierTest { MacAddress.fromString(TEST_BSSID_OUI_MASK)), wifiConfiguration); - assertTrue(specifier2.satisfiedBy(specifier1)); + assertTrue(specifier2.canBeSatisfiedBy(specifier1)); } /** @@ -453,7 +453,7 @@ public class WifiNetworkSpecifierTest { MacAddress.fromString(TEST_BSSID_OUI_MASK)), wifiConfiguration2); - assertFalse(specifier2.satisfiedBy(specifier1)); + assertFalse(specifier2.canBeSatisfiedBy(specifier1)); } /** @@ -480,7 +480,7 @@ public class WifiNetworkSpecifierTest { MacAddress.fromString(TEST_BSSID_OUI_MASK)), wifiConfiguration); - assertFalse(specifier2.satisfiedBy(specifier1)); + assertFalse(specifier2.canBeSatisfiedBy(specifier1)); } /** @@ -507,6 +507,6 @@ public class WifiNetworkSpecifierTest { WifiManager.ALL_ZEROS_MAC_ADDRESS), wifiConfiguration); - assertFalse(specifier2.satisfiedBy(specifier1)); + assertFalse(specifier2.canBeSatisfiedBy(specifier1)); } } diff --git a/wifi/tests/src/android/net/wifi/aware/WifiAwareAgentNetworkSpecifierTest.java b/wifi/tests/src/android/net/wifi/aware/WifiAwareAgentNetworkSpecifierTest.java index 81b02fa5f801..f2961db4eb14 100644 --- a/wifi/tests/src/android/net/wifi/aware/WifiAwareAgentNetworkSpecifierTest.java +++ b/wifi/tests/src/android/net/wifi/aware/WifiAwareAgentNetworkSpecifierTest.java @@ -79,7 +79,7 @@ public class WifiAwareAgentNetworkSpecifierTest { public void testEmptyDoesntMatchAnything() { WifiAwareAgentNetworkSpecifier dut = new WifiAwareAgentNetworkSpecifier(); WifiAwareNetworkSpecifier ns = getDummyNetworkSpecifier(6); - collector.checkThat("No match expected", ns.satisfiedBy(dut), equalTo(false)); + collector.checkThat("No match expected", ns.canBeSatisfiedBy(dut), equalTo(false)); } /** @@ -91,8 +91,8 @@ public class WifiAwareAgentNetworkSpecifierTest { WifiAwareNetworkSpecifier nsThis = getDummyNetworkSpecifier(6); WifiAwareAgentNetworkSpecifier dut = new WifiAwareAgentNetworkSpecifier(nsThis); WifiAwareNetworkSpecifier nsOther = getDummyNetworkSpecifier(8); - collector.checkThat("Match expected", nsThis.satisfiedBy(dut), equalTo(true)); - collector.checkThat("No match expected", nsOther.satisfiedBy(dut), equalTo(false)); + collector.checkThat("Match expected", nsThis.canBeSatisfiedBy(dut), equalTo(true)); + collector.checkThat("No match expected", nsOther.canBeSatisfiedBy(dut), equalTo(false)); } /** @@ -113,9 +113,9 @@ public class WifiAwareAgentNetworkSpecifierTest { WifiAwareNetworkSpecifier nsOther = getDummyNetworkSpecifier(10000); for (WifiAwareNetworkSpecifier nsThis: nsSet) { - collector.checkThat("Match expected", nsThis.satisfiedBy(dut), equalTo(true)); + collector.checkThat("Match expected", nsThis.canBeSatisfiedBy(dut), equalTo(true)); } - collector.checkThat("No match expected", nsOther.satisfiedBy(dut), equalTo(false)); + collector.checkThat("No match expected", nsOther.canBeSatisfiedBy(dut), equalTo(false)); } /** @@ -137,7 +137,7 @@ public class WifiAwareAgentNetworkSpecifierTest { WifiAwareAgentNetworkSpecifier newNs = new WifiAwareAgentNetworkSpecifier( nsSet.toArray(new WifiAwareNetworkSpecifier[nsSet.size()])); - collector.checkThat("Match expected", oldNs.satisfiedBy(newNs), equalTo(true)); + collector.checkThat("Match expected", oldNs.canBeSatisfiedBy(newNs), equalTo(true)); } /** @@ -159,7 +159,7 @@ public class WifiAwareAgentNetworkSpecifierTest { WifiAwareAgentNetworkSpecifier oldNs = new WifiAwareAgentNetworkSpecifier( nsSet.toArray(new WifiAwareNetworkSpecifier[nsSet.size()])); - collector.checkThat("Match unexpected", oldNs.satisfiedBy(newNs), equalTo(false)); + collector.checkThat("Match unexpected", oldNs.canBeSatisfiedBy(newNs), equalTo(false)); } // utilities |